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

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

#作者:程宏斌

文章目录

  • 一、现象确认
    • (一)是完全写不进去,还是写入变慢?
      • 1.1.1 完全写不进去的问题现象:
      • 1.1.2 写入变慢问题现象:
    • (二)是所有日志文件都受影响,还是部分路径/采集源有问题?
      • 1.2.1 检查配置文件中input是否正确
      • 1.2.2 查看Filebeat的harvester状态(是否正常采集各文件)
      • 1.2.3 临时人工追加日志,测试是否被采集
  • 二、网络与资源排查
    • (一)Filebeat节点排查
      • 2.1.1 排查容器资源
  • kubectl top pod -n <namespace> | grep filebeat
      • 2.1.2 排查宿主机资源瓶颈
    • (二)ElasticSearch节点排查
      • 2.2.1 磁盘I/O是否饱和
      • 2.2.2 线程池是否阻塞(写入慢核心指标)
  • curl -XGET "http://<es_host>:9200/_nodes/stats/thread_pool?pretty"
      • 2.2.3 GC是否频繁导致停顿
      • 2.2.4 节点是否压力过高(负载)
      • 2.2.5 Heap使用是否接近上限(影响GC)
    • (三)排查网络链路
      • 2.3.1 使用ping检查基本连通性或网络抖动
      • 2.3.2 使用telnet或nc检查端口可达性(连通性)
      • 2.3.3 使用mtr或traceroute诊断链路质量
  • mtr -rwzbc 100 <es_host>
      • 2.3.4 Filebeat自身日志观察网络错误

一、现象确认

(一)是完全写不进去,还是写入变慢?

1.1.1 完全写不进去的问题现象:

  1. filebeat.events.added的数值呈现正常增长,filebeat.output.events.acked采集正常,但写入ElasticSearch失败。
  2. Filebeat日志中有大量:connectionre fused、403、429、bulk request failed明确是写入失败。
  3. ElasticSearch中无对应索引、indextemplate未配置、写入报错reject或auth entication denied。
  4. publish_failed、retrying提示频繁确认是完全无法写入。

1.1.2 写入变慢问题现象:

  1. filebeat.events.added和acked都在增加,但增速慢或者正在写,吞吐下降,比如30秒只写了几条,而业务实际每秒几百条,可能写入瓶颈或pipeline堵塞。
  2. Filebeat日志中bulk成功率下降,或出现flushtimeout Output队列堆积,或者es写入慢。
  3. ElasticSearch ingores est pipe line存在处理耗时、mapping冲突,可能是es处理链路问题。
  4. Filebeat CPU/内存占用较高,或pipe line active持续较大,可能是资源瓶颈或处理慢导致发送阻塞。

(二)是所有日志文件都受影响,还是部分路径/采集源有问题?

1.2.1 检查配置文件中input是否正确

filebeat.inputs:
- type:log
enabled:true
paths:
- /var/log/app1/*.log
- /var/log/app2/*.log
  1. 检查是否存在路径拼写错误、权限问题。
  2. 某些路径是否实际没有匹配到文件(可用ls /var/log/app2/*.log验证)。
  3. 若用了exclude_path/ignore_older/multiline,是否误过滤了文件。

1.2.2 查看Filebeat的harvester状态(是否正常采集各文件)

在Filebeat的日志中搜索以下关键词,每30秒有一次统计:

"filebeat":{
"harvester":{
"files":{
"xxx":{
"name":"/var/log/test.log",
"read_offset":80,
"size":80,
"last_event_timestamp":"..."
}
},
"open_files":11,
"running":11,
"started":1
}
}

重点看:

  • 每个文件是否都在列表中(说明都被采集)。
  • read_offset是否在增长(说明该文件有新内容被读取)。
  • 是否有start_time但一直没last_event_timestamp(可能没新日志)。
  • 某些文件不出现,可能是没被采集or被忽略了(看include/exclude)。

1.2.3 临时人工追加日志,测试是否被采集

可对每个配置路径下的日志执行:

echo"test-$(date)">>/var/log/app1.log
echo"test-$(date)">>/var/log/app2.log

然后观察filebeat的metrics日志中是否有对应:

"filebeat.events":{
"added":2,
"done":2
}
"filebeat.output.events.acked":2

或者在目标ElasticSearch中检查是否收到了新的写入。

(三)开始时间点是否明确?是否与版本发布、配置变更、网络波动相关?
1.3.1 ElasticSearch监控(IndexingRate)是否有下降趋势?
可以看到采集量是否在某个时间点突然下降。

1.filebeat日志中是否有突发的error/warning?
kubectl logs -f -nlogging filebeat-name

二、网络与资源排查

(一)Filebeat节点排查

2.1.1 排查容器资源

  1. 是否出现CPU、内存瓶颈(尤其在高并发场景),查看容器资源使用情况

kubectl top pod -n | grep filebeat

  1. 查看容器资源限制
    确认filebeat容器是否设置了资源限制过低

2.1.2 排查宿主机资源瓶颈

  1. top/htop查看实时使用
# top -p $(pgrep -d',' -f filebeat)

或使用htop看CPU核心压力分布

  1. 检查系统总体资源
# free-m       #内存占用情况
# vmstat 15    #CPU、内存、IO使用趋势
# iostat -x 15 #看IO等待时间
  1. 查看filebeat占用
# ps aux | grep filebeat

关注%CPU和%MEM列。

(二)ElasticSearch节点排查

2.2.1 磁盘I/O是否饱和

  1. 是否有磁盘IO饱和、线程池阻塞、GC频繁等异常?通过OS工具排查
# iostat -x 15

%util 磁盘利用率 >80%→IO饱和
await IO请求等待时间(ms) >10ms→可能有磁盘瓶颈
r/s,w/s 读/写次数,持续高说明负载大

  1. ElasticSearch API查看磁盘使用
# curl -XGET "http://<es_host>:9200/_cat/nodes?v&h=ip,disk.used_percent,disk.avail"

如果磁盘使用率接近85%以上,ElasticSearch会触发disk water mark限流机制,导致写入受阻。

2.2.2 线程池是否阻塞(写入慢核心指标)

使用_nodes/stats/thread_pool查看写入线程池状态:

curl -XGET “http://<es_host>:9200/_nodes/stats/thread_pool?pretty”

重点看这些线程池的状态:write、index、bulk,一旦bulk.rejected持续增长,则filebeat发过来的写入被拒绝了,直接影响写入吞吐。

2.2.3 GC是否频繁导致停顿

  1. # curl -s http://<es_host>:9200/_nodes/stats/jvm?pretty
    重点字段:
jvm.gc.collectors.old.collection_count
jvm.gc.collectors.old.collection_time_in_millis

观察:
是否频繁触发Old GC?
每次Old GC是否耗时较高(>500ms)

  1. 用jstat工具(JVM原生命令):
# jstat -g cutil <pid> 1s

频繁Full GC且内存回收率低,可能说明内存设置不合理或内存泄漏。

2.2.4 节点是否压力过高(负载)

# curl -XGET "http://<es_host>:9200/_nodes/stats/os?pretty"

查看每个节点的load_average是否超过实际CPU核心数。如果负载飙高,也会影响写入。

2.2.5 Heap使用是否接近上限(影响GC)

# curl -XGET http://<es_host>:9200/_nodes/stats/jvm?pretty

重点关注:

"heap_used_percent":25,
"heap_max_in_bytes":32212254720

Heap使用率接近90%,很可能引发频繁GC,影响吞吐。

(三)排查网络链路

是否有抖动(ping、telnet检查连通性、丢包率)

2.3.1 使用ping检查基本连通性或网络抖动

# ping <es_host> 

2.3.2 使用telnet或nc检查端口可达性(连通性)

# telnet <es_host> 9200

# nc -zv <es_host> 9200

能成功连接说明端口通畅。若连接超时或失败,存在防火墙、ACL或网络故障问题。

2.3.3 使用mtr或traceroute诊断链路质量

使用方法:

mtr -rwzbc 100 <es_host>

分析链路中各跳的延迟、丢包率,是否集中在某一跳,是否网络设备质量不佳。

2.3.4 Filebeat自身日志观察网络错误

查看Filebeat日志中是否有类似如下报错:

  1. connection refused
  2. dial tcp timeout
  3. i/o timeout
  4. failed to publish events: client is not connected
    这些通常意味着网络连接中断、ElasticSearch异常拒绝连接或网络抖动引发重试。
http://www.dtcms.com/a/418912.html

相关文章:

  • 网站开发进度安排文档青岛关键词优化排名
  • C# TCP 服务端与客户端代码分析与补充
  • 族蚂建站郴州网站建设费用价格
  • 对象分配在哪块内存?
  • AI Agent智能体如何突破“听懂却做不好”困局?多模态技术打通全链路
  • 图卷积网络 (GCN)
  • JMeter中常用的配置优化
  • 网站怎样做优化调整深圳vi设计深圳vi设计公司
  • 做教育培训网站需要资质么网站对联广告图片
  • 《Muduo网络库:实现Channel通道以及Poller抽象基类》
  • 安全系统架构
  • 中国画廊企业网站模板thinkphp做视频网站
  • C++ 位运算 高频面试考点 力扣 268. 丢失的数字 题解 每日一题
  • 【展厅多媒体】解析VR虚拟驾驶实现多场景自由切换
  • 网站建设吉金手指专业11青海省高等级公路建设管局网站
  • 厦门北京网站建设公司怎样给一个公司做网站
  • 58.Nginx的反向代理和负载均衡
  • 阿里云函数计算 AgentRun 全新发布,构筑智能体时代的基础设施
  • 做营销型网站价格wordpress 考试系统
  • 黄金网站app视频播放画质选择人力资源网站建设计划书
  • 我国省级档案网站建设状况wordpress插件events
  • 【CSS】flex布局
  • 【论文阅读】具身人工智能:从大型语言模型到世界模型
  • 【论文阅读】Segment Anything
  • 大连网站制作仟亿科技wordpress免费网站模板下载
  • 商城网站开发的任务书网址大全2345
  • 八、安装 Hadoop
  • 华为电脑 银河麒麟系统 使用CrossOver安装微软Office2016
  • 设计模式(C++)详解——迭代器模式(3)
  • 做58网站怎么赚钱吗公司起名字大全免费四个字