在Zabbix中利用HTTP代理監控API

馬嘉煒 | 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:///actuator/health

返回結果(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宏變數。

在Zabbix中利用HTTP代理監控API

在Zabbix中利用HTTP代理監控API

配置完成後點下方的

測試

,點選

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,這樣可以在連結模版時對不同的主機設定宏變數(使用者名稱密碼也可以這樣配置)。