当前位置: 首页 > news >正文

Filebeat写ElasticSearch故障排查思路(下)

#作者:程宏斌
接上篇:链接: link

文章目录

  • 三、Filebeat组件排查
    • (一)配置检查
      • 3.1.1 是否启用了有效的输入配置
      • 3.1.2 output输出配置检查
    • (二)日志检查
      • 3.2.1 是否有报错日志(如connection relastic searchet、timeout、bulkfail、403、429等)?
      • 3.2.2 filebeat采集状态
      • 3.2.3 Harvester状态(每个日志文件的读取状态)
      • 3.2.4 Output(ElasticSearch写入状态)
  • 四、ElasticSearch组件排查
    • (一)配置检查
      • 4.1.1 集群健康状态
      • 4.1.2 索引配置(如字段限制、刷新间隔)
  • curl -X GET "localhost:9200/my-index/_settings"
      • 4.1.3 磁盘空间和资源使用
      • 4.1.4 安全设置(如用户认证、权限)
      • 4.1.5 索引模板和映射
    • (二)日志检查
  • 五、修复建议

三、Filebeat组件排查

(一)配置检查

3.1.1 是否启用了有效的输入配置

filebeat.inputs:

  - type: logenabled: truepaths:- /var/log/*.log

(1)检查是否 enabled: true。
(2)paths是否正确(是否存在文件、路径通配是否合理)。

3.1.2 output输出配置检查

(1)hosts es地址是否正确,能否连通?
(2)username/password是否有写权限?认证方式是否匹配?
(3)ssl.*是否启用了SSL,证书是否配置完整?
(4)pipeline若配置了Ingest Pipeline,pipeline是否存在且有效?
(5)index索引是否符合命名规范、无冲突?
(6)bulk_max_size是否设置过小导致频繁 flush(默认 50)
(7)并发worker数是否合理?(默认 1)

(二)日志检查

3.2.1 是否有报错日志(如connection relastic searchet、timeout、bulkfail、403、429等)?

3.2.2 filebeat采集状态

"filebeat": {"events": {"added": 2417,"done": 2417},

added:采集到的事件数
done:已处理完成的事件数
说明filebeat已成功处理这2417条日志。

3.2.3 Harvester状态(每个日志文件的读取状态)

"harvester": {"files": {..."/var/log/dnf.log": {"read_offset": 564955,"size": 564955,"last_event_published_time": "...",...}},"open_files": 6,"running": 6,"started": 6
}

有6个文件在被采集,且都有read_offset和 last_event_published_time,没有卡死或跳过,说明文件被正常读取和处理。

3.2.4 Output(ElasticSearch写入状态)

"output": {"type": "ElasticSearch","events": {"acked": 2391,"total": 2391},"write": {"bytes": 1962961}
}

acked = total表示ElasticSearch成功确认写入约2MB数据,若有问题,通常会看到retry、failures数值上升,但这里没有。
整理日志检查项:

在这里插入图片描述

四、ElasticSearch组件排查

(一)配置检查

在检查es的配置时,关注以下几个方面:

4.1.1 集群健康状态

# curl -X GET "localhost:9200/_cluster/health?pretty"
  • 绿色 (green):所有分片都分配并且副本分片也存在。
  • 黄色 (yellow):所有分片都已分配,但副本分片未分配(可能因为只有一个节点)。
  • 红色 (red):有分片没有分配。
  • 如果集群的状态为red,需要排查分片分配、节点故障或其他问题。

4.1.2 索引配置(如字段限制、刷新间隔)

  1. ElasticSearch的index.mapping.total_fields.limit限制
    如果一个索引的字段数目过多,可能会超过ElasticSearch的默认限制index.mapping.total_fields.limit,从而导致写入失败。可以检查并增加此限制。
  2. 查看当前的限制:
# curl -X GET "localhost:9200/_settings"

如果需要增加字段限制,可以修改ElasticSearch.yml中的配置,或者为特定索引设置更高的字段限制:

# curl -X PUT "localhost:9200/my-index/_settings" -H 'Content-Type: application/json' -d '{"settings": {"index.mapping.total_fields.limit": 2000}
}'
  1. ElasticSearch的index.translog.durability配置
    ElasticSearch会使用事务日志(translog)来确保数据一致性。如果index.translog.durability配置不当,可能导致数据丢失或写入失败。通常,默认的translog.durability设置为async,如果遇到写入问题,可以考虑调整此设置。

  2. 查看当前设置:

# curl -X GET "localhost:9200/_settings"

修改设置为async(如果它是request,可能导致每个请求都等待写入确认):

# curl -X PUT "localhost:9200/my-index/_settings" -H 'Content-Type: application/json' -d '{"settings": {"index.translog.durability": "async"}
}'
  1. ElasticSearch的index.refresh_interval配置
    如果发现写入操作后,数据无法立即在搜索中显示,可以检查index.refresh_interval。默认情况下,它设置为1秒,如果配置为较长的时间,可能会影响数据的可见性。
    查看当前设置:

curl -X GET “localhost:9200/my-index/_settings”

如果需要调整refresh_interval,可以将其设置为1s:

# curl -X PUT "localhost:9200/my-index/_settings" -H 'Content-Type: application/json' -d '{"settings": {"index.refresh_interval": "1s"}
}'

4.1.3 磁盘空间和资源使用

  1. 如果ElasticSearch的磁盘空间不足,集群可能会设置索引为read-only状态,导致无法写入数据。检查磁盘空间并确认是否有足够的空间。
  2. 确认索引是否处于只读状态:
# curl -X GET "localhost:9200/_cat/indices?v"
  1. 如果某个索引处于read_only状态,可以通过以下命令解除只读状态:
# curl -X PUT "localhost:9200/my-index/_settings" -H 'Content-Type: application/json' -d '{"settings": {"index.blocks.read_only": null}
}'

4.1.4 安全设置(如用户认证、权限)

  1. 如果启用了ElasticSearch的安全功能(如X-Pack或其他认证方式),确保filebeat有正确的权限来写入数据。检查以下配置:

output.es.username 和 output.es.password确保在filebeat配置中使用了正确的用户名和密码。

  1. 检查ElasticSearch用户的角色,确保其有写入权限。如果使用了角色基础访问控制(RBAC),确保filebeat的用户有访问写入的权限。
output.es:hosts: ["http://localhost:9200"]username: "elastic"password: "password"

4.1.5 索引模板和映射

elsticsearch可能会使用模板来自动创建索引。如果filebeat的日志字段与现有模板不兼容,可能导致写入失败。可以查看ElasticSearch的模板配置,并确保与filebeat的数据结构兼容。
查看索引模板:

# curl -X GET "localhost:9200/_template/*?pretty"
如果需要修改模板或重新加载模板,可以使用以下命令:
# curl -X PUT "localhost:9200/_template/filebeat?pretty" -H 'Content-Type: application/json' -d '{"template": {"mappings": {"properties": {"message": { "type": "text" },"timestamp": { "type": "date" }}}}
}'

(二)日志检查

(1)index read-only/allow delete 磁盘位过高,索引被自动设置为只读
(2)mapper_parsing_exception 索引字段类型冲突
(3)unauthorized/forbidden 权限或认证配置错误
(4)circuit_breaking_exception 内存不足,超过JVM heap限制,写入被中断
(5)too_many_fields_exception 字段数量超过默认限制(默认1000)
(6)rejected execution 写入速率过高,线程池爆满
(7)bulk request failed 批量写入失败(可能是mapping错误或索引问题)

五、修复建议

在这里插入图片描述

http://www.dtcms.com/a/418122.html

相关文章:

  • 禅道数据还原
  • 货架 网站建设 牛商网网站设计目的与规划怎么写
  • 基于STM32设计的环境监测系统(华为云IOT)_300
  • OPPO手机“绿线”问题争议,高价等于高端,何以分食iPhone市场?
  • 国产之光!金仓数据库KingbaseES Oracle兼容性深度体验大赏
  • wordpress付费插件网站垂直门户网站的盈利模式探讨
  • Navicat 技术指引 | KingbaseES 逆向工程与正向工程
  • C#:将Excel转换为HTML时将图像嵌入HTML中
  • 滨州医学院做计算机作业的网站电商网站 模板
  • 访问控制、用户认证、https
  • 大语言模型在金融风控中的应用
  • 深圳培训公司网站建设辽宁市营商环境建设局网站
  • Activity 管理工具类(兼容 Android 16+ / API 16)
  • 【2026计算机毕业设计】基于Springboot的Android校园周边美食汇系统
  • 网站换主推关键词会怎么样网站建设年度报告
  • 软装设计公司网站网站设计怎么做背景颜色
  • 陕西网站建设公司找哪家网站建设需要花多少钱
  • 开封做网站公司导航网站备案
  • 如何判断网站程序使用asp还是php网站开发 架构设计
  • 网站开发 北京外包公司文档生成器app
  • 淘宝京东网站建设目的查找全国免费网站建设
  • wordpress网站前台密码网页设计一个网站
  • 外链网站 风险wordpress官方中文主题下载
  • 响应式网站建设源码国外的平面设计网站
  • 网站开发现在怎么样263企业邮箱修改密码
  • 佛山电商网站制作团队上海关键词优化排名软件
  • 建设保护动物网站的素材做电影网站犯法
  • 网站建设咨询公网站关键词选择
  • 文本文档做网站怎么加图片聊天软件开发厂家有哪些
  • 在线商城网站备案郑州网络营销哪个好