萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Nagios 核心架構、功能特色與監控原理深度解析

Nagios 是開源 IT 基礎設施監控標杆,採用核心+插件架構,支援主機/服務狀態監控、事件處理、通知升級、Web 可視化。

核心架構

  • 核心:排程、狀態機、宏引擎、通知邏輯、配置解析、Web CGI
  • 插件:實際執行檢查的獨立程式 (NRPE、check_disk、check_http、check_snmp...)
  • 通訊:核心調用插件 → 插件返回狀態碼 (0=OK, 1=WARNING, 2=CRITICAL, 3=UNKNOWN) + 輸出文字

監控對象與能力

類別監控項目典型插件
本機資源CPU、記憶體、磁碟、負載、程序、使用者、日誌check_load, check_disk, check_procs, check_users, check_log
網路服務HTTP/HTTPS、SSH、FTP、SMTP、POP3/IMAP、DNS、MySQL、PostgreSQLcheck_http, check_ssh, check_smtp, check_dns, check_mysql
網路設備交換機、路由器、防火牆、負載均衡器 (SNMP)check_snmp, check_bgp, check_ospf
環境監控溫濕度、電源、UPS、機房門禁 (IPMI/SNMP)check_ipmi_sensor, check_snmp_env
應用層API 回應時間、業務流程、資料庫查詢效能自訂腳本、check_http_post、check_jmx

通知與升級機制

  • 聯絡人/群組:定義接收者、通知時段、通知方式 (email, sms, slack, webhook)
  • 通知類型:PROBLEM、RECOVERY、ACKNOWLEDGEMENT、FLAPPING、DOWNTIME
  • 升級規則:首次通知 → 間隔重複 → 升級至上層聯絡人群組
  • 抑制機制:父主機宕機抑制子服務通知、計畫停機 (Downtime) 靜默

事件處理器


# 範例:HTTP 服務 CRITICAL 時自動重啟
define command {
    command_name    restart_httpd
    command_line    /usr/local/nagios/libexec/eventhandlers/restart_httpd $HOSTADDRESS$ $SERVICESTATE$ $SERVICESTATETYPE$ $SERVICEATTEMPT$
}

# 事件處理腳本邏輯
if [ "$2" = "CRITICAL" ] && [ "$3" = "HARD" ] && [ "$4" -eq 3 ]; then
    ssh $1 "systemctl restart httpd"
fi

被動檢查與 NSCA/NRDP

  • 主動檢查:Nagios 主動排程執行插件
  • 被動檢查:外部系統 (如 NSCA client、SNMP Trap、Syslog) 提交結果至 Nagios 指令管道
  • 適用場景:防火牆內部主機、高頻指標、非輪詢型事件

分散式監控架構

  • 分散式監控:多台 Nagios 監控不同區域,主實例透過 ocsp (Obsessive Compulsive Service Processor) 聚合狀態
  • 多實例負載分散:配合 Mod_Gearman、Nagios Cross Platform Agent (NCPA) 分流檢查負載
  • 高可用:雙主熱備 (Heartbeat/Pacemaker) 或容器化部署 (Kubernetes Operator)

Web 介面與視覺化

  • Classic CGI (傳統)、Nagios V Shell (現代 JS 介面)、Thruk (輕量級替代 UI)
  • 狀態地圖、趨勢圖、可用性報表、SLA 儀表板
  • 整合 Grafana (透過 Nagios InfluxDB 寫入器) 實現豐富儀表板

部署最佳實務

  1. 配置管理:將物件定義 (host, service, contact) 拆分為多檔案,納入 Git 版控
  2. 模板化:定義 generic-host、linux-server、web-service 模板,減少重複
  3. 自動發現:腳本掃描網段/資產 CMDB 自動生成 host 定義
  4. 插件標準化:統一使用 Monitoring Plugins (官方) + 自訂插件遵循開發指南
  5. 效能調優:max_concurrent_checks、check_result_reaper_frequency、大環境啟用 use_large_installation_tweaks

現代替代/補充方案

  • Prometheus + Alertmanager:Pull 模式、多維標籤、PromQL、雲原生首選
  • Zabbix:Agent/Proxy 架構、內建圖表、自動發現、Web 管理完整
  • Icinga 2:Nagios 分支、DSL 配置、Cluster 原生、API 優先
  • Checkmk:規則式配置、Agent 智能、內建 BI 報表

Nagios 成熟穩定、插件生態最豐富,適合傳統 IT 環境;雲原生與微服務架構建議評估 Prometheus/Checkmk 等現代觀測平台。

copyright © 萬盛學電腦網 all rights reserved