paths:
- /var/log/*.log
我将此作为filebeat
中用于发送日志的路径。
输出是elasticsearch。
output:
elasticsearch:
index: filebeat
日志已经格式化为JSON,我只想要索引来反映日志的来源。在我的场景中,任何人都可以将文件abcd.log
放在logs文件夹中。我希望将这些日志发送到索引filebeat-abcd-19.05.2016
或类似的东西。由于日志已预先格式化,我们不希望其间存在任何logstash。目前,它们采用filebeat-dd.mm.yyyy
格式。基本上我想在两者之间包含文件名。没有logstash我该怎么做?
答案 0 :(得分:0)
我对此用例的解决方案: filebeat(多个探矿者) - > logstash(多重过滤器) - > elasticsearch
答案 1 :(得分:0)
今天用Ingest Pipeline解决了这个问题。需要将处理器链接到类似的内容中:
{
"grok": {
"field": "_source.source",
"patterns": [
"/%{NOSLASH:index_name}.log"
],
"pattern_definitions": {
"NOSLASH": "[^/]+"
}
}
}
},
{
"date": {
"field": "_source.@timestamp",
"target_field": "index_date",
"formats": [
"yyyy-MM-dd'T'HH:mm:ss"
],
"timezone": "your timezone if needed"
}
},
{
"gsub": {
"field": "index_date",
"pattern": "T.*",
"replacement": ""
}
},
{
"set": {
"field": "_index",
"value": "filebeat-{{index_name}}-{{index_date}}"
}
}
首先,从源路径中获取文件名,然后使用格式复制日期,然后使用gsub修剪日期中的时间,然后设置索引名称。
然后,您可以选择删除字段index_name
和index_date
。
还在output
的{{1}}部分中,您需要将输出指向filebeat.yml
而不是pipeline
。