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://<ip>:<port>/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宏變量。

配置完成後點下方的測試,點擊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,這樣可以在鏈接模版時對不同的主機設置宏變量(用戶名密碼也可以這樣配置)。

————

2022年活動計劃,交流會爲半天,約50人,免費。期待你的回覆,其他選擇可至文末留言~



推薦閱讀



_

Zabbix 在一位企業資深運維人員眼中,究竟是怎樣的存在?—用戶分享


_


_

Zabbix全年在線課錄屏


_


_

● Zabbix學習資料、客戶案例申請(往屆峯會ppt)


_


_

● 如何利用Git對Zabbix監控模板進行版本管理及備份?


_


備註“使用Zabbix年限+企業+姓名”

進入交流羣,4000+用戶已加入

一個人走得快,一羣人走得遠

本文分享自微信公衆號 - Zabbix開源社區(china_zabbix)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章