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)"
此致,
步骤 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)"
此致,