일부 nagios 경고를 시스템에 추가하려고합니다. 일부는 nginx/apache 로그 (또는 해당 로그에서 값을 파싱하는)를 치는 특정 이벤트의 비율을 모니터링합니다. 지금까지 문제에 접근 한 방식 간단한 쉘 스크립트를 사용하여 로그를 25 초 동안 임시 파일에 꼬리말로 붙이고 프로세스를 죽인 다음 임시 파일에 대해 awk 등을 실행합니다. 여기서 목표는 25 초 동안 로그를 "샘플"로 만들어 분석을 수행하는 것입니다.지정된 간격 동안 파일 (또는 유사)을 tail-f하는 방법은 무엇입니까?
이것은 임시 파일로 인해 디스크 IO가 증가하기 때문에 분명히 이상적이지 않습니다. 실제로 원하는 것은 몇 초 후에 파이프를 완전히 종료시키는 "강화 된"tail -f입니다. 즉 :
꼬리 -f - 간격 '5 초'| grep "/ serve"
5 초 동안 로그를 꼬리면서 "/ serve"가있는 모든 행을 표시합니다.
나는 루비 스크립트를 아주 빨리 처리 할 수 있다고 생각하지만,이 작업을 수행하는 데 더 복잡한 방법이 없었는지 확인하고 싶었습니다. 높은 수준에서 마지막 N 초 동안 로그의 샘플을 가져 오는 더 좋은 방법이 있습니까 (아니요, 타임 스탬프를 파싱하지 않을 것임)
timeout -s15 5 tail -f /mnt/log/nginx/nginx-access.log | grep '/ javascripts'| wc -l – diyism