로그 파일의 오류를 모니터링한 후 관리자에게 이메일을 보내고 싶습니다.
로그 파일에는 다음 데이터가 포함되어 있습니다.
11 Aug 02:30 Service1 restarted
11 Aug 05:35 Service1 restarted
11 Aug 08:43 Service2 restarted
11 Aug 11:20 Service1 restarted
11 Aug 14:53 Service2 restarted
5분마다 실행되고 마지막 서비스 재시작 발생을 확인하고 이메일을 보내는 스크립트를 만들고 싶습니다.
예: 스크립트가 02:35에 실행되면 Service1
다시 시작이 표시되므로 이메일을 보냅니다 Service1 restarted at 02:30
. 예를 들어 이제 스크립트가 5:45에 실행되면 Service1
05:35에 다시 시작 이메일만 보내야 합니다. (02:35 재시작을 포함하면 안 됨)
이 요구 사항을 충족할 수 있는 방법이 있나요? 저는 기본적으로 Linux와 쉘 스크립팅을 처음 접했습니다.
답변1
먼저 5분짜리 crontab을 만듭니다:
*/5 * * * * myscript.sh
myscript.sh를 실행합니다( $HOME
디렉토리에서).
#!/bin/bash
tail -1 /path/to/file.log > /some/dir/after
if cmp -s /some/dir/after /some/dire/before
then
cat /some/dir/after | mail -s "restart" [email protected]
cp /some/dir/after /some/dir/before
fi
(물론) 올바른 가치관을 가지세요.
이는 5분 이내에 두 번의 재부팅이 없다는 것을 의미합니다.
답변2
나는 02:35에 파일의 마지막 줄이 02:30 재시작이 될 것이라고 가정하고 있으므로 필요한 것은 아래와 같은 cron 항목뿐입니다.
*/5 * * * * tail -1 /path/to/file.log | mailx -s "Last restart" [email protected]
이 접근 방식의 단점은 관리자가 02:35, 02:40, 02:45,...에 동일한 이메일을 받게 된다는 것입니다.
답변3
이 시도:
예약 된 일들
*/5 * * * * /path/to/checklog.bash
스크립트
#!/bin/bash
service=$(tail -1 /path/to/logfile | awk '{print $4}')
logdate=$(tail -1 /path/to/logfile | awk '{print $1,$2,$3}')
if test 'find "/path/to/logfile" -mmin -5'
then
echo "$service was restarted on $logdate" | mail -s "Restart notification" [email protected]
fi
답변4
이를 처리하는 보다 안정적인 방법은 염두에 두고 있는 특정 시나리오에 맞게 구축된 도구를 사용하는 것입니다(예: 로그를 모니터링하고 새로 감지된 패턴을 기반으로 이메일 보내기).
압축을 풀고 실행하시면, 모방할 수 있는 실제 사례를 많이 보실 수 있습니다. 집중하고 싶은 한 가지 예는 하나 이상의 다른 로그에서 특정 패턴이 감지될 때마다 특정 이메일 주소로 이메일 알림을 보내는 작업을 해결하는 MODEL13입니다.
./logrobot localhost /var/tmp/logXray autonda /var/log 60m '.*error.*_P_.*fatal.*' '.' 1 1 errchk -ndshow [email protected]
위 명령에서 필요에 따라 변경해야 하는 매개변수는 다음과 같습니다.
'.*실수. *_P_.* 치명적입니다. *'- 여기서 /var/log 디렉터리의 모든 로그는 두 가지 패턴으로 검색됩니다.
/var/로그- 모니터링하려는 로그가 있는 디렉터리입니다. 특정 로그 파일을 모니터링하려면 이를 로그 파일의 절대 경로로 바꾸십시오.
- 1 - 로그에서 항목이 1개 발견되면 경고 알림을 보냅니다.
- 1 - 로그에서 항목이 1개 발견되면 중요한 경고를 보냅니다.
- 경고와 위험이 동일한 경우 로그에서 모니터링된 패턴이 발견되면 검사에서 위험 경고가 발생합니다.
- errchk - 이 특정 로그 검사에 대한 레이블입니다. 적절한 이름을 지정하십시오... 모니터링 중인 로그 유형과 일치하는 이름... 즉 tomcatLogCheck
- 물론 이메일=. 적절한 이메일 주소로 변경하세요.
이는 모니터링되는 로그에 추가된 새 줄만 검색되도록 하는 데 필요한 논리를 포함하고 있기 때문에 더 나은 옵션입니다. 또한 훨씬 더 효율적입니다. 그리고 휴대성이 있어야 합니다.
물론 이메일을 보낼 수 있도록 호스트 컴퓨터에 postfix가 설치되어 있는지 확인하십시오. 여기서 뭔가를 잊어버렸을 수도 있지만 이것이 이 도구가 작동하는 방식의 핵심입니다.