Linux

更好地記錄 cronjobs?將 cron 輸出發送到系統日誌?

  • March 14, 2017

我正在尋找一種更好的方式來記錄 cronjobs。大多數 cronjobs 傾向於向電子郵件或控制台發送垃圾郵件、被忽略或創建另一個日誌文件。

在這種情況下,我有一個 Nagios NSCA 腳本,它將數據發送到中央 Nagios 伺服器。這個 send_nsca 腳本還向 STDOUT 列印一個狀態行,指示成功或失敗。

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

這會將以下消息通過電子郵件發送給 root@localhost,然後轉發給我的系統管理員團隊。垃圾郵件。

forwarded nsca_check_disk: 1 個數據包成功發送到主機。

我正在尋找一種日誌記錄方法:

  1. 不會向電子郵件或控制台發送垃圾郵件
  2. 不要再創建另一個需要在數月或數年後清理的異常日誌文件。
  3. 在某處擷取日誌資訊,以便以後可以根據需要查看。
  4. 適用於大多數 Unix
  5. 適合現有的日誌基礎設施。
  6. 使用常見的系統日誌約定,如“設施”和“優先級”
  7. 可以使用並不總是在內部進行日誌記錄的第三方腳本。

在寫這個問題的過程中,我回答了自己。所以我會回答自己“危險風格”。這擴展了丹尼斯威廉姆森提供的答案。

以下將發送任何 Cron 輸出到/usr/bin/logger(包括 stderr,使用 轉換為 stdout 2>&1),這將發送到 syslog,帶有 ’tag’ 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 發行版已經進行了日誌輪換並且做得很好。

引用自:https://serverfault.com/questions/137468