Шаг 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. Затем мы попытались собрать метрики для кода состояния журнала доступа Nginx с помощью плагина collectd tail. Однако, если вы попытаетесь использовать 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 с приведенной выше конфигурацией. На этот раз я подтвердил, что многострочный ExcludeRegex применяется хорошо. Так вот, я думаю, что если в нем тот же Regex, подозреваю, что может возникнуть проблема.
Почему это не работает? Помоги мне.
Спасибо.