有没有一种简单的方法可以将噪声条目保留在access_log
文件之外,而不需要通过管道记录到grep -v
执行匹配条件或其他操作的脚本?
我collectd
监控 apache 统计信息,但结果是我收到以下消息:
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 日志运行分析时,他们现在会得到一个条目,该条目与他们想要运行分析的原因并不真正相关(他们不关心由于系统管理员监控而导致的活动)。
答案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