답변:
명명 된 파이프를 사용 하는 솔루션 이 있습니다. 데비안 용으로 설정되었지만 BSD 용으로 수정할 수 있어야합니다.
OpenBSD 서버에서 local1 기능을 사용하는 웹 응용 프로그램에서 중요한 메시지를 기록하고 전자 메일로 보냅니다 . 내 /etc/syslog.conf 는 다음과 같습니다 .
local1.err /var/log/example.com
local1.err |while read log; do echo "$log" | /usr/bin/mail -s SYSLOG me@example.com; done
while 루프는 syslogd에서 각 줄을 무한정 읽은 다음 echo를 통해 메일로 파이프합니다. 이것은 중요하다. echo가 라인을 출력하면 파이프를 종료하고 EOF를 보내서 로그 메시지를 이메일로 보낼 수 있습니다.
즉, syslogd를 통해 메일로 직접 파이프 할 수 없습니다.
local1.err |/usr/bin/mail -s SYSLOG me@example.com
syslogd는 파이프 자체가 종료되거나 HUP 신호를 보낼 때까지 파이프에 계속 기록하기 때문에 메일은 전체 로그 메시지 세트를 하나의 큰 이메일로 보냅니다.
cron에서 newsyslog를 예약하는 것은 메시지를 느리게 또는 대량으로 얻는 또 다른 방법입니다.
예를 들어, 매일 로그 메시지를 이메일로 요약하려면 /etc/newsyslog.conf 에서 M 플래그를 설정하고 모니터 이메일 주소를 지정하십시오 .
# logfile_name owner:group mode count size when flags monitor
/var/log/example.com root:wheel 640 7 * 24 M me@example.com
그런 다음 crontab에서 newsyslog를 예약하십시오.
# minute hour mday month wday command
0 * * * * /usr/bin/newsyslog
1-59 * * * * /usr/bin/newsyslog -m
newsyslog (8) 의 -m 옵션은 다음과 같습니다.
모니터링 모드; 플래그에 'M'으로 표시된 항목 만 처리됩니다. 모니터중인 각 로그 파일에 대해 -sys 플래그를 사용하여 newsyslog를 마지막으로 실행 한 이후의 모든 로그 출력이 모니터 통지 섹션에 나열된 사용자에게 우편으로 보내집니다.
logcheck 또는 logwatch를 볼 수 있습니다. Logcheck는 일련의 패턴과 일치하지 않는 로그 라인을 이메일로 매시간 보내드립니다. 아마 더 자주 할 수있을 것 같아요. 나는 로그 파일을 보면서 그것을하는 도구를 모른다.하지만 거기에 무언가가 있다고 확신한다.
OSSEC을 사용하겠습니다. 실시간으로 로그를 모니터링하고 특정 이벤트가 일치 할 때 이메일 (또는 다른 수단)로 쉽게 경고 할 수 있습니다. 사용하기 쉽고 확장 가능하며 오픈 소스입니다.
링크 : http://www.ossec.net