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)" 

最好的问候,