第1步。
LoadPlugin tail
<Plugin "tail">
<File "/etc/nginx/access.log">
<Match>
Regex "HTTP/1..\" 4"
ExcludeRegex "HTTP/1..\" 404"
ExcludeRegex "HTTP/1..\" 499"
DSType "CounterInc"
Type "counter"
Instance "4xx-excluded-404-and-499"
</Match>
</File>
</Plugin>
我正在使用collectd版本5.5.0。然后,我们尝试使用collectd的尾部插件收集Nginx访问日志的状态代码的度量标准。 但是,如果您尝试使用ExcludeRegex“HTTP / 1 .. \”404和ExcludeRegex“HTTP / 1 .. \”499“,如上所述,'ExcludeRegex”HTTP / 1 .. \“499”将起作用并且ExcludeRegex 404不行。
我发现通过单独创建单独的Matches并使用相应的ExcludeRegex可以很好地工作。以下效果很好。
LoadPlugin tail
<Plugin "tail">
<File "/etc/nginx/access.log">
<Match>
Regex "HTTP/1..\" 4"
ExcludeRegex "HTTP/1..\" 404"
DSType "CounterInc"
Type "counter"
Instance "4xx-excluded-404"
</Match>
<Match>
Regex "HTTP/1..\" 4"
ExcludeRegex "HTTP/1..\" 499"
DSType "CounterInc"
Type "counter"
Instance "4xx-excluded-499"
</Match>
</File>
</Plugin>
然而,如果他们在同一场比赛中,两人都没有用。
此外,access.log的内容遵循以下模式。
127.0.0.1 - - [01/Dec/2016:18:44:15 +0900] "GET /v3/intro HTTP/1.1" 200
127.0.0.1 - - [01/Dec/2016:18:44:15 +0900] "GET /v3/intro HTTP/1.1" 404
127.0.0.1 - - [01/Dec/2016:18:44:15 +0900] "GET /v3/intro HTTP/1.1" 499
第2步。
<Plugin "tail">
<File "/etc/nginx/access.log">
<Match>
Regex "HTTP/1..\" 4"
ExcludeRegex "healthcheck"
ExcludeRegex "HTTP/1..\" 499"
DSType "CounterInc"
Type "counter"
Instance "4xx-excluded-404-and-499"
</Match>
</File>
</Plugin>
其次,我尝试使用上面的配置测试collectd。这一次,我确认Multi line ExcludeRegex应用得很好。所以,我认为如果相同的正则表达式,我怀疑可能会出现问题。
为什么不起作用?帮助我。
感谢。
答案 0 :(得分:0)
以下是github的回答。
感谢您报告此事。但是,它是预期的行为并按预期工作:只能有一个ExcludeRegex设置,如果有更多,则稍后会覆盖以前的设置。
您可以使用正则表达式OR运算符,以实现您的目标:
ExcludeRegex "HTTP/1..\" 404|HTTP/1..\" 404"
或者,更短:
ExcludeRegex "HTTP/1..\" (404|499)"
致以最诚挚的问候,