日志系统kibana日志二级排序

企业服务 数据服务 案例ID:215382
玉明℡¹⁵⁰¹¹⁵⁸³²¹⁸
13 年经验· 保密
微信扫码沟通,客服可协助直接对接工程师;如当前档期不合,也可继续推荐相似案例作者。

案例介绍

背景:之前搭建ELK时候经常听开发人员反馈说日志的数据和服务器的日志顺序不一致, 看日志给他们带来许多烦恼

问题分析:kibana向es(elasticsearch)发送请求的时候默认排序为@timestamp字段,然而@timestamp字段的精度是毫秒, 也就是说如果同一毫秒内输出多条日志则在kibana展示的日志就会出现和服务器日志不一致的问题。

解决方案:1 调整日志收集把时间精度调整到微妙,当时确实也尝试过,好像不太容易实现(如果读者有该解决方案可以留言)

2 让kibana展示日志除了@timestamp 排序外在加一个二级排序

方案实施:最终我选用了方案二, 方案说明:

我的采集器为filebeat, filebeat采集日志的时候会增加一个属性叫做offset字段, offset字段标识所读取日志的偏移量(行数), 方案二思路:让kibana请求es的时候除了基于@timestamp外在基于offset排序,那么如果让kibana基于offset做二次排序呢, 实现方式为:拦截kibana 发送到es的请求(_msearch)需改请求内容添加基于offset排序。如何拦截kibana请求报文呢?以下是我的实现方式可供参考:

实现方式一:我们生产环境的kibana是用到了ownhome插件 ,该插件其实就是一个代理服务,通过修改ownhome代码实现添加offset排序,修改如下:

打开own_home源码文件:vim {kibana_home}/plugins/own_home/server/proxy/modify_payload.js
添加如下脚本到该文件的 " function replaceRequestBody(body) { 下
重启kibana

日志系统kibana日志二级排序

企业服务 · 数据服务 案例ID:215382
联系该工程师
微信扫码,建群沟通
作者: 玉明℡¹⁵⁰¹¹⁵⁸³²¹⁸ - 13年经验- 保密

案例介绍

背景:之前搭建ELK时候经常听开发人员反馈说日志的数据和服务器的日志顺序不一致, 看日志给他们带来许多烦恼

问题分析:kibana向es(elasticsearch)发送请求的时候默认排序为@timestamp字段,然而@timestamp字段的精度是毫秒, 也就是说如果同一毫秒内输出多条日志则在kibana展示的日志就会出现和服务器日志不一致的问题。

解决方案:1 调整日志收集把时间精度调整到微妙,当时确实也尝试过,好像不太容易实现(如果读者有该解决方案可以留言)

2 让kibana展示日志除了@timestamp 排序外在加一个二级排序

方案实施:最终我选用了方案二, 方案说明:

我的采集器为filebeat, filebeat采集日志的时候会增加一个属性叫做offset字段, offset字段标识所读取日志的偏移量(行数), 方案二思路:让kibana请求es的时候除了基于@timestamp外在基于offset排序,那么如果让kibana基于offset做二次排序呢, 实现方式为:拦截kibana 发送到es的请求(_msearch)需改请求内容添加基于offset排序。如何拦截kibana请求报文呢?以下是我的实现方式可供参考:

实现方式一:我们生产环境的kibana是用到了ownhome插件 ,该插件其实就是一个代理服务,通过修改ownhome代码实现添加offset排序,修改如下:

打开own_home源码文件:vim {kibana_home}/plugins/own_home/server/proxy/modify_payload.js
添加如下脚本到该文件的 " function replaceRequestBody(body) { 下
重启kibana

相似案例推荐

发布任务

企业点击发布任务,工程师会在任务下报名,招聘专员也会在 1 小时内与您联系确认。

1小时精推人才

需求方专属客服,免费梳理匹配

需求方客服微信二维码
扫码加微信 · 客服人工对接
更多案例
微信沟通 客服 看中这位工程师了?客服帮你 1 小时对接沟通 → ×