我的目标是使用File节拍从不同的服务器收集日志,并使用ElasticSearch和Kibana进行聚合/可视化。暂时,我把罗格斯塔什排除在现场之外。
到目前为止,我已经能够配置File节拍来实时推送日志,并且能够通过Kibana接口确认日志确实被推送到ElasticSearch。
问题:
问题是文件(或ElasticSearch)会自动向索引中添加额外的空字段/属性。
我在Kibana界面上看到的一些字段:
aws.cloudtrail.user_identity.session_context.creation_date
azure.auditlogs.properties.activity_datetime
azure.enqueued_time
azure.signinlogs.properties.created_at
cef.extensions.agentReceiptTime
cef.extensions.deviceCustomDate1
cef.extensions.deviceCustomDate2
cef.extensions.deviceReceiptTime
cef.extensions.endTime
cef.extensions.fileCreateTime
cef.extensions.fileModificationTime
cef.extensions.flexDate1
...它们都是空旷的田野。
当我使用GET /[index]/_mapping检查该索引的映射时,我可以看到~3000个字段,而我并没有真正添加这些字段。我不知道这些字段是如何添加的,以及如何删除它们。
复制:
我使用的Filebeat和ElasticSearch对接图像:
elasticsearch:7.8.0
elastic/filebeat:7.8.0在基本图像的基础上,我将基本配置文件简单地放在下面:
# filebeat.yml
filebeat.inputs:
- type: log
paths:
- /path_to/my_log_file/metrics.log
output.elasticsearch:
hosts: ["http://192.168.0.1:9200"]# elasticsearch.yml
cluster.name: "docker-cluster"
network.host: 0.0.0.0
node.name: node-1
discovery.seed_hosts: ["127.0.0.1"]
cluster.initial_master_nodes: ["node-1"]典型的日志消息如下所示:
2020-07-01 08:40:07,432 - CPUUtilization.Percent:50.0|#Level:Host|#hostname:a78f2ab3da65,timestamp:1593592807
2020-07-01 08:40:07,437 - DiskAvailable.Gigabytes:43.607460021972656|#Level:Host|#hostname:a78f2ab3da65,timestamp:1593592807谢谢
发布于 2020-07-01 10:22:10
当File节拍启动时,它会从公共模式中安装一个包含所有ECS字段的索引模板,这就是为什么在索引映射中看到这么多字段的原因,但这并不是一个真正的问题。
然后,在Kibana界面上,您可以看到表视图(Discover )上的所有“空”字段。但是,如果切换到JSON视图,您将看到这些字段实际上不在文档中。File节拍不会将它们添加到文档中。在Table视图中看到它们的原因是Kibana请求它们(使用docvalue_fields)。只需单击“检查”,就可以看到Kibana发送给Elasticsearch的请求。
所以没什么好担心的真的。
说到您的实际消息,如果您要解析CPUUtilization.Percent:50.0,您实际上可以将其存储到一个名为"system.cpu.total.pct": 50的标准ECS字段中,您可以在Kibana的Metrics应用程序中看到这些值随时间而演变。DiskAvailable.Gigabytes:43.607460021972656也是如此
https://stackoverflow.com/questions/62674530
复制相似问题