크론 작업에 대한 더 나은 로깅? cron 출력을 syslog로 보내시겠습니까?


43

cronjob을 기록하는 더 좋은 방법을 찾고 있습니다. 대부분의 cronjob은 이메일이나 콘솔을 스팸하거나 무시하거나 다른 로그 파일을 만드는 경향이 있습니다.

이 경우 중앙 Nagios 서버로 데이터를 보내는 Nagios NSCA 스크립트가 있습니다. 이 send_nsca 스크립트는 또한 단일 상태 행을 STDOUT에 인쇄하여 성공 또는 실패를 나타냅니다.

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

그러면 다음 메시지를 root @ localhost로 전자 메일로 보낸 다음 sysadmins 팀으로 전달됩니다. 스팸.

forwarded nsca_check_disk : 1 개의 데이터 패킷이 호스트로 성공적으로 전송되었습니다.

로깅 방법을 찾고 있습니다.

  1. 이메일이나 콘솔로 메시지를 스팸하지 않습니다
  2. 몇 개월 또는 몇 년 후에 정리가 필요한 다른 krufty 로그 파일을 작성하지 마십시오.
  3. 로그 정보를 어딘가에 캡처하여 원하는 경우 나중에 볼 수 있습니다.
  4. 대부분의 유닉스에서 작동
  5. 기존 로그 인프라에 적합합니다.
  6. 'facility'및 'priority'와 같은 일반적인 syslog 규칙을 사용합니다.
  7. 항상 내부적으로 로깅하지는 않는 타사 스크립트를 사용할 수 있습니다.

답변:


69

이 질문을 쓰는 과정에서 나는 스스로 대답했다. 그래서 나는 " 저희 스타일 " 이라고 대답 할 것 입니다. 이것은 Dennis Williamson이 제공 한 답변으로 확장됩니다.

다음은 모든 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 배포판에 포함되어 있기 때문에 / usr / bin / logger가 좋습니다. 대부분의 * nix 배포판은 이미 로그 회전을 수행하고 잘 수행합니다.


1
2> & 1 명령은 무엇을합니까? 무슨 뜻인가요? 감사합니다.
Brettski


에 우분투 00 00 * * * systemd-cat -t "tagname" /path/to/app.sh에서 시스템으로sudo crontab -u root -e
대시

5

로거를 통해 출력을 파이프하십시오 .

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

편집 : 업데이트가 올바른 방법으로 보입니다.


감사! 내 질문을 게시 한 후 Apache 파이프가 / usr / bin / logger에 출력을 기록하는 것을 보았습니다. 출력을 logger (1)에 파이프 할 수 있다는 것을 몰랐습니다. 맨 페이지에 없습니다!
Stefan Lasiewski

2
"message-메시지를 로그에 기록하십시오. 지정하지 않으면 -f 플래그가 제공되지 않으면 표준 입력이 기록됩니다."
Dennis Williamson

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.