馬嘉煒 | Zabbix開源社群簽約專家
SRE運維工程師,六年Zabbix監控系統使用經驗。在Zabbix架構設計及效能最佳化領域有豐富的經驗,擅長監控模板製作及Zabbix API的二次開發。
官方使用手冊《Zabbix標準模板指南》譯者
簡介
從Zabbix 4。0版本開始,官方提供了一種新的HTTP代理(HTTP agent)的健康方式,透過HTTP協議採集資料,它由Zabbix server或者Zabbix proxy發起,並且不需要安裝Zabbix agent。
官方文件說明:
https://www。zabbix。com/documentation/current/en/manual/config/items/itemtypes/http
本文將介紹HTTP代理的使用方法及技巧。
環境需求
Zabbix 版本 >= 4。0
案例:透過Spring Boot Actuator Web API監控應用狀態
actuator是spring boot提供的對應用系統的自省和監控的整合功能,可以對應用系統進行配置檢視、相關功能統計等。
官方文件說明:https://docs。spring。io/spring-boot/docs/current/actuator-api/htmlsingle/
actuator提供了一個health endpoint用於獲取有關應用程式的執行狀況的詳細資訊。
官方文件地址:https://docs。spring。io/spring-boot/docs/current/actuator-api/htmlsingle/#health
URL地址為 http://
返回結果(JSON資料格式):
{
“status”
:
“UP”
,
“components”
: {
“custom”
: {
“status”
:
“UP”
,
“details”
: {
“app”
:
“Alive and Kicking”
,
“error”
:
“Nothing! I‘m good。”
}
},
“diskSpace”
: {
“status”
:
“UP”
,
“details”
: {
“total”
:
52776349696
,
“free”
:
43368595456
,
“threshold”
:
10485760
}
},
“ping”
: {
“status”
:
“UP”
}
}
}
配置監控項
推薦使用Zabbix的master監控項 + 依賴監控項(相關專案)來實現一次呼叫採集多個數據,減少對API的呼叫次數。
步驟 1: 建立master監控項
建立監控項並修改以下配置:
名稱:
Get Spring boot actuator health
型別:
HTTP代理
鍵值:
spring.boot.actuator.health
URL:
http://masix.cn:8080/actuator/health(支援使用macro宏變數)
請求型別:
GET
要求的狀態碼:
200
資訊型別:
文字
更新間隔:
1m
歷史資料保留時長:
Do not keep history
應用集:
Zabbix raw items
如果API介面需要認證,可以設定
HTTP認證
。
使用者名稱
和
密碼
支援使用macro宏變數。
配置完成後點下方的
測試
,點選
Get value and test
,檢查是否能夠正確獲取資料。
步驟 2: 建立依賴監控項(相關專案)
假設需要監控應用的狀態以及磁碟的剩餘空間這兩個指標
指標 1: 監控應用狀態
JSONPath語法說明參考官方文件:https://www。zabbix。com/documentation/current/en/manual/config/items/preprocessing/jsonpath_functionality
建立監控項並修改以下配置:
名稱:
Spring boot Application: Health Status
型別:
相關專案
鍵值:
spring.boot.actuator.health.status
主要項:
Get Spring boot actuator health
資訊型別:
字元
應用集:
Spring boot Application
在
程序
標籤頁新增步驟:
名稱:
JSONPath
引數:
$.status
Custom on fail:
勾選
並選擇
Set value to
,值填寫
Down
(當API無法訪問時會將監控項資料設定為
Down
,方便配置觸發器表示式)
點選下方的
Test all steps
進行配置驗證,在
值
中填入master監控項測試獲取的資料,點選
測試
檢查是否能夠正確獲取資料。
指標 2: 監控磁碟剩餘空間
建立監控項並修改以下配置:
名稱:
Spring boot Application: Disk free space
型別:
相關專案
鍵值:
spring.boot.actuator.health.diskspace.free
主要項:
Get Spring boot actuator health
資訊型別:
數字(無正負)
單位:
B
應用集:
Spring boot Application
在
程序
標籤頁新增步驟:
名稱:
JSONPath
引數:
$.components.diskSpace.details.free
Custom on fail:
勾選
並選擇
Discard value
(當API無法訪問時會將監控項資料丟棄)
點選下方的
Test all steps
進行配置驗證,在
值
中填入master監控項測試獲取的資料,點選
測試
檢查是否能夠正確獲取資料。
檢查最新資料能否正常採集
注意:依賴監控項(相關專案)的資料更新間隔是由master監控項設定的更新間隔決定的
至此,監控項的配置就已經完成,接下來可以根據實際情況配置對應的觸發器。
在配置模板時,可以將master監控項中的URL配置為macro宏變數,例如: http://{$HOST}:{$PORT}/actuator/health,這樣可以在連結模版時對不同的主機設定宏變數(使用者名稱密碼也可以這樣配置)。