向fluentd-forwarder-cm添加Elasticsearch主机后Kibana健康检测失败求助
故障根因分析
你遇到的三个问题属于连锁故障,核心根因为Elasticsearch集群完全不可用,上下游故障逻辑如下:
- Elasticsearch服务无响应,导致集群内任意Pod访问ES地址超时
- Kibana强依赖Elasticsearch做数据存储和查询,ES不可用导致Kibana服务异常返回503,就绪探针检测不通过
- Ingress后端绑定的Kibana服务没有就绪的端点,因此对外访问返回503错误
故障触发原因:你更新Fluentd配置前,Fluentd未正确配置ES输出,日志不会写入ES,ES处于低负载状态可正常运行。更新配置后Fluentd开始将全量容器日志(包括历史日志,你配置了read_from_head: true)批量写入ES,但你最初配置的ES资源规格极低(JVM堆仅128M、内存上限512M、存储仅1G),完全扛不住写入压力,直接被打挂。
排查步骤
- 查看Elasticsearch Pod运行状态,确认是否处于CrashLoopBackOff、Pending等异常状态
kubectl get pods -n logging -l app=elasticsearch-master
- 查看Elasticsearch Pod运行日志,确认具体报错(大概率为OOM内存溢出、磁盘占满、JVM堆溢出)
kubectl logs -n logging <替换为实际ES Pod名称>
- 检查Elasticsearch PVC磁盘使用情况,确认1G存储是否被日志占满
kubectl exec -n logging <替换为实际ES Pod名称> -- df -h
- 检查Elasticsearch服务端点,确认是否无就绪IP导致访问超时
kubectl get endpoints -n logging elasticsearch-master
修复方案
第一步:扩容Elasticsearch资源,解决核心性能不足问题
更新Elasticsearch的values.yml配置,提升资源规格:
# JVM堆至少调整为1G,注意堆大小不要超过Pod内存上限的一半,也不要超过32G esJavaOpts: "-Xmx1g -Xms1g" # 提升Pod资源配额 resources: requests: cpu: "500m" memory: "2Gi" limits: cpu: "2000m" memory: "2Gi" # 扩容存储,根据实际日志保留需求调整,建议不低于20G volumeClaimTemplate: accessModes: [ "ReadWriteOnce" ] storageClassName: default resources: requests: storage: 20Gi
执行helm upgrade更新ES配置:
helm upgrade elasticsearch elastic/elasticsearch -f values.yml -n logging
第二步:优化Fluentd配置,避免写入压力冲击ES
- 修改
fluent-forwarder-cmConfigMap,临时关闭历史日志读取,先仅消费新产生的日志:将read_from_head true改为read_from_head false - 调整Fluentd输出缓冲配置,降低写入频率,避免批量写入压垮ES:
<buffer> @type file path /opt/bitnami/fluentd/logs/buffers/logs.buffer flush_thread_count 4 flush_interval 30s retry_limit 10 retry_wait 2s </buffer>
- 配置更新后重启Fluentd Pod生效:
kubectl rollout restart daemonset/statefulset <替换为实际Fluentd工作负载名称> -n logging
第三步:恢复Kibana服务
Elasticsearch恢复正常后,重启Kibana Deployment即可:
kubectl rollout restart deployment kibana-kibana -n logging
验证方法
- 执行
curl elasticsearch-master.logging.svc.cluster.local:9200,确认正常返回ES的JSON响应 - 执行
kubectl get pods -n logging -l app=kibana,确认Kibana Pod处于Running状态且就绪探针通过 - 访问
https://logs.example.in,确认可正常打开Kibana仪表盘
内容的提问来源于stack exchange,提问作者Sujeet
相关产品推荐
相关产品推荐

