0x03 Nagios Plugins介紹

Nagios Plugins介紹

nagios core是沒有內置任何檢查機制進行主機服務或者網絡的監控。對於這些工做,都是交給額外的程序,就是nagios plugins程序來完成。
注意在nagios有Addons與Plugins的區分。這個後面會說到。html

什麼是nagios plugins

Plugins是可執行程序或者腳本,能夠在命令行執行,用於獲取主機或者服務的狀態。Nagios core調用執行plugins而後plugins將執行的results返回給Nagios core。而後nagios 處理這些結果,而後作出必要的actions,如運行event handlers,sending out notifications。。。ios

Plugins做爲一個抽象層,位於Nagios core與 具體監控對象。
api

Plugins規範

  1. Exit with one of serveral possible return values # 要有返回值
  2. Return at leaset one lien of text output to STDOUT # 要有一行標準輸出
  3. 固然,plugins必須是可執行程序(有一丟丟像cgi規範)。

返回code表明的意思

plugin return code Services State Host State
0 OK UP
1 WARNING UP orr DOWN/UNREACHABLE*
2 CRITICAL DOWN/UNREACHABLE
3 UNKNOWN DOWN/UNREACHABLE

Note: 若是將use_aggressive_host_checking 設置了enabled。那麼返回碼1對於host就是down.若是沒設置,那麼1對於host是UP.討論狀況點擊網絡

標準輸出行

插件至少應返回至少一行文本輸出。 從Nagios Core 3開始,插件能夠選擇返回多行輸出。 插件還可能返回可由外部應用程序處理的可選性能數據。 插件輸出的基本格式以下所示參考性能

TEXT OUTPUT | OPTIONAL PERFDATA
LONG TEXT LINE 1
LONG TEXT LINE 2
...
LONG TEXT LINE N | PERFDATA LINE 2
PERFDATA LINE 3
...
PERFDATA LINE Nspa

經過管道符號來分割出可選的性能數據。後面的LONG TEST LINE * 也是可選的數據。插件

plugin返回的數據都會對應該監控會話或者監控項範疇中的一個宏變量:命令行

  1. TEXT OUTPUT ===> $SERVICEOUTPUT$
  2. OPTIONAL PERFDATA ===> $SERVICEPERFDATA$ # 可選性能數據
  3. LONG TEXT LINE * ===> $LONGSERVICEOUTPUT$

plugin output實例

  1. 一行輸出
    DISK OK - free space: / 3326 MB (56%); # $SERVICEOUTPUT$
  2. 一行輸出包括性能數據
    DISK OK - free space: / 3326 MB (56%); | /=2643MB;5948;5958;0;5968
  3. 多行輸出
    DISK OK - free space: / 3326 MB (56%); | /=2643MB;5948;5958;0;5968 / 15272 MB (77%); /boot 68 MB (69%); /home 69357 MB (27%); /var/log 819 MB (84%); | /boot=68MB;88;93;0;98 /home=69357MB;253404;253409;0;253414 /var/log=818MB;970;975;0;980

output限制

Nagios Core 只會讀取第一個4KB數據。固然能夠經過MAX_PLUGIN_OUTPUT_LENGTH在include/nagios.h.in 文件。code

查看plugins用法或幫助

  1. exec_plugin --usage # 命令用法
  2. exec_plugin --help # manpage

Nagios Plugins怎麼配置到監控項中

Plugin命令要經過nagios的command進行一層封裝。command定義新的名字,並定義對應plugin的具體執行命令,包括參數,其中在command的定義的參數中,能夠包含macro,這些macro能夠來自command對象被用在的地方。想用在service,最多的可能仍是主機和參數,若是ARG1,ARG2...
Commnad定義後,其新名字就能夠被用於其它定義中,且經過command名字來傳遞參數是這種形式one_command!arg1!arg2 參數經過!來分割,而後參數就會出入ARG1 ARG2宏中,從而經過宏傳遞給使用宏的地方,像command定義中plugin中參數使用。server

相關文章
相關標籤/搜索