ELK日志平台查看上下文报错问题

简介

使用ELK日志平台,为了查询相关的关键字段的日志上下文,kibana提供一个搜索上下文的方法。
对于某些应用程序,检查围绕特定事件的文档窗口可能很有用,上下文视图允许你仅对配置为包含基于时间的事件的索引模式进行此操作。

查询上下文的方法

要显示围绕锚文档的上下文,单击文档表条目左边的展开按钮,然后单击View surrounding documents链接。
如下图:
ELK日志平台查看上下文报错问题

上下文内容展示

ELK日志平台查看上下文报错问题
能调节上下文查询,通过筛选的日志上下文内容

但查看上下文的过程中往往容易出现**Failed to load the anchor document**问题

报错情况图如下:

ELK日志平台查看上下文报错问题
以上情况虽然可以使用多刷新页面解决问题,但通常耗时且浪费时间,得不到有效的解决,会浪费使用人员的时间。

解决方法:

通过多次测试,把问题初步解决了,归纳总结方法,如下:
1.如果ELK中kibana不能直接用外网访问,需要通过lvs或者nginx或者haproxy等方法访问,需要在第7层转发请求,不能使用第4层转发

2.时间戳问题,尽量不要修改相关的默认时间戳,不然定位容易出问题

3.检索的索引尽量及时清除,量太大会影响定位

4.修改kibana配置文件里面关于elasticsearch.requestTimeout的参数,把参数值调大

5.在kibana内的management—>Advanced Settings —> context:tieBreakerFields选项,在context:tieBreakerFields参数内添加区别于时间戳的有增值性的字段为次要锚点

在 time字段值相等的情况下,可以使用 Management > Advanced Settings中的高级设置 context:tieBreakerFields进行配置,该高级设置默认为_doc字段。这个设置的值可以是一个逗号分隔的字段名列表,当将要显示上下文时,将按顺序检查该列表是否合适,然后使用第一个合适的字段作为分界字段,如果字段存在并可在上下文基于的索引模式中进行排序,则字段是合适的。
虽然不是必需的,但建议只使用具有doc值的字段,以实现良好的性能,并避免不必要的字段数据使用,适用字段的常见示例包括日志行号、单调递增计数器和高精度时间戳。

产生问题的原因:

1.ELK定位上下文情况是把时间戳作为锚点处理的,如果日志在同一时间内大量输出日志,则同时间内的日志会有多条,会影响用时间戳为锚点的查询上下文的方法
2.前端负载反向代理到后台时由于使用第4层的tcp代理,没法相应kibana的大部分请求。