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


43

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

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

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

这会将以下消息通过电子邮件发送到root @ localhost,然后将其转发给我的sysadmins团队。垃圾邮件。

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

我正在寻找一种日志记录方法,它:

  1. 不向电子邮件或控制台发送垃圾邮件
  2. 不要创建另一个需要数月或数年后清除的原始日志文件。
  3. 将日志信息捕获到某处,以便以后可以根据需要查看。
  4. 适用于大多数Unix
  5. 适合现有的日志基础架构。
  6. 使用常见的系统日志约定,例如“功能”和“优先级”
  7. 可以使用并非总是在内部进行日志记录的第三方脚本。

Answers:


69

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

下面的命令会将所有Cron输出发送到/usr/bin/logger(包括stderr,使用转换为stdout 2>&1),然后将其发送到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

/ 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发行版已经进行了日志轮换并且效果很好。


1
2>&1命令有什么作用?这是什么意思?谢谢。
Brettski


在Ubuntu上使用systemd 00 00 * * * systemd-cat -t "tagname" /path/to/app.sh之后sudo crontab -u root -e
2008年

5

通过记录器输出输出。

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

编辑:您的更新看起来像正确的方法。


谢谢!发布问题后,我看到Apache管道将日志输出到/ usr / bin / logger。我没有意识到我们可以将输出通过管道传送到logger(1)-不在手册页中!
Stefan Lasiewski

2
“消息-将消息写入日志;如果未指定,并且未提供-f标志,则记录标准输入。”
丹尼斯·威廉姆森

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.