Nagios 插件监控 FreeSWITCH

Nagios 插件监控 FreeSWITCH

我正在尝试配置 Nagios 来监控 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 服务器上,在 command.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...

我这里缺少什么?有人能帮助我正确配置吗?

谢谢,

鲁图

答案1

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

例如,如果您的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,您可以将其放在 NRPE 配置中的命令定义中:

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

那么你check_commandcheck_nrpe!check_freeswitch_health!show-calls-count

相关内容