温馨提示×

ubuntu filebeat怎么进行故障排查

小樊
47
2025-11-23 07:53:00
栏目: 智能运维

Ubuntu 上 Filebeat 故障排查清单

一 快速定位思路

  • 确认服务状态与启动错误:使用 systemctl status filebeatjournalctl -u filebeat -xe 查看是否存活、是否反复重启及报错关键词。
  • 校验配置与语法:执行 filebeat test config -c /etc/filebeat/filebeat.yml;如启用模块,执行 filebeat test modules
  • 查看运行日志:实时跟踪 tail -f /var/log/filebeat/filebeat.log,优先关注 ERROR、WARN、failed、timeout、connection refused 等字样。
  • 明确数据流:确认 inputs 路径、modules 启用情况、以及 output 指向(Elasticsearch/Logstash/Redis)与端口。
  • 端到端连通性:对目标输出做网络与认证连通性验证(见下文各场景命令)。
  • 数据是否到达:在目标端(ES/Redis)核对是否有新索引或数据写入。
    以上步骤覆盖了服务状态、配置、日志、连通性与数据落地的主线排查路径。

二 常见故障与对应处理

  • 安装阶段报错 “Unable to locate package filebeat”
    原因多为未添加 Elastic 官方 APT 源。处理:

    1. 安装依赖并导入 GPG;2) 添加源(示例为 8.x);3) 更新索引并安装;4) 如在国内网络,可酌情更换镜像源;5) 再次 apt update。
      参考命令:
      sudo apt update && sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
      wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
      echo “deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main” | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
      sudo apt update && sudo apt install -y filebeat
      如仍异常,检查网络与 /etc/apt/sources.list.d/elastic-8.x.list 内容,必要时执行 apt clean && apt update
  • 服务无法启动或启动后立即退出

    1. journalctl -u filebeat -xe 定位具体报错;
    2. filebeat -c /etc/filebeat/filebeat.yml 前台运行观察初始化阶段错误;
    3. 若日志出现 “runtime/cgo: pthread_create failed: Operation not permitted”,在 filebeat.yml 增加最小化 seccomp 放行(仅用于定位,生产慎用):
      seccomp:
      default_action: allow
      syscalls:
      • action: allow
        names: [rseq]
        然后重启验证:systemctl restart filebeat && systemctl status filebeat。
  • 采集不到日志

    1. 核对 inputs 的 paths 是否准确、文件是否存在且被写入;
    2. 检查 文件与目录权限(Filebeat 需要对日志文件具备读取权限,必要时调整属主/权限);
    3. 查看 filebeat.log 中是否有 “Permission denied / No such file or directory / Harvester started” 等提示;
    4. 确认未因 multiline、exclude_lines、ignore_older 等导致事件被过滤;
    5. 如启用 modules,确认已启用且对应日志路径与模块预期一致(例如 system、nginx 等)。
  • 无法连接输出目标(Elasticsearch/Logstash/Redis)

    1. 校验配置语法:filebeat test config
    2. 对目标做连通性测试:
      • Elasticsearch:curl -v http://<es_host>:9200 或 https://<es_host>:9200(如启用 TLS/认证,需携带证书与凭据);
      • Logstash:nc -vz <ls_host> 5044 或 curl -v http://<ls_host>:9600;
      • Redis:redis-cli -h <redis_host> -p 6379 PING;
    3. 若启用安全特性(TLS/用户名密码/API Key),确保 Filebeat 配置中对应参数正确;
    4. 检查防火墙/安全组是否放行相关端口;
    5. 查看目标端日志(ES/logstash/redis)是否有拒绝、认证失败或限流信息。
  • 数据已发送但未在 ES 中查到

    1. 列出索引:curl -X GET “http://<es_host>:9200/_cat/indices?v”,核对是否存在 filebeat-* 或自定义索引;
    2. 简单查询:curl -X GET “http://<es_host>:9200/filebeat-/_search?pretty&q=”;
    3. 检查索引模板/ILM 策略是否异常(如别名冲突、策略错误导致 rollover 失败);
    4. 若经 Logstash 转发,核对 Logstash 管道是否健康、是否 drop/错误事件;
    5. 检查 Kibana Index Pattern 是否与写入索引匹配。

三 关键命令速查

  • 服务与日志:
    sudo systemctl status filebeat
    sudo journalctl -u filebeat -xe -f
    tail -f /var/log/filebeat/filebeat.log
  • 配置与模块:
    filebeat test config -c /etc/filebeat/filebeat.yml
    filebeat test modules
  • 目标连通性:
    curl -v http://<es_host>:9200
    nc -vz <ls_host> 5044
    redis-cli -h <redis_host> -p 6379 PING
  • ES 数据核对:
    curl -X GET “http://<es_host>:9200/_cat/indices?v”
    curl -X GET “http://<es_host>:9200/filebeat-/_search?pretty&q=
    以上命令覆盖状态、日志、配置校验与端到端连通性验证的高频操作。

四 输出到 Redis 的专项排查

  • 确认 Filebeat 配置:
    output.redis:
    hosts: [“<redis_host>:6379”]
    key: “filebeat”
  • 验证与重启:
    filebeat test config
    sudo systemctl restart filebeat
  • 在 Redis 中核对数据是否入队:
    redis-cli
    LRANGE filebeat 0 -1
    若连接失败或数据为空,按“无法连接输出目标”的步骤复核网络、端口、认证与防火墙设置。

0