2015-09-09 59 views
1

是否有向Nagios添加和配置插件的「如何」? (在Ubuntu 14.04明確,但任何Linux操作系統將是有益的。)「如何」向Nagios添加插件

我已經能夠多至今湊齊這樣的:

  1. 將這個腳本在/ usr /本地/ nagios的/ libexec目錄/ 。 (在我的情況下,已經有一個我想使用的腳本:「check_file_age」)。
  2. 編輯/usr/local/nagios/etc/objects/commands.cfg添加插件。
define command{ 
    command_name check_file_age 
    command_line $USER1$/check_file_age -w $ARG1$ -c $ARG2$ -W $ARG3$ -C $ARG4$ -f $ARG5$ 
}
  • 定義在/usr/local/nagios/etc/objects/localhost.cfg插件。現在
  • define service{ 
        use    generic-service  ; Name of service template to use 
        host_name   localhost 
        service_description  File Age 
        check_command   check_file_age 
        notifications_enabled  1 
    }

    我可以看到在「配置 - >對象類型:命令」插件,我可以看到它在「配置 - >對象類型:服務」中。

    插件從命令行運行成功:

    [email protected]:/usr/local/nagios/libexec$ perl ./check_file_age -w 3600 -c 5400 -W -1 -C -1 -f somefile.txt 
    FILE_AGE OK: somefile.txt is 2932 seconds old and 59 bytes | age=2932s;3600;5400 size=59B;-1;-1;0

    然後在這一點上我很爲難。我可以在服務中看到此錯誤:

    File Age 
    CRITICAL  
    09-09-2015 14:24:21 
    0d 0h 32m 1s  
    3/3 
    (No output on stdout) stderr: Can't locate utils.pm in @INC (you may need to install the utils module) (@INC contains: . /etc/perl /usr/local/lib/perl/5.18.2 /usr/local/share/perl/5.18.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.18 /usr/share/perl/5.18 /usr/local/lib/site_perl) at /usr/local/nagios/libexec/check_file_age line 30. 
    HTTP 
    Notifications for this service have been disabled 
    OK 09-09-2015 14:30:53 0d 4h 3m 30s 1/4

    如何指定要傳遞的參數?我如何糾正錯誤?下一步是什麼? (是否有介紹如何添加逃脫我的谷歌福插件單一位置?)

    回答

    4

    問題1:

    check_file_age插件是一個Perl腳本,需要一個名爲utils.pm另一個Perl模塊,。他們都在同一個文件夾中嗎?如果沒有,找到utils.pm位置:

    find/-name "utils.pm" -type f 
    

    您需要包含utils.pm的文件夾的路徑添加到您的$PERL5LIB環境變量爲你的Nagios的用戶或任何用戶正在運行的Nagios守護進程服務。

    將utils.pm文件夾的路徑添加到我們將放置在/etc/profile.d/文件夾中的shell腳本中。例如,如果你find命令的結果是/usr/local/nagios/libexec/utils.pm然後執行是這樣的:

    echo "export PERL5LIB=$PERL5LIB:/usr/local/nagios/libexec" >> /etc/profile.d/nagiosplugins.sh 
    chmod a+x /etc/profile.d/nagiosplugins.sh 
    source /etc/profile 
    

    運氣好的話,應該採取Can't locate utils.pm in @INC錯誤的照顧。

    問題2:

    你需要修復您的服務定義在預期參數傳遞給check_file_age。傳遞到服務定義的check_command字段的參數遵循命令名稱,並由!感嘆號分隔。修改File age服務定義在/usr/local/nagios/etc/objects/localhost.cfg看起來是這樣的:

    define service { 
        use    generic-service  ; Name of service template to use 
        host_name   localhost 
        service_description  File Age 
        check_command   check_file_age!3600!5400!200!100!somefile.txt 
        notifications_enabled  1 
    } 
    

    好了,現在時間來驗證您的配置文件沒有在其中任何錯誤:

    nagios -v /usr/local/nagios/etc/nagios.cfg 
    

    (...或什麼是如果沒有錯誤,請重新啓動Nagios的服務的正確路徑到您nagios.cfg文件)

    service nagios restart 
    
    +0

    出色答卷。我唯一的問題是'register 1'不應該是必須的,因爲['register'沒有被繼承](https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/4/en/objectinheritance.html ),1是默認值。 – ThisSuitIsBlackNot

    +0

    你說得對。剛剛在文檔中找到它。更新我的答案。感謝您的領導! –

    +0

    'utils.pm'位於同一個目錄下,並且我沒有運氣將導出添加到'profile.d'。 –

    0

    在CentOS 6.9,我可以通過重新安裝rpm包提供的文件解決該問題:

    yum reinstall /usr/lib64/nagios/plugins/utils.pm