使用自定义_type和_id从Filbeat推送到Elasticsearch

时间:2017-03-21 21:40:23

标签: filebeat

问题是将Filebeat收集的json日志推送到具有已定义的_type和_id的Elasticsearch。默认弹性_type是" log"和_id是smth。喜欢" AVryuUKMKNQ7xhVUFxN2"。

我的日志行:

 {"unit_id":10001,"node_id":1,"message":"Msg ..."}

Elasticsearch中的所需记录:

"hits" : [ {
    "_index" : "filebeat",
    "_type" : "unit_id",
    "_id" : "10001",
    ...
    "_source" : {        
        "message" : "Msg ...",
        "node_id" : 1,
        ...
    }
} ]

我知道如何使用Logstash,只需使用document_id => "%{UNIT_ID}"和document_type => " UNIT_ID"在输出部分。目标是仅使用Filebeat。因为它是一种重量很轻的解决方案,所以这里不需要中间聚合。

2 个答案:

答案 0 :(得分:2)

您可以使用Filebeat中的document_type选项设置自定义_type。 从版本5.x开始,无法直接在Filebeat中设置_id

filebeat.prospectors:
- paths: ['/var/log/messages']
  document_type: syslog

您可以使用Elasticsearch Ingest Node功能设置_id字段。您需要使用script processor将事件中的值复制到_id字段中。一旦定义了管道,您就会告诉Filebeat使用output.elasticsearch.pipeline配置选项将其数据发送到该管道。

答案 1 :(得分:0)