Nagios的插件介紹
Nagios的插件介紹:
如果想給Nagios增加一個自己的插件,請訪問:Nagios插件項目官方網站、Nagios插件開發(fā)的官方指南。
一、插件概覽
作為Nagios插件的腳本或執(zhí)行程序必須(至少)要做兩件事:
退出時給出幾種可能的返回值中的一個;
至少要給出一條輸出內容到標準輸出設備(STDOUT)。
對Nagios來說,插件里面做什么并不重要。自制插件可以是做TCP端口狀態(tài)檢測,運行某個數據庫查詢,檢查磁盤空閑空間,或其他需要檢測的內容。這取決于你想檢測什么東西,這完全由你自己決定。
二、返回值
Nagios用插件的返回值來生成主機或服務的狀態(tài)。下表里列出了合法的返回值以及對應的服務或主機狀態(tài)。
插件返回值 | 服務狀態(tài) | 主機狀態(tài) |
---|---|---|
0 | 正常(OK) | 運行(UP) |
1 | 告警(WARNING) | 運行(UP)或宕機(DOWN)/不可達(UNREACHABLE)* |
2 | 緊急(CRITICAL) | 宕機(DOWN)/不可達(UNREACHABLE) |
3 | 未知(UNKNOWN) | 宕機(DOWN)/不可達(UNREACHABLE) |
注意:如果使能use_aggressive_host_checking選項,返回值1將使主機狀態(tài)要么是宕機(DOWN)要么是不可達(UNREACHABLE)。其他情況下,返回值1將使主機狀態(tài)是運行(UP)。
三、特定插件輸出
最小情況下,插件要返回一行文本輸出。自Nagios 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 N
性能數據(用下劃線示意的部分)是可選的,如果插件輸出文本里有性能數據,必須用管道符(|)把性能數據與其他數據分開,額外的大段輸出行(用文字刪除符示意的部分)同樣也是可選的。
四、插件輸出樣例
下面看一下插件輸出的樣例...
案例1:只有一行文本輸出(不帶性能數據)
假定插件的輸出文本是這樣:
- DISK OK - free space: / 3326 MB (56%);
如果插件執(zhí)行的是一個服務檢測,整行輸出都會保存在$SERVICEOUTPUT$宏里。
案例2:一行輸出帶性能數據
插件的輸出文本中帶有性能數據可給外部應用來處理。性能數據要用管道符(|)分隔開,象是這樣:
- DISK OK - free space: / 3326 MB (56%); | /=2643MB;5948;5958;0;5968
如果插件執(zhí)行的是一個服務檢測,分隔符左側的部分將保存在$SERVICEOUTPUT$宏里并且右側(用下劃線示意)的部分將保存在$SERVICEPERFDATA$宏里面。
案例3:多行輸出(正文和性能數據都有)
插件可以輸出多行文本,并且?guī)в姓妮敵龊托阅軘祿?,象是這樣:
- 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
如果插件執(zhí)行的是一個服務檢測,第一行分隔符左側的部分將保存在$SERVICEOUTPUT$宏里,帶有下劃線標識的部分(帶空格)將保存在$SERVICEPERFDATA$宏里,帶刪除符標識的部分(不帶換行符)的部分將保存在$LONGSERVICEOUTPUT$宏里(以上的下劃線和刪除符只是為標記文本段而用的,實際文本中不帶有符號格式--譯者注)。
每個宏的最終結果是這樣的:
宏 | 內容 |
---|---|
$SERVICEOUTPUT$ | DISK OK - free space: / 3326 MB (56%); |
$SERVICEPERFDATA$ | /=2643MB;5948;5958;0;5968./boot=68MB;88;93;0;98./home=69357MB;253404;253409;0;253414./var/log=818MB;970;975;0;980 |
$LONGSERVICEOUTPUT$ | / 15272 MB (77%);\n/boot 68 MB (69%);\n/var/log 819 MB (84%); |
利用多行輸出結果的機制,可以采取多種方式來返回性能數據:
無論什么情況都沒有性能數據;
只返回一行性能數據;
只是在后序的行內返回性能數據(第一行不用的管道分隔符右側不填內容);
利用全部的輸出位置來帶出性能數據。
(看起來第一行右側部分有點"多余",真的可以不用,但其實這是作者為軟件向下兼容低版本使用的插件而特意這么做的,很有必要這么做,看一下源程序就明白了。--譯者注)
五、插件輸出長度限制
Nagios只處理插件返回的前4KB數據內容。這樣是為了防止插件返回一個上兆或上千兆的數據塊給Nagios處理。這個4K的限制很容易修改,如果你想改,可以編輯一下源代碼里的MAX_PLUGIN_OUTPUT_LENGTH宏定義,在源程序包的include/nagios.h.in文件里,重編譯一下Nagios就可以了,其他地方不用動!
六、例子
如果想找點例子來學習開發(fā)插件,推薦去下載Nagios插件項目官方的軟件包,插件代碼使用多種語言(象C、Perl和SHELL腳本等)寫成插件。
Nagios的插件就講述到這里了。
【編輯推薦】