如何在Open Distro聚合中添加事件的完整日志?
将完整日志纳入Open Distro聚合功能的实现方法
1. 先把完整日志转为可聚合的字段
Open Distro的聚合功能只能基于字段操作,所以首先得把完整日志内容存入一个明确的字段中,常见采集工具的配置方式如下:
- 用Filebeat的话:默认情况下,Filebeat会把整条日志内容自动存入
message字段。如果你的日志没有自动生成这个字段,可在filebeat.yml的input配置里添加强制映射:
这样就会把完整日志内容存入顶级字段filebeat.inputs: - type: log paths: - /path/to/your/logs/*.log fields: full_log: "${message}" fields_under_root: truefull_log里。 - 用Logstash的话:如果是通过Logstash中转,可在filter阶段添加mutate插件,把完整日志内容写入指定字段:
这里的filter { mutate { add_field => { "full_log" => "%{message}" } } }message是Logstash默认接收的完整日志内容字段,按需替换成你实际的原始日志字段即可。
2. 确保字段在索引中支持聚合
把日志写入Open Distro后,需要检查字段的映射类型:
- 如果字段是
text类型,默认是关闭fielddata的,无法直接聚合。你需要修改索引映射,给该字段开启fielddata,或者添加一个keyword子字段:
注意:开启fielddata会占用较多内存,如果日志内容很长,更推荐用PUT /your_index/_mapping { "properties": { "full_log": { "type": "text", "fielddata": true, "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } } } }keyword子字段(比如full_log.keyword)来做聚合,不过要根据日志长度调整ignore_above的值。
3. 在Open Distro中使用该字段做聚合
完成上述配置后,就可以在Open Distro的可视化或Discover模块里使用这个字段创建聚合了:
- 比如在Visualize中创建一个Terms聚合,选择
full_log或full_log.keyword作为聚合字段,就能统计不同完整日志内容的出现次数; - 如果是做数值聚合(比如统计日志长度),可以用Scripted字段基于
full_log计算长度,再做聚合。
内容的提问来源于stack exchange,提问作者amy
相关产品推荐
相关产品推荐

