Zabbix獲取Prometheus上的監控數據
1 zabbix安裝
官方文檔參考
1.1 zabbix軟件安裝
[root@zabbix zabbix]# rpm -Uvh //repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm ## 安裝zabbix倉庫
[root@zabbix zabbix]# yum clean all
[root@zabbix zabbix]# yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent ##安裝、前端、代理
1.2 數據庫安裝配置
1.2.1 數據庫安裝
[root@zabbix zabbix]# yum install
[root@zabbix zabbix]# systemctl start mariadb
[root@zabbix zabbix]# systemctl enable mariadb
[root@zabbix zabbix]# mysql_secure_installation ##設置數據庫并進行安全配置
1.2.2 創建zabbix用戶并授權
[root@zabbix zabbix]# mysql -uroot -p
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user zabbix@localhost identified by 'password';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> quit;
1.2.3 導入數據庫
[root@zabbix zabbix]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
1.3 中修改zabbix用戶數據庫密碼
[root@zabbix zabbix]# cat /etc/zabbix/zabbix_server.conf |grep -v "^#"|grep DBPassword
1.4 修改前端顯示時區
[root@zabbix zabbix]# grep timezone /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
1.5 啟動zabbix相關服務
[root@zabbix zabbix]# systemctl restart zabbix-server zabbix-agent httpd
[root@zabbix zabbix]# systemctl enable zabbix-server zabbix-agent httpd
1.6 訪問zabbix
ui上輸出(chu)zabbix服(fu)務器地(di)址加/zabbix即(ji)可訪問到zabbix初始化(hua)頁面
//172.18.100.137/zabbix
2 zabbix初始化
2.1 環境檢查
查看(kan)是否(fou)有包或插件(jian)不滿足(zu)條件(jian)
2.2 數據庫配置
根據實(shi)際情況配置(zhi)zabbix使用(yong)的(de)數據庫(ku)及(ji)用(yong)戶名密碼等信息(xi)
2.3 zabbix服務配置
2.4 信息確認
2.5 配置完成
2.6 登錄zabbix
配置完成以后即可登錄zabbix,默認(ren)zabbix的(de)用(yong)戶名為Admin,密(mi)碼為zabbix
2.7 修改頁面為中文顯示
3 zabbix對接prometheus
3.1 前提條件
- zabbix版本要大于4.2版本
- 需要能訪問被管控節點的9100端口
在4.2及以上版本(ben)的zabbix中(zhong)(zhong),提供了prometheus pattern和prometheus to json兩(liang)種(zhong)監控項方式(shi)來處(chu)理prometheus的監控數(shu)據,我們可以通過(guo)http代理的方式(shi)無(wu)需安裝agent來管理prometheus中(zhong)(zhong)的主(zhu)機。
3.2 zstack中介紹
ZStack云(yun)平臺(tai)集成了(le)promehtus來獲取物理機及云(yun)主機的監(jian)控數據。其中(zhong)cpu、內存(cun)、磁盤、網絡等監(jian)控數據來源由安裝在(zai)物理機上的Prometheus客戶端node_exporter提供。node_exporter相關信(xin)息可參考
//github.com/prometheus/node_exporter
可(ke)以(yi)通過//{物(wu)理機(ji)ip}:9100/metrics來查看node_exporter獲取到(dao)的監控數據
上述(shu)輸出中高亮(liang)部分,node_cpu_guest_seconds_total為(wei)(wei)metric名,cpu、mode為(wei)(wei)label名,26和user為(wei)(wei)兩(liang)個lable的值(zhi)。55184.82為(wei)(wei)metric的實際值(zhi)。
3.3 創建一個
創建一個名為prometheus_node的主機群組(zu)
3.4 創建一個主機
創建一個(ge)主機(ji),填寫好以下信息(xi),主機(ji)無需(xu)安裝任(ren)何zabbix代理(li)
- 主機名稱:填寫好主機名稱
- 群組:選擇我們剛創建好的群組
- 接口:填寫要添加的主機的ip地址,后面的端口無需配置保持默認即可
- 檢測:選擇無agent代理程序
3.5 創建一個http代理類型的監控項
該代理的(de)作用為(wei)為(wei)后(hou)續的(de)監控項提供數據來源,進入剛創建(jian)的(de)主機頁(ye)面,點擊監控項,填(tian)寫以(yi)下信息,創建(jian)一個(ge)http代理類型的(de)監控項。
- 名稱:填寫監控項的名稱
- 類型:http代理
- 鍵值:master
- URL:填寫物理機的監控數據地址
- 主機接口:選擇我們剛剛創建的主機
- 信息類型:文本
- 更新間隔:5s
- 歷史數據保留時長:do not keep history
其余(yu)項(xiang)保持默認即可,設置完成后點擊添加。

3.6 監控
下面(mian)通(tong)過創建(jian)一個指標來獲取網卡br_bond1的傳輸包總量(liang)
3.6.1 創建一個Dependent item
首先查看相(xiang)關(guan)的指標信(xin)息。監控項相(xiang)關(guan)信(xin)息參考(kao)
//lnsyyj.github.io/2019/05/27/prometheus-node-exporter-%E7%9B%91%E6%8E%A7%E9%A1%B9/
主機下新建(jian)一個監控項
- 名稱:填寫監控項的名稱,可以以metric name和label name命名
- 類型:相關項目(Dependent item)
- 鍵值:transmit_br_bond1
- 主要項:選擇前面創建好的主要項(prometheus node exporter)
- 信息類型:根據監控項的情況進行選擇。數據包總量是一個非負整數,所以信息類型選擇數字(無正負)
其它值保持默認
給(gei)監控項配置一個進程
- 名稱:prometheus pattern
- 參數:node_network_transmit_packets_total{device="br_bond1"}。參數的形式為"metric name{label name = label value}",根據具體的監控項而定。
3.6.2 查看創建好的監控項的數據
在監測(ce)-->最新數據一欄可(ke)以看到監控項已經獲取到了(le)數據
點擊圖(tu)形可以(yi)查看該的相關監(jian)控圖(tu)形信(xin)息
3.7 同時監控多項相同的指標
單個監(jian)控項(xiang)(xiang)的配置相對(dui)簡單,但當(dang)服務器上(shang)存在多個網(wang)卡(ka)需要監(jian)控時,一個個去配置監(jian)控項(xiang)(xiang)顯然是(shi)非常(chang)麻煩的,而且當(dang)服務器上(shang)的網(wang)卡(ka)有增加(jia)或刪除(chu)時,我們需要手動的去增加(jia)和(he)刪除(chu)監(jian)控項(xiang)(xiang),非常(chang)的麻煩。這個時候就可(ke)以使用zabbix的低級自動發現(LLD)來自動發現相關的監(jian)控項(xiang)(xiang)。
3.7.1 prometheus to json介紹
zabbix的Prometheus to json預定步驟(zou)會將(jiang)獲取(qu)到(dao)的metrics數(shu)據(ju)轉換為json格(ge)式。例如有以下數(shu)據(ju)。
# HELP wmi_logical_disk_free_bytes Free space in bytes (LogicalDisk.PercentFreeSpace)
# TYPE wmi_logical_disk_free_bytes gauge
wmi_logical_disk_free_bytes{volume="C:"} 3.5180249088e+11
wmi_logical_disk_free_bytes{volume="D:"} 2.627731456e+09
wmi_logical_disk_free_bytes{volume="HarddiskVolume4"} 4.59276288e+08
獲取到的json格式類似于下
[
{
"name": "wmi_logical_disk_free_bytes",
"help": "Free space in bytes (LogicalDisk.PercentFreeSpace)",
"type": "gauge",
"labels": {
"volume": "C:"
},
"value": "3.5180249088e+11",
"line_raw": "wmi_logical_disk_free_bytes{volume=\"C:\"} 3.5180249088e+11"
},
{
"name": "wmi_logical_disk_free_bytes",
"help": "Free space in bytes (LogicalDisk.PercentFreeSpace)",
"type": "gauge",
"labels": {
"volume": "D:"
},
"value": "2.627731456e+09",
"line_raw": "wmi_logical_disk_free_bytes{volume=\"D:\"} 2.627731456e+09"
},
{
"name": "wmi_logical_disk_free_bytes",
"help": "Free space in bytes (LogicalDisk.PercentFreeSpace)",
"type": "gauge",
"labels": {
"volume": "HarddiskVolume4"
},
"value": "4.59276288e+08",
"line_raw": "wmi_logical_disk_free_bytes{volume=\"HarddiskVolume4\"} 4.59276288e+08"
}
]
3.7.2 LLD macro和JSONPath
宏
宏的格式為{#var_name}
jsonPath
macro是定義的一個變量。jsonPath的值(zhi)從哪里(li)獲取
例如有下面這段數據
{
"name": "wmi_logical_disk_free_bytes",
"help": "Free space in bytes (LogicalDisk.PercentFreeSpace)",
"type": "gauge",
"labels": {
"volume": "HarddiskVolume4",
"disk": "C"
},
"value": "4.59276288e+08",
"line_raw": "wmi_logical_disk_free_bytes{volume=\"HarddiskVolume4\"} 4.59276288e+08"
}
通(tong)過(guo)以下定義就能獲取到name、help、lables等(deng)值
3.7.3 創建LLD
在配置-->主機中選擇我們之前創(chuang)(chuang)建好的主機,點(dian)擊自動(dong)發(fa)現,創(chuang)(chuang)建自動(dong)發(fa)現規則
- 名稱:輸入LLD的名稱
- 類型:相關項目
- 鍵值:net_transmit_pack_total
- 主要項:選擇前面創建的prometheus node exporter
- 資源周期不足:0
添加進程預處理步驟
- 名稱:prometheus to json
- 參數:node_network_transmit_packets_total{device=~".*"} , 其中~". *"表示label value可以是任意值。
添加LLD宏
我(wo)們(men)添加三個宏,LLD宏分別為
- {#DEVICE}
- {#HELP}
- {#METRIC}
json路徑分別為
- $.labels['device']
- $['help']
- $['name']
設置完成后點擊添加
3.7.4 設置自動發現規則的監控項原型
選擇剛創建好的LLD自動發現規則,點擊監控項原(yuan)(yuan)型(xing),創建監控項原(yuan)(yuan)型(xing)。
- 名稱:
- 類型:相關項目
- 鍵值:Total_transmit_packets[{#DEVICE}],如果有多個宏需要將宏都寫在[]中,如[{#DEVICE},{#MODE}]
- 主要項:此前創建的prometheus node exporter
- 信息類型:數字(無正負)
其余信息保持不變
為監控項原型添加預處理步驟
一共需要添加兩個預定步驟(zou):
第一個:
- 名稱:prometheus pattern
- 參數:{#METRIC}{device="{#DEVICE}"}
第二個:
- 名稱:每秒更改
配置完成后點擊添加
3.7.5 查看通過自動發現規則創建的監控項
點(dian)擊配置(zhi)-->主機-->監控項可以發(fa)現(xian)通過我們剛(gang)剛(gang)配置(zhi)的(de)自動(dong)發(fa)現(xian)規(gui)則(ze)已(yi)經自動(dong)創建了(le)多個網卡相關的(de)監控項
3.7.6 查看監控數據
點擊監測(ce)-->最(zui)新數據(ju),可以看到各(ge)項(xiang)監控(kong)(kong)項(xiang)的監控(kong)(kong)數據(ju)