使用 nagios 监控文件年龄的问题(文件名中的命令替换)

使用 nagios 监控文件年龄的问题(文件名中的命令替换)

在我当前的 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 在遇到$符号时会执行一些奇怪的命令替换。

相关内容