collectd尾部插件ExcludeRegex不工作

时间:2016-12-02 16:39:17

标签: tail collectd

第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应用得很好。所以,我认为如果相同的正则表达式,我怀疑可能会出现问题。

为什么不起作用?帮助我。

感谢。

1 个答案:

答案 0 :(得分:0)

以下是github的回答。

感谢您报告此事。但是,它是预期的行为并按预期工作:只能有一个ExcludeRegex设置,如果有更多,则稍后会覆盖以前的设置。

您可以使用正则表达式OR运算符,以实现您的目标:

ExcludeRegex "HTTP/1..\" 404|HTTP/1..\" 404"

或者,更短:

ExcludeRegex "HTTP/1..\" (404|499)"

致以最诚挚的问候,