【问题标题】:Kibana does not pick timestamp format epochKibana 不选择时间戳格式纪元
【发布时间】:2019-06-12 08:41:16
【问题描述】:

我正在从 fluent-amqp 插件发送日志,该插件添加了一个字段timestamp,格式为:

{
  "key": "somekey",
  "timestamp": 1547769614,
  "payload": {
    "log": "some logs",
    "stream": "stdout"
  }
}

但是,我无法在 Kibana 的时间选择器中选择时间戳字段以将其设置为 _time。 我试图从名为 timestamp 和 _timestamp 的设置中添加一个 metaField ,但没有成功,即使我可以选择它作为时间选择器,它没有在搜索页面中被解释,导致空日志。

有模板可以添加吗?要打勾的设置?还是我应该直接更新上游插件? 我使用的是 6.5.4 版本。

【问题讨论】:

  • 可以分享一下你索引的映射吗?
  • 当然。抱歉,JSON 无效。对于 3 个主要字段(key、timestamp、payload)看起来像这样: { "myindex": { "mappings": { "-": { "properties": { "key": { "类型”:“文本”,“字段”:{“关键字”:{“类型”:“关键字”,“ignore_above”:256 } } },“有效负载”:{“属性”:{},“时间戳”: { "type": "long" } } } } } }
  • 是的,timestamp 的类型是 long,而它应该是 date。您需要更改映射并重新索引数据。您可能还需要在向其发送数据之前预先配置您的索引。
  • 我应该在发送日志时从 fluentd 执行此操作,还是有办法在 Elasticserach 的任何新索引上自动转换该字段?
  • 您使用的是 fluentd elasticsearch 插件?

标签: elasticsearch kibana kibana-6


【解决方案1】:

我建议创建一个index template,它将用于您的工作人员创建的所有未来索引。

PUT _template/my-index-template
{
  "index-patterns": ["myindex*"],          <--- replace your real index name/pattern here
  "mappings": {
    "-": {
      "properties": {
        "key": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "payload": {
          "properties": {}
        },
        "timestamp": {
          "type": "date"                   <-- this is what changed
        }
      }
    }
  }
}

【讨论】:

  • 我的索引类似于*-*-*,.monitoring-es-* 和其他系统索引也是如此。我真的不能这样指定它们。此外,如果我需要完全定义映射,映射也是相当复杂的,我想我会被困在那个我不想要的特定模式上。还有其他解决办法吗?
【解决方案2】:

我决定分叉 ruby​​ 插件并将纪元时间转换为 Elasticsearch 可读时间格式,例如:"2019-01-21T01:18:39+00:00"。 它运行良好,我可以在 Kibana 中选择该领域。

【讨论】:

    猜你喜欢
    • 2014-10-04
    • 2020-06-19
    • 2018-09-13
    • 1970-01-01
    • 1970-01-01
    • 2018-10-13
    • 2014-01-25
    • 1970-01-01
    • 2021-10-31
    相关资源
    最近更新 更多