You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EKS DaemonSet中Fluent-Bit存活探针无日志输出问题排查

问题分析与解决方案

为什么看不到健康检查消息?

Kubernetes的exec类型存活探针是由kubelet直接在容器内启动独立进程执行的,这个进程的标准输出/错误并不会接入容器主进程的IO流。而Fluent-Bit默认采集的是容器主进程的stdout/stderr或指定日志文件内容,因此你无法在日志中看到探针的echo输出。

更优实现方式

方式一:利用Fluent-Bit内置HTTP健康端点(推荐)

Fluent-Bit默认在2020端口提供HTTP健康检查接口,直接用httpGet类型探针替代exec探针,同时可配置Fluent-Bit采集健康检查请求日志:

1. 更新DaemonSet的探针配置

livenessProbe:
  httpGet:
    path: /
    port: 2020
  periodSeconds: 60
  initialDelaySeconds: 600

2. 配置Fluent-Bit采集健康检查日志

在Fluent-Bit的配置文件中添加HTTP输入捕获健康检查请求:

[INPUT]
    name              http
    listen            0.0.0.0
    port              2020
    tag               health.check

# 配置OUTPUT将该日志输出到目标存储(如CloudWatch、ES等)
[OUTPUT]
    name              cloudwatch
    match             health.check
    region            <你的集群区域>
    log_group_name    /aws/eks/fluent-bit/health-check
    log_stream_prefix fluent-bit-

方式二:将探针输出写入日志文件并采集

如果坚持使用exec探针,可将输出写入容器内的日志文件,再让Fluent-Bit采集该文件:

1. 修改探针命令

livenessProbe:
  periodSeconds: 60
  initialDelaySeconds: 600
  exec:
    command:
      - "/bin/sh"
      - "-c"
      - "echo '{\"health\": \"check\"}' >> /var/log/fluent-bit-health.log || exit 1"

2. 配置Fluent-Bit采集日志文件

[INPUT]
    name              tail
    path              /var/log/fluent-bit-health.log
    tag               health.check
    read_from_head    true

# 配置对应OUTPUT输出日志

注意:需确保容器对/var/log目录有写入权限,否则探针执行会失败。

方式三:通过Prometheus指标监控(适合运维告警)

Fluent-Bit支持暴露Prometheus指标,其中fluentbit_up指标可直接反映服务健康状态,无需依赖日志:

1. 配置Fluent-Bit暴露Prometheus指标

[OUTPUT]
    name              prometheus
    match             *
    host              0.0.0.0
    port              2021
    metrics_export    prometheus_tcp

2. 配置Prometheus采集与告警

在Prometheus中添加该端点的采集配置,并创建告警规则:当fluentbit_up == 0时触发告警,这种方式比日志告警更及时可靠。


内容的提问来源于stack exchange,提问作者fledgling

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 00:50:50