流利的time_key设置不​​起作用

时间:2017-04-18 15:39:25

标签: elasticsearch record fluentd transformer

尝试使用流利的方法将mysql日志集中到弹性搜索中。

我看到的问题是搜索中的时间戳与日志中的时间戳不匹配。

这是我精通的配置:

<source>
  @type tail
  path /logs/mysql/audit.log
  pos_file /var/log/td-agent/audit.log.pos
  tag mysql.audit
  format json
</source>

<match mysql.audit>
  type elasticsearch
  host isolinear-eg.corp.apple.com
  port 9200
  index_name mysql_audit
  include_tag_key true
  logstash_format true
  logstash_prefix mysql_audit
  time_key audit_record.timestamp
  time_format %Y-%m-%dT%H:%M:%S %Z
  flush_interval 10s # for testing
</match>

这是输出:

{
  "_index": "mysql_audit-2017.04.18",
  "_type": "fluentd",
  "_id": "AVuBrutMy6H0rNsJZZHy",
  "_score": null,
  "_source": {
    "audit_record": {
      "name": "Connect",
      "record": "447474053_2017-04-11T22:30:21",
      "timestamp": "2017-04-18T15:29:01 UTC",
      "connection_id": "21450",
      "status": 0,
      "user": "solver",
      "priv_user": "solver",
      "os_login": "",
      "proxy_user": "",
      "host": "",
      "ip": "10.108.251.201",
      "db": "solver"
    },
    "tag": "mysql.audit",
    "@timestamp": "2017-04-18T10:29:02-05:00"
  },
  "fields": {
    "@timestamp": [
      1492529342000
    ]
  },
  "sort": [
    1492529342000
  ]
}

我看到的问题是时间戳与审核记录时间戳不匹配。

1 个答案:

答案 0 :(得分:1)

例如,生成的日志本身具有时间键。 example log format

我们需要在源代码部分中提供time_key键。

<source>
  @type tail
  path /logs/mysql/audit.log
  pos_file /var/log/td-agent/audit.log.pos
  time_key time
  tag mysql.audit
  format json
</source>

如果日志中不存在time_key。 fluentd会将其日志读取时间附加到日志中。

您未在源部分中指定time_key。这就是为什么fluentd不考虑实际日志时间的原因