首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Nagios 二次開發實戰:基於業務分組繪製服務效能圖表

     編輯:Java 綜合教學

專案背景

早期在 Nagios 3.2.0 整合 SaltStack + ThinkPHP,實現資產管理、批量執行、分組出圖。新版基於 Nagios 4.1.1 + PNP4Nagios 輕量重構,移除 ThinkPHP 依賴,直接修改核心 CGI 實現分組圖表,降低複雜度、加速交付。

需求與效果

  • 需求:依據業務分組(如「訂單系統」「支付網關」)聚合展示相關服務的效能圖表
  • 效果:Web 介面提供分組複選框,全選/反選,一鍵生成該業務線所有服務的 PNP 圖表

分組複選框介面 業務分組出圖效果

技術實現路徑

1. 修改 status.cgi(核心 CGI)

  • 在服務狀態頁面注入分組複選框 HTML
  • 新增 JavaScript 全選/反選邏輯
  • 表單提交目標指向新建 graphview.php

2. 新增 graphview.php(PNP4Nagios 目錄下)

  • 接收 hostgroup/servicegroup 參數
  • 查詢 Nagios 狀態檔 status.dat 或 Livestatus API 獲取該分組下所有服務
  • 拼裝 PNP 圖表 URL(graph?host=...&srv=...&view=...))
  • 批量輸出 <img> 標籤或 iframe 嵌入,實現單頁聚合展示

關鍵技術點

點說明
資料來源Nagios status.dat / objects.cache 或 MK Livestatus (推薦,效能更好)
分組映射利用 Nagios hostgroup/servicegroup 定義業務邊界
PNP 整合直接呼叫 PNP graph 端點,複用現有 RRD 繪圖引擎
權限控制複用 Nagios authorized_for_* CGI 變數,零成本繼承既有權限體系

對比優化

維度Nagios 3.2.0 + ThinkPHPNagios 4.1.1 純核心修改
架構複雜度三套系統整合,維護成本高單一代碼庫,依賴極少
開發效率需跨框架協作直接改 CGI/PHP,迭代快
效能ThinkPHP 層額外開銷直連 Livestatus/PNP,延遲低

總結與心得

  1. 開源軟體二次開發核心在於吃透核心資料流(Nagios → status.dat → PNP)
  2. 善用現有擴展點(CGI 參數、PNP API)而非重造輪子
  3. 版本升級時,直接移植核心邏輯修改比重寫框架整合更穩健
  4. 「依據業務分組出圖」實際上是將基礎設施指標映射到業務語義,極大提升運維溝通效率
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved