Ste*_*ski 53 linux unix logging syslog cron
我正在寻找一种更好的方式来记录 cronjobs。大多数 cronjobs 倾向于向垃圾邮件或控制台发送垃圾邮件,被忽略或创建另一个日志文件。
在这种情况下,我有一个 Nagios NSCA 脚本,它将数据发送到中央 Nagios 服务器。这个 send_nsca 脚本还会向 STDOUT 打印一个状态行,指示成功或失败。
0 * * * * root /usr/local/nagios/sbin/nsca_check_disk
Run Code Online (Sandbox Code Playgroud)
这会将以下消息通过电子邮件发送到 root@localhost,然后转发给我的系统管理员团队。垃圾邮件。
转发 nsca_check_disk:1 个数据包成功发送到主机。
我正在寻找一种日志记录方法:
Ste*_*ski 85
在写这个问题的过程中,我回答了自己。所以我会回答自己“危险的风格”。这扩展了丹尼斯威廉姆森提供的答案。
以下将发送任何 Cron 输出/usr/bin/logger(包括 stderr,使用2>&1将其转换为 stdout ),该输出将发送到 syslog,带有nsca_check_disk. Syslog 从那里处理它。由于这些系统(CentOS 和 FreeBSD)已经内置了日志轮换机制,所以我不需要担心像 /var/log/mycustom.log填满磁盘这样的日志。
*/5 * * * * root /usr/local/nagios/sbin/nsca_check_disk 2>&1 | /usr/bin/logger -t nsca_check_disk
Run Code Online (Sandbox Code Playgroud)
/var/log/messages 现在有一条额外的消息,内容如下:
Apr 29, 17:40:00 192.168.6.19 nsca_check_disk: 1 data packet(s) sent to host successfully.
Run Code Online (Sandbox Code Playgroud)
我喜欢 /usr/bin/logger ,因为它适用于现有的系统日志配置和基础架构,并且包含在大多数 Unix 发行版中。大多数 *nix 发行版已经做了日志轮换并且做得很好。
通过logger管道输出。
0 * * * * root /usr/local/nagios/sbin/nsca_check_disk | logger -p local0.notice
Run Code Online (Sandbox Code Playgroud)
编辑:您的更新看起来是正确的方法。