Nagios插件来监视FreeSWITCH

我正在尝试configurationNagios以监视FreeSWITCH,如https://github.com/kjhosein/nagios-freeswitch-plugin中所述 。

我已经从git下载脚本,并按照列出的步骤。

在远程(NRPE)服务器上,我在nrpe.cfg文件的下面添加了一行

command[check_freeswitch_health]=/usr/lib64/nagios/plugins/check_freeswitch_health.pl $ARG1$ 

在Nagios服务器上,添加在commands.cfg文件中

 define command { command_name check_freeswitch_health command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_freeswitch_health $ARG1$ } 

并在services.cfg文件中

 define service { host_name freeswitch01 service_description FreeSWITCH - Calls Count check_command check_freeswitch_health!-a '-q show-calls-count'!!!!!!! } 

但是,在Nagios的web界面我越来越

 CHECK_NRPE: Received 0 bytes from daemon. Check the remote server logs for error messages. 

在远程服务器上,显示以下错误的日志(/ var / log / syslog)

 Request contained command arguments! Client request was invalid, bailing out... 

我在这里错过了什么? 任何人都可以请帮助我正确的configuration?

谢谢,

Rutu

  1. 确保你可以在本地运行perl脚本,就像nagios / nrpe用户一样。
  2. 确保perl脚本不依赖于ENV(例如,$ PATH)。 通过运行env -i /usr/lib64/nagios/plugins/check_freeswitch_health.pl ...validationenv -i /usr/lib64/nagios/plugins/check_freeswitch_health.pl ...
  3. 使用你的通用check_nrpe命令定义,而不是为你想运行的每个不同的NRPE命令写一个check_ {whatever}。
  4. 要使用-a传递参数,必须通过设置dont_blame_nrpe=1在nrpe.cfg中启用命令参数

例如,如果你的check_nrpe命令如下所示:

 define command { command_name check_nrpe command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -a $ARG2$ } 

那么你的服务定义是:

 define service { host_name freeswitch01 service_description FreeSWITCH - Calls Count check_command check_nrpe!check_freeswitch_health!-q show-calls-count } 

(你为什么在命令结束时有!!!!!!!)

或者,如果您传递给该perl脚本的唯一选项是-q ,则可以将其放入NRPEconfiguration中的命令定义中:

 command[check_freeswitch_health]=/usr/lib64/nagios/plugins/check_freeswitch_health.pl -q $ARG1$ 

那么你的check_command就是check_nrpe!check_freeswitch_health!show-calls-count