일치하는 조건 등을 수행하는 스크립트 access_log
에 로그를 연결하지 않고 파일 에서 노이즈 항목을 유지하는 쉬운 방법이 있습니까 ?grep -v
Apache 통계를 모니터링 collectd
하지만 결과적으로 다음 메시지가 나타납니다.
157.98.65.xxx - - [23/Apr/2014:09:46:32 -0400] "GET /server-status/?auto HTTP/1.1" 200 439 "-" "collectd/4.10.9"
157.98.65.xxx - - [23/Apr/2014:09:46:32 -0400] "GET /server-status/?auto HTTP/1.1" 200 439 "-" "collectd/4.10.9"
Apache 로그에 대해 분석을 실행할 때 이제 분석을 실행하려는 이유와 실제로 관련이 없는 항목을 얻습니다(sysadmin 모니터링으로 인한 활동은 신경 쓰지 않습니다).
답변1
로그 정의에서 및 를 결합할 수 있습니다 SetEnvIf
.env=
Apache 매뉴얼에서는 여기에 인용된 "조건부 로깅"에 대해 설명합니다.
상태 로그
클라이언트 요청의 특성에 따라 액세스 로그에서 특정 항목을 제외하는 것이 편리한 경우도 있습니다. 이는 환경 변수의 도움으로 쉽게 수행할 수 있습니다. 먼저, 요청이 특정 조건을 충족함을 나타내기 위해 환경 변수를 설정해야 합니다. 이는 일반적으로 를 통해 수행됩니다
SetEnvIf
. 그런 다음env=
지시문의 절을CustomLog
사용하여 환경 변수가 설정된 요청을 포함하거나 제외합니다. 몇 가지 예:
# Mark requests from the loop-back interface
SetEnvIf Remote_Addr "127\.0\.0\.1" dontlog
# Mark requests for the robots.txt file
SetEnvIf Request_URI "^/robots\.txt$" dontlog
# Log what remains
CustomLog logs/access_log common env=!dontlog
그것은 덮는다이 섹션의매뉴얼의 내용.
당신은 이와 같은 것을 찾을 것입니다 (테스트되지 않음)
SetEnvIf Remote_Addr "157\.98\.65\.xxx" dontlog
또는
SetEnvIf User-Agent "collectd/4\.10\.9" dontlog