基本信息

案例ID:215382

技术顾问:玉明℡¹⁵⁰¹¹⁵⁸³²¹⁸ - 12年经验 - 保密

联系沟通

微信扫码,建群沟通

项目名称:日志系统kibana日志二级排序

所属行业:企业服务 - 数据服务

->查看更多案例

案例介绍

背景:之前搭建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小时内精准确定人才

微信接收人才推送

关注猿急送微信平台,接收实时人才推送

接收人才推送
联系需求方端客服
联系需求方端客服