我在流利和流媒体数据丢失之间挣扎。
使用具有此配置的fluent-plugin-influxdb插件:
<source>
id test_syslog
type syslog
port 42185
protocol_type tcp
time_format %Y-%m-%dT%H:%M:%SZ
tag test_syslog
format /^(?<time>[^ ]*) (?<fastly_server>[^ ]*) (?<log_name>[^ ]*) (?<host>[^ ]*) ([^ ]*) ([^ ]*) (?<http_method>[^ ]*) (?<http_request>[^ ]*) (?<http_status>[^ ]*) (?<cache_status>[^ ]*) (?<uuid>[^ ]*) *(?<device_model>.*)$/
</source>
<match test_syslog.**>
type copy
<store>
type file
path /var/log/td-agent/test_syslog
</store>
<store>
id test_syslog
type influxdb
dbname test1
flush_interval 10s
host localhost
port 8086
remove_tag_suffix .local0.info
</store>
</match>
比较文件输出和Influxdb中的数据时,我发现:
user@ip-xxx-xxx-xxx-xxx:/var/log/td-agent# curl -G 'http://localhost:8086/query' --data-urlencode "db=test1" --data-urlencode "q=SELECT COUNT(host) FROM log_data" ; cat test_syslog.20150901.b51eb4653c54c63e7 | wc -l
{"results":[{"series":[{"name":"log_data","columns":["time","count"],"values":[["1970-01-01T00:00:00Z",582]]}]}]}2355
日志中有2355行,但数据库中只有582行。
我已经启用了来自潮流和流利的调试/跟踪日志记录,但到目前为止日志中没有任何有趣的内容。
有什么想法吗?
答案 0 :(得分:1)
本周偶然发现了这个问题。 就我而言,由于重复点,日志会丢失。
我正在使用流利的v0.12,它只支持精度到秒。新版本中提供了亚秒级精度,请参阅https://github.com/fluent/fluentd/issues/461。因此,使用相同的标签和相同的时间戳进行相同的测量非常容易
解决方案是使用&#34; sequence_tag&#34;在类型的涌入类似:
@type influxdb
host {{INFLUXDB_HOST}}
port {{INFLUXDB_PORT}}
dbname {{INFLUXDB_DBNAME}}
sequence_tag sequence
具有相同时间戳的记录将包含其他标记,如:
time requestDurationMillis sequence success testClients testGroup testRunId
---- --------------------- -------- ------- ----------- --------- ---------
2018-01-17T11:09:13Z 530 0 1 2 warmup 20180117/130908
2018-01-17T11:09:13Z 529 1 1 2 warmup 20180117/130908