Zabbix獲取Prometheus上的監控數據
1 zabbix安裝
官方文檔參考
https://www.zabbix.com/download?zabbix=6.0&os_distribution=centos&os_version=7&components=proxy&db=mysql&ws=
https://www.zabbix.com/download?zabbix=4.0&os_distribution=centos&os_version=7&components=server_frontend_agent&db=mysql&ws=apache
1.1 zabbix軟件安裝
[root@zabbix zabbix]# rpm -Uvh https://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 ##安裝zabbix server、前端、代理
1.2 數據庫安裝配置
1.2.1 數據庫安裝
[root@zabbix zabbix]# yum install mariadb-server
[root@zabbix zabbix]# systemctl start mariadb
[root@zabbix zabbix]# systemctl enable mariadb
[root@zabbix zabbix]# mysql_secure_installation ##設置數據庫root密碼并進行安全配置
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上輸出zabbix服務器地址加/zabbix即可訪問到zabbix初始化頁面
http://172.18.100.137/zabbix
2 zabbix初始化
2.1 環境檢查
查看是否有包或插件不滿足條件
2.2 數據庫配置
根據實際情況配置zabbix使用的數據庫及用戶名密碼等信息
2.3 zabbix服務配置
2.4 信息確認
2.5 配置完成
2.6 登錄zabbix
配置完成以后即可登錄zabbix,默認zabbix的用戶名為Admin,密碼為zabbix
2.7 修改頁面為中文顯示
3 zabbix對接prometheus
3.1 前提條件
- zabbix版本要大于4.2版本
- zabbix服務器需要能訪問被管控節點的9100端口
在4.2及以上版本的zabbix中,提供了prometheus pattern和prometheus to json兩種監控項預處理方式來處理prometheus的監控數據,我們可以通過http代理的方式無需安裝agent來管理prometheus中的主機。
3.2 zstack中主機監控介紹
ZStack云平臺集成了promehtus來獲取物理機及云主機的監控數據。其中cpu、內存、磁盤、網絡等監控數據來源由安裝在物理機上的Prometheus客戶端node_exporter提供。node_exporter相關信息可參考
https://github.com/prometheus/node_exporter
可以通過http://{物理機ip}:9100/metrics來查看node_exporter獲取到的監控數據
上述輸出中高亮部分,node_cpu_guest_seconds_total為metric名,cpu、mode為label名,26和user為兩個lable的值。55184.82為metric的實際值。
3.3 創建一個主機群組
創建一個名為prometheus_node的主機群組
3.4 創建一個主機
創建一個主機,填寫好以下信息,主機無需安裝任何zabbix代理
- 主機名稱:填寫好主機名稱
- 群組:選擇我們剛創建好的群組
- 接口:填寫要添加的主機的ip地址,后面的端口無需配置保持默認即可
- 代理程序檢測:選擇無agent代理程序
3.5 創建一個http代理類型的監控項
該代理的作用為為后續的監控項提供數據來源,進入剛創建的主機頁面,點擊監控項,填寫以下信息,創建一個http代理類型的監控項。
- 名稱:填寫監控項的名稱
- 類型:http代理
- 鍵值:master
- URL:填寫物理機的監控數據地址
- 主機接口:選擇我們剛剛創建的主機
- 信息類型:文本
- 更新間隔:5s
- 歷史數據保留時長:do not keep history
其余項保持默認即可,設置完成后點擊添加。

3.6 監控單項指標
下面通過創建一個指標來獲取網卡br_bond1的傳輸包總量
3.6.1 創建一個Dependent item
首先查看相關的指標信息。監控項相關信息參考
https://lnsyyj.github.io/2019/05/27/prometheus-node-exporter-%E7%9B%91%E6%8E%A7%E9%A1%B9/
主機下新建一個監控項
- 名稱:填寫監控項的名稱,可以以metric name和label name命名
- 類型:相關項目(Dependent item)
- 鍵值:transmit_br_bond1
- 主要項:選擇前面創建好的主要項(prometheus node exporter)
- 信息類型:根據監控項的情況進行選擇。數據包總量是一個非負整數,所以信息類型選擇數字(無正負)
其它值保持默認
給監控項配置一個進程
- 名稱:prometheus pattern
- 參數:node_network_transmit_packets_total{device="br_bond1"}。參數的形式為"metric name{label name = label value}",根據具體的監控項而定。
3.6.2 查看創建好的監控項的數據
在監測-->最新數據一欄可以看到監控項已經獲取到了數據
點擊圖形可以查看該監控項的相關監控圖形信息
3.7 同時監控多項相同的指標
單個監控項的配置相對簡單,但當服務器上存在多個網卡需要監控時,一個個去配置監控項顯然是非常麻煩的,而且當服務器上的網卡有增加或刪除時,我們需要手動的去增加和刪除監控項,非常的麻煩。這個時候就可以使用zabbix的低級自動發現(LLD)來自動發現相關的監控項。
3.7.1 prometheus to json介紹
https://www.zabbix.com/documentation/current/en/manual/discovery/low_level_discovery/examples/prometheus
zabbix的Prometheus to json預定步驟會將獲取到的metrics數據轉換為json格式。例如有以下metrics數據。
# 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
宏
https://www.zabbix.com/documentation/4.4/zh/manual/config/macros
https://www.zabbix.com/documentation/3.4/zh/manual/config/macros/usermacros
宏的格式為{#var_name}
jsonPath
https://www.zabbix.com/documentation/4.0/zh/manual/appendix/items/jsonpath?hl=JSONPath
macro是定義的一個變量。jsonPath指定變量的值從哪里獲取
例如有下面這段數據
{
"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"
}
通過以下定義就能獲取到name、help、lables等值
3.7.3 創建LLD
在配置-->主機中選擇我們之前創建好的主機,點擊自動發現,創建自動發現規則
- 名稱:輸入LLD的名稱
- 類型:相關項目
- 鍵值:net_transmit_pack_total
- 主要項:選擇前面創建的prometheus node exporter
- 資源周期不足:0
添加進程預處理步驟
- 名稱:prometheus to json
- 參數:node_network_transmit_packets_total{device=~".*"} , 其中~". *"表示label value可以是任意值。
添加LLD宏
我們添加三個宏,LLD宏分別為
- {#DEVICE}
- {#HELP}
- {#METRIC}
json路徑分別為
- $.labels['device']
- $['help']
- $['name']
設置完成后點擊添加
3.7.4 設置自動發現規則的監控項原型
選擇剛創建好的LLD自動發現規則,點擊監控項原型,創建監控項原型。
- 名稱:
- 類型:相關項目
- 鍵值:Total_transmit_packets[{#DEVICE}],如果有多個宏需要將宏都寫在[]中,如[{#DEVICE},{#MODE}]
- 主要項:此前創建的prometheus node exporter
- 信息類型:數字(無正負)
其余信息保持不變
為監控項原型添加預處理步驟
一共需要添加兩個預定步驟:
第一個:
- 名稱:prometheus pattern
- 參數:{#METRIC}{device="{#DEVICE}"}
第二個:
- 名稱:每秒更改
配置完成后點擊添加
3.7.5 查看通過自動發現規則創建的監控項
點擊配置-->主機-->監控項可以發現通過我們剛剛配置的自動發現規則已經自動創建了多個網卡相關的監控項
3.7.6 查看監控數據
點擊監測-->最新數據,可以看到各項監控項的監控數據
浙公網安備 33010602011771號