collectd尾插件ExcludeRegex不工作
问题描述:
步骤1.collectd尾插件ExcludeRegex不工作
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将无法工作。
我发现通过分别创建单独的匹配并使用相应的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应用得很好。所以,我认为如果相同的正则表达式在其中,我怀疑可能会出现问题。
它为什么不起作用?帮我。
谢谢。
答
以下是github的答案。
感谢您报告此问题。但是,它的行为和预期的工作原理是:只能有一个ExcludeRegex设置,如果有更多,则后面的设置将覆盖以前的设置。
您可以使用正则表达式OR运算符,|,所以实现自己的目标:
ExcludeRegex "HTTP/1..\" 404|HTTP/1..\" 404"
或者更短:
ExcludeRegex "HTTP/1..\" (404|499)"
最好的问候,