我正在尝试配置 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
- 确保您可以以 nagios/nrpe 用户身份在本地运行该 perl 脚本。
- 确保 perl 脚本不依赖于 ENV(例如 $PATH)。通过运行以下代码进行验证
env -i /usr/lib64/nagios/plugins/check_freeswitch_health.pl ...
- 使用通用
check_nrpe
命令定义,而不是为要运行的每个不同的 NRPE 命令编写一个 check_{whatever}。 - 要使用 -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_command
的check_nrpe!check_freeswitch_health!show-calls-count