collectd tail 插件 ExcludeRegex 不工作

collectd tail plugin ExcludeRegex Not Working

步骤 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 的 tail 插件收集 Nginx 访问日志状态代码的指标。 但是,如果您尝试使用 ExcludeRegex "HTTP / 1 .. \" 404 和 ExcludeRegex "HTTP / 1 .. \" 499 "as above, '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 应用得很好。所以,我认为如果里面有相同的Regex,我怀疑可能会出现问题。

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

谢谢。

以下是github的回答。

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

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

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

或者,更短:

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

此致,