更好地记录 cronjobs?将 cron 输出发送到 syslog?

更好地记录 cronjobs?将 cron 输出发送到 syslog?

我正在寻找一种更好的方法来记录 cronjobs。大多数 cronjobs 倾向于向电子邮件或控制台发送垃圾邮件、被忽略或创建另一个日志文件。

在这种情况下,我有一个 Nagios NSCA 脚本,它将数据发送到中央 Nagios 服务器。此 send_nsca 脚本还会将单个状态行打印到 STDOUT,指示成功或失败。

0 * * * * root    /usr/local/nagios/sbin/nsca_check_disk

这会将以下消息通过电子邮件发送给 root@localhost,然后转发给我的系统管理员团队。垃圾邮件。

转发的 nsca_check_disk:1 个数据包已成功发送到主机。

我正在寻找一种记录方法:

  1. 不会向电子邮件或控制台发送垃圾邮件
  2. 不要再创建需要数月或数年后清理的另一个糟糕的日志文件。
  3. 将日志信息捕获到某处,以便以后需要时可以查看。
  4. 适用于大多数 unix
  5. 适合现有的日志基础设施。
  6. 使用常见的系统日志约定,如“设施”和“优先级”
  7. 可以与并不总是在内部进行日志记录的第三方脚本一起工作。

答案1

在写这个问题的过程中,我自己回答了这个问题。所以我会回答我自己”危险边缘“。这扩展了丹尼斯·威廉姆森提供的答案。

下面将把任何 Cron 输出发送到/usr/bin/logger(包括使用 转换为 stdout 的 stderr 2>&1),后者将发送到 syslog,带有 'tag'。Syslognsca_check_disk从那里处理它。由于这些系统(CentOS 和 FreeBSD)已经具有内置日志轮换机制,因此我不必担心像 / 这样的日志var/log/mycustom.log会填满磁盘。

*/5 * * * * root    /usr/local/nagios/sbin/nsca_check_disk 2>&1 | /usr/bin/logger -t nsca_check_disk

/var/log/messages 现在有一条附加消息,内容如下:

Apr 29, 17:40:00 192.168.6.19 nsca_check_disk: 1 data packet(s) sent to host successfully.

我喜欢 /usr/bin/logger ,因为它可以很好地与现有的 syslog 配置和基础架构配合使用,并且包含在大多数 Unix 发行版中。大多数 *nix 发行版都已进行日志轮换,并且做得很好。

答案2

通过管道输出记录器

0 * * * * root    /usr/local/nagios/sbin/nsca_check_disk | logger -p local0.notice

编辑:您的更新看起来是正确的。

答案3

您还可以crond使用选项-s(或-S在 Busybox 中)运行,以便将输出发送到syslog

相关内容