prometheus+grafana安裝部署(入門初探)


官網:https://prometheus.io/download/#mysqld_exporter

【1】基本介紹

【1.0】Prometheus 與 其他監控產品的優劣

優點:

  (1)監控數據的精細程度非常高,可以精確到1-5秒的采集精度

  (2)軟件的部署非常快,大大縮減搭建時間成本

  (3)周邊插件很豐富,比如 exporter pushgateway 大多數都步需要自己開發了

  (4)基於數學計算模型(proMQL),大量的使用函數,可以實現很復雜規則的業務邏輯監控(比如QPS曲線,彎曲,凸起,下跌,比例等等模糊)

  (5)可以嵌入很多開源工具的內部,比如nignx 、數據庫 等,進行監控,數據更准時更可信(其他監控比較難做到)

  (6)結合grafana 圖形很高大上很美觀

不足:

  (1)因為圖形菜雞經度,如果集群數據量太大,那么簡單監控有性能瓶頸。

  (2)學習成本大,還有 proMQL,中文資料極少,沒有人教 官網英文資料也是比較難入門

  (3)對磁盤資源消耗比較大,這個具體要看監控的集群數量 和 監控項的多少 以及保存時長的設置

  (4)本身的使用,需要使用者數學不能太差,有一定的數據邏輯

【1.1】概念及特點

簡介:

  Prometheus是一個最初在SoundCloud上構建的開源系統監控和警報工具包 。自2012年成立以來,許多公司和組織都采用 Prometheus,該項目擁有非常活躍的開發人員和用戶社區。

  它現在是一個獨立的開源項目,並且獨立於任何公司。為了強調這一點,並澄清 項目的治理結構,Prometheus 於2016年加入 雲本地計算基金會,作為Kubernetes之后的第二個托管項目。

特點:

  Prometheus 屬於一站式監控告警平台,依賴少,功能齊全。 Prometheus 支持對雲的或容器的監控,其他系統主要對主機監控。

   Prometheus 數據查詢語句表現力更強大,內置更強大的統計函數。 Prometheus 在數據存儲擴展性以及持久性上沒有 InfluxDB,OpenTSDB,Sensu 好。

優質特性:

(1)基於 time series 時序模型,既使用時序數據庫存儲模型。什么是時序序列呢?就是(x,y)軸,x為時間,y為值

(2)使用 K/V 的數據模型,格式簡單,速度快,易維護開發

(3)采樣數據查詢:promQL,比如可以 (增量A+增量B)/ 總量C

(4)采用 HTTP pull /push 兩種對應的數據采集方式傳輸

(5)【開源,及大量插件】

(6)【本身自帶挺調試】、【秒級數據采樣頻率,秒級采樣間隔】

 

不足:

(1)本身不支持集群化

(2)被監控集群過大后,本身可能會產生性能瓶頸

(3)中文支持不好,中文資料也少

【1.2】prometheus 基本組件

  1. Prometheus Server, 主要用於抓取數據和存儲時序數據,另外還提供查詢和 Alert Rule 配置管理。
  2. client libraries,用於對接 Prometheus Server, 可以查詢和上報數據。
  3. push gateway ,用於批量,短期的監控數據的匯總節點,主要用於業務數據匯報等。
  4. 各種匯報數據的 exporters ,例如匯報機器數據的 node_exporter, 匯報 MongoDB 信息的 MongoDB exporter 等等。
  5. 用於告警通知管理的 alertmanager 。

【1.3】基本原理

  Prometheus基本原理是通過HTTP協議周期性抓取被監控組件的狀態,這樣做的好處是任意組件只要提供HTTP接口就可以接入監控系統, 不需要任何SDK或者其他的集成過程。

  這樣做非常適合虛擬化環境比如VM或者Docker 。 Prometheus應該是為數不多的適合Docker、Mesos、Kubernetes環境的監控系統之一。

  輸出被監控組件信息的HTTP接口被叫做exporter 。

  目前互聯網公司常用的組件大部分都有exporter可以直接使用,比如Varnish、 Haproxy、Nginx、MySQL、Linux 系統信息 (包括磁盤、內存、CPU、網絡等等)

【1.4】監控的基本體系流程

  

 

 

 

 

【2】認識prometheus

【2.1】基本架構與模塊

      

 

 

 

  從這個架構圖,也可以看出 Prometheus 的主要模塊包含, Server, Exporters, Pushgateway, PromQL, Alertmanager, WebUI 等。

(1)

 

【2.2】prometheus metrics 四種數據類型

采集器存儲的四種數據類型如下:(K/V 形式)

Counter

  Counter用於累計值,例如記錄請求次數、任務完成數、錯誤發生次數。一直增加,不會減少。重啟進程后,會被重置。

例如:http_response_total{method=”GET”,endpoint=”/api/tracks”} 100,10秒后抓取http_response_total {method=”GET”,endpoint=”/api/tracks”} 100。

Gauge

Gauge常規數值,例如 溫度變化、內存使用變化。可變大,可變小。重啟進程后,會被重置。 例如: memory_usage_bytes{host=”master-01″} 100 < 抓取值、memory_usage_bytes{host=”master-01″} 30、 memory_usage_bytes{host=”master-01″} 50、memory_usage_bytes{host=”master-01″} 80 < 抓取值。

Histogram

  Histogram(直方圖)可以理解為柱狀圖的意思,常用於跟蹤事件發生的規模。

    例如:請求耗時、響應大小。它特別之處是可以對記錄的內 容進行分組,提供count和sum全部值的功能。

    例如:{小於10=5次,小於20=1次,小於30=2次},count=7次,sum=7次的求和值。

Summary

  Summary和Histogram十分相似,常用於跟蹤事件發生的規模,例如:請求耗時、響應大小。同樣提供 count 和 sum 全部值的功能。

  例如:count=7次,sum=7次的值求值。 它提供一個quantiles的功能,可以按%比划分跟蹤的結果。例如:quantile取值0.95,表示取采樣值里面的95%數據。

 

【2.3】默認端口

服務器端:

   9090端口是必須配置的,這是prometheus自帶的web界面
   9100是node_exporter的默認端口
   9104是mysqld_exporter默認端口

【3】prometheus安裝

裝在 192.168.175.129

【3.1】下載

官網:https://prometheus.io/download/#mysqld_exporter

linux:

mkdir /soft
cd /soft wget https://github.com/prometheus/prometheus/releases/download/v2.20.1/prometheus-2.20.1.linux-amd64.tar.gz

 

 

【3.2】安裝 prometheus、配置prometheus配置文件

#【1】安裝go
yum -y install go

#【2】安裝 prometheus 服務端
cd /soft
tar -zxf prometheus-2.20.1.linux-amd64.tar.gz
cd prometheus-2.20.1.linux-amd64
vim prometheus.yml

修改配置文件   vim prometheus.yml

  

從上到下,有4個大模塊,這里我們解析一下:

(1)全局模塊

# my global config
global:

scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
 

全局配置:

scrape_interval:向被監控節點發出HTTP請求的采集間隔,系統自帶的配置文件默認是15s,要是不配置的話,就默認是1分鍾。
evaluation_interval:監控數據規則的評估頻率,也就是rules(即(3中的定義))的訪問判定頻率。
          例如:我們設置一個 rule(即(3)中的定義),當內存使用量 > 70% 時,發出警報。那么 prometheus 會默認 每15秒來執行一次這個規則;

(2)監控報警模塊

# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
- 192.168.175.130:9093

很明顯,這就是配置一下報警觸發后,報警信息發送到 AlertManager 的目標服務器;

(3)報警規則設置模塊

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
- "first_rules.yml"
# - "second_rules.yml"

配置告警規則文件,比如這里我就配置了一個first_rules.yml文件在 該配置文件的同名配置文件下。比如這里我就配置了節點掛掉的報警規則(這里沒有演示 理解一下就好了,是在不行就看我該系列的下一篇文章)

(4)監控目標配置

scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090']

  - job_name: 'agent_linux'
    static_configs:
    - targets: ['192.168.175.129:9100']
      labels:
        instance: linux_db1

顧名思義,就是監控的目標對象,默認是有監控本地

這里我們額外設置監控了  

['192.168.175.129:9100']

並且我們還給它所在的 job 起了名字,針對這個對象,還起了實例名;

 

 

主要是把紅框中的加上:

   9090端口是必須配置的,這是prometheus自帶的web界面
   9100是 node_exporter 的默認端口
   9104是 mysqld_exporter 默認端口

【3.3】啟動與查看

#prometheus啟動命令添加參數 --web.enable-lifecycle ,這樣修改配置文件后就不用再重啟 prometheus 了
nohup ./prometheus --web.enable-lifecycle

如果有錯誤會顯示的,沒有錯誤我們就看看進程起來沒有,如下圖,沒有問題,OK

  

 

 

【3.4】驗證:訪問 prometheus Web界面

我們輸入IP+它的自帶web 端口 9090,URL輸入下列

  http://192.168.175.129:9090

  

【3.5】收集器信息

http://192.168.175.129:9090/metrics

   

 

 

 

【4】node_exporter 采集器

裝在 192.168.175.129

【4.1】什么是 node_exporter

舉個例子,如果你有一台服務器,你想要獲取它運行時候的參數,比如當前的CPU負載、系統負載、內存消耗、硬盤使用量、網絡IO等等。

那么你就可以在服務器上運行一個 node_exporter,它能幫你把這些參數收集好,並且暴露出一個HTTP接口以便你訪問查詢。廢話不多說我們直接試一試

【4.2】node_exporter 下載

官網:https://github.com/prometheus/node_exporter/releases

linux:

mkdir /soft
cd /soft wget https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz

 

【4.3】node_exporter 安裝啟動

sudo tar -zxf node_exporter-1.0.1.linux-amd64.tar.gz
cd node_exporter-1.0.1.linux-amd64 sudo ./node_exporter

 

啟動成功會顯示如下信息:注意后后續有沒有報錯 

   

 

【4.4】核驗

(1)curl訪問核驗

  

 有數據就沒有問題

(2)prometheus 界面核驗

  

 

 

 狀態是up就ok

【4.5】監控指標舉例

#HELP node_cpu_seconds_total Seconds the cpus spent in each mode.
#TYPE node_cpu_seconds_total counter
node_cpu_seconds_total{cpu="0",mode="idle"} 1.40181324e+06

  

這是其中一條指標,由指標名+{標簽鍵值對}+值 組成。

#HELP開頭的行用來說明下面指標 node_cpu_seconds_total 的意義:

  指標node_cpu_seconds_total用來表示CPU在每種模式下工作的秒數,而大括號里的稱之為標簽,以鍵值對的形式出現。

  可以用來細分同一個指標下的不同部分,比如這里的cpu="0"表示CPU的第0個核心,mode="idle"表示工作模式為idle,也就是沒被任何程序使用的空閑模式。

#TYPE開始的第二行表示指標的數值類型為counter類型。在Prometheus的規范中,counter類型表示只增長的類型,也就是只會增加不會減少的值,且數值只能是正整數。大數值會啟用科學計數法。

  此時可以看出指標node_cpu_seconds_total{cpu="0",mode="idle"} 1.40181324e+06表示節點的CPU0的空閑時間共計1.40181324e+06秒。數值從系統開機時算起,重啟歸零。

小結:

  此時我們可以從頁面中看到很多類似的指標以及值,如果只打算監控這一台,又或者只需要這一個值,我們可以自行編寫代碼訪問這個接口,匹配出想要的指標和值即可。

  但是如果有很多台服務器,而且想要綜合多台進行對比分析,更有甚者希望將指標繪制成圖表,或者說保留歷史數據以便查詢過去的某個時間點其服務器的運行狀態,那么這將會變得很麻煩。

  而Prometheus就是干這個事情的。



 

【5】mysqld_exporter 采集器安裝

這個我是裝在另外一台機器上 192.168.175.130

【5.1】下載

 官網:https://prometheus.io/download/#mysqld_exporter

 linux:

mkdir /soft
cd /soft wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz

【5.2】解壓、配置、啟動、核驗

tar -zxf mysqld_exporter-0.12.1.linux-amd64.tar.gz
cd mysqld_exporter-0.12.1.linux-amd64/ vim mysqld_exporter.cnf
[client]
user=root password=123456
nohup ./mysqld_exporter --config.my-cnf ./mysqld_exporter.cnf  &

 

 

 如上,就沒有問題,就成功了。

【5.3】prometheus 界面核驗

  

看到我們的狀態是up就OK

 

【6】prometheus 界面查看

  

 

 

【6.1】基本抓取值查看

上免的界面中可以看到,標題欄Graph鏈接到圖形查詢界面,在輸入框中允許輸入查詢語句,點擊execute執行,insert metric at cursor下拉列表中列舉了當前所有的存在的指標可以不用輸入而直接選擇。
往下,默認的console欄表示查詢結果以文字的形式顯示,而Graph欄表示繪制圖表。
我們試一下,在輸入框中輸入先前的指標名 node_cpu_seconds_total 單機Execute。
可以看到很多指標被列舉了出來

  

  為了更精確的查詢,我們輸入 node_cpu_seconds_total{cpu="0",mode="idle"},可以看到選項很競爭的被顯示出來了
node_cpu_seconds_total{cpu="0",instance="localhost:9100",job="node",mode="idle"}    613608.34

為了方便我直接拷貝出來了,可以看到,指標新增了很多的標簽

  比如instance就表示IP地址和端口號,是配置文件中輸入的

  點擊Graph查看圖形,下面還可以調節時間

     

【6.2】狀態查看

   

 

【7】Grafana

【7.1】下載安裝

官網:https://grafana.com/grafana/download

安裝:https://grafana.com/docs/grafana/latest/installation/rpm/

 

(1)下載安裝

cd /soft 
wget https://dl.grafana.com/oss/release/grafana-7.1.3.linux-amd64.tar.gz
tar -zxf grafana-7.1.3.linux-amd64.tar.gz cd grafana-7.1.3

(2)啟動

./bin/grafana-server web

(3)核驗

netstat -anp|grep -E "9100|9104|3000"

  

(4)相關信息

  • 默認端口:3000
  • 默認日志:var/log/grafana/grafana.log
  • 默認持久化文件:/var/lib/grafana/grafana.db
  • web默認賬戶密碼:admin/admin

 

【7.2】進入Grafana web界面

http://192.168.175.129:3000  進入圖形界面

web默認賬戶密碼:admin/admin

  

 

【7.3】配置 Grafana 添加 Prometheus 數據源

  

 

 然后點擊 add data source,點擊prometheus

  

輸入好 prometheus 的服務端地址和端口

   

然后點擊完成,查看信息是否成功

   

 

【7.4】配置Linux儀表盤

如下圖,我們可以看到似乎圖形界面中並沒有可以選擇的儀表盤

  

 

 實際上這需要我們去官網找

  https://grafana.com/grafana/dashboards

  

這邊有可以篩選

  

 

 

 如果可以聯網,就可以用 ID 來導入,如果服務器網絡不好或沒有外網就可以下載json

  

然后import,點擊load

   

 

最后,起個名字,然后選擇好數據源,點擊也沒下方的 藍色 import 按鈕

  

 

 

最終,儀表盤導入成功

  

 

 

 

 

 

 

 

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM