如何在Kibana可视化中按指定顺序展示日志?
Kibana直方图自定义日志类型展示顺序解决方案
问题原因
Kibana的Terms子桶默认按文档数量或字母顺序排序,不会自动识别业务逻辑的发生顺序,所以出现了你看到的日志类型顺序不符的情况。
解决方案
方法1:通过脚本字段自定义排序权重
创建脚本字段
进入管理 -> 索引模式,找到你使用的日志索引模式,点击脚本字段 -> 添加脚本字段:- 名称:
msg_order - 类型:数字
- 脚本(Painless):
def msg = doc['jsonPayload.msg.keyword'].value; switch(msg) { case 'starting Scheduler': return 1; case 'moving file to a new directory': return 2; case 'moving file failed': return 3; case 'Finish Scheduler': return 4; default: return 0; }
保存该字段。
- 名称:
修改可视化排序规则
回到你的直方图可视化,找到基于jsonPayload.msg.keyword的子桶配置:- 在排序选项中,选择自定义
- 选择刚才创建的
msg_order字段,排序方向设为升序
保存配置后,日志类型就会按你定义的业务顺序展示。
方法2:直接按值列表指定排序顺序
如果不想创建脚本字段,可以直接在子桶配置中指定值的顺序:
- 打开直方图的子桶配置(基于
jsonPayload.msg.keyword的Terms桶) - 在排序选项中,选择按值列表排序
- 按业务发生顺序输入日志类型值:
starting Scheduler, moving file to a new directory, moving file failed, Finish Scheduler - 保存配置,即可按指定顺序展示各日志类型。
额外检查:确保时间戳准确性
如果时间轴上的日志顺序也有问题,需要确认日志的@timestamp字段是实际生成时间而非索引时间:
- 检查索引映射,确保
@timestamp字段正确关联日志的生成时间字段 - 如果日志中的时间字段不是
@timestamp,可以在索引模式中修改时间字段为正确的字段
内容的提问来源于stack exchange,提问作者user10026284
相关产品推荐
相关产品推荐

