一、问题描述

在Kibana上查询生产环境的日志时,发现某个关键字一直无法查询到,怀疑想要的日志被丢弃了,遂登录服务器查询原始日志,果然发现日志存在被丢弃的问题。经定位,在Logstash的日志中发现问题所在:

Limit of total fields 1000 has been exceeded while adding new fileds [4]

在这里插入图片描述

二、问题原因

Elasticsearch的Mapping做了映射保护,为了防止索引中错误的内容导致Mappings爆炸,索引中的最大字段数默认值为1000。这里日志中的某一段内容超出了默认字段数的限制,所以导致这一段日志被丢弃,没有存到elasticsearch中,所以在Kibana上无法查到想要的日志。

三、解决办法

登录Kibana,找到Management中的Dev Tools,点击进入:
在这里插入图片描述
查询问题索引的settings,如下:

GET logstash-p_xxx_..._xxx-2022.05.01/_settings

在这里插入图片描述
调整字段的限制:

PUT logstash-p_xxx_..._xxx-2022.05.01/_settings 
{
"index.mapping.total_fields.limit": 3000
}

成功如下所示:

{
  "acknowledged" : true
}

在这里插入图片描述

四、在Kibana上检查

在Kibana上检查问题是否解决,经测试,问题成功解决:
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐