有人可以判断 fluidd 在 td-agent.log 文件中引发此错误是否正常吗?
2015-07-31 13:15:19 +0000 [warn]: pattern not match: "- - - [31/Jul/2015:13:15:19 +0000] GET http://172.31.108.218/ HTTP/1.1 200 0 \"-\" \"ELB-HealthChecker/1.0\""
虽然这是一个格式良好的 apache2 日志:
- - - [31/Jul/2015:13:15:19 +0000] GET http://172.31.108.218/ HTTP/1.1 200 0 \"-\" \"ELB-HealthChecker/1.0\"
这是源配置:
<source>
type tail
format apache2
path /var/log/varnish/varnishncsa.log
pos_file /var/log/td-agent/tmp/access.log.pos
tag "apache2.varnish-access"
</source>
我不明白上面出了什么问题。
最佳答案
您可以为 Apache 访问日志设置自己的格式
,而不是寻找某种方法来过滤来自 ELB-HealthChecker 的日志,该格式在前几个字段方面更加灵活。当我从collectd获取/server-status检查(使用它来监控SignalFx)时,我遇到了同样的错误。
像这样设置源:
<source>
type tail
format /^(?<host>[^ ]*(?:\s+[^ ]+)*) [^ ]* (?<user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^ ]*) +\S*)?" (?<code>[^ ]*) (?<size>[^ ]*)(?: "(?<referer>[^\"]*)" "(?<agent>[^\"]*)")?$/
time_format %d/%b/%Y:%H:%M:%S %z
path /var/log/apache2/access.log
pos_file /var/log/td-agent/apache2.pos
tag apache2.log
</source>
允许两条日志行,例如:
172.18.0.2:80 127.0.0.1 - - [08/Aug/2017:19:58:38 +0000] "GET /server-status?auto HTTP/1.1" 200 508 "-" "collectd/5.7.2.sfx0"
以及:
192.168.0.1 - - [28/Feb/2013:12:00:00 +0900] "GET / HTTP/1.1" 200 777 "-" "Opera/12.0"
您可以使用 Fluentular 测试 format
正则表达式匹配.
关于apache - fluidd 上出现奇怪的 "pattern not match"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31747632/