在我当前的 nagios 安装中,我通过 NRPE 检查是否存在远程备份。具体来说,我的远程 nrpe.cfg(在 Ubuntu 8.x 上)是:
command[check_zimbra_backup]=/usr/lib/nagios/plugins/check_file_age -f \\
/backupdir/zimbra_backup-$(date +%a).tar.gz -w 518400 -c 86400
本地运行命令返回OK:
$ sudo su -m nagios -c "/usr/lib/nagios/plugins/check_file_age -f \\
/backupdir/zimbra_backup-$(date +%a).tar.gz -w 518400 -c 86400 "
FILE_AGE OK: /backupdir/zimbra_backup-Sun.tar.gz is 47661 seconds old and 10863637475 bytes
但是,我的日志显示严重错误:
nagios: SERVICE NOTIFICATION: zimbra backups;CRITICAL;notify-service-by-email;
FILE_AGE CRITICAL: /backupdir/zimbra_backup-Sun.tar.gz is 22373 seconds old and 10863637475 bytes
请注意,尽管报告的秒数(22373)小于警告参数(86400 秒或 24 小时),它仍然返回临界状态。
有趣的是,运行 NRPE 插件远程返回一些奇怪的事情:
$ sudo su -m _nagios -c "/usr/local/libexec/nagios/check_nrpe -H HOST \\
-c check_zimbra_backup"
FILE_AGE CRITICAL: /backupdir/zimbra_backup-Sun.tar.gz is 23611 seconds old and 10863637475 bytes
ҷ?Oڷ`xڷ
注意最后一行,它看起来像某种乱码输出。
插件check_file_age
版本v1750 (nagios-plugins 1.4.11)
答案1
解决方案是将命令替换从
[...]zimbra_backup-$(date +%a).tar.gz
到
[...]zimbra_backup-`date +%a`.tar.gz
看起来 nagios 在遇到$
符号时会执行一些奇怪的命令替换。