在流利和流媒体之间丢失数据

时间:2015-09-01 19:41:05

标签: influxdb fluentd

我在流利和流媒体数据丢失之间挣扎。

使用具有此配置的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行。

我已经启用了来自潮流和流利的调试/跟踪日志记录,但到目前为止日志中没有任何有趣的内容。

有什么想法吗?

1 个答案:

答案 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