问题是将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。因为它是一种重量很轻的解决方案,所以这里不需要中间聚合。
答案 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)