温馨提示×

ubuntu filebeat是否支持容器化环境

小樊
40
2026-01-01 15:18:06
栏目: 智能运维

支持概览 支持在容器化环境中运行,既可在 Ubuntu 主机上以容器方式部署 Filebeat,也可在 Kubernetes 中通过 DaemonSet 采集宿主机或容器日志。常见做法包括使用官方镜像、挂载 Docker 日志目录与配置文件,或将 Filebeat 与应用同容器运行(不推荐)。

部署方式

  • 主机上运行容器化 Filebeat(推荐)

    • 使用官方镜像(如 elastic/filebeat:8.0.0),挂载宿主机的 /var/lib/docker/containers 与自定义 filebeat.yml,以只读方式访问容器日志文件,并通过 -e 输出调试日志。示例 compose 片段:
      version: '3'
      services:
        filebeat:
          image: elastic/filebeat:8.0.0
          user: root
          volumes:
            - /var/lib/docker/containers:/var/lib/docker/containers:ro
            - ./filebeat.yml:/etc/filebeat/filebeat.yml
          command: filebeat -e -strict.perms=false -c /etc/filebeat/filebeat.yml
      
    • 也可直接使用 docker run 运行并挂载配置与日志目录。该方式简单、稳定,便于集中采集多容器日志。
  • 与业务容器同 Pod 运行(不推荐)

    • 将 Filebeat 与应用放入同一容器,优点是配置简单,缺点是耦合度高、资源隔离差、升级与维护困难,生产环境通常不建议采用。
  • Kubernetes 环境

    • 使用 Kubernetes Filebeat DaemonSet 在每个节点上运行一个 Filebeat 实例,统一采集节点与容器日志,便于在集群范围内部署与运维。

配置要点

  • 采集 Docker 容器日志的两种常用配置

    • 方式一:使用 type: docker 输入插件,直接读取 Docker 容器日志流(需容器运行时支持)。示例:
      filebeat.inputs:
        - type: docker
          containers.ids:
            - '*'
      output.elasticsearch:
        hosts: ["http://elasticsearch:9200"]
      
    • 方式二:使用 type: log 读取 Docker 日志文件,并解析 JSON。需将 Docker 日志驱动设为 json-file,然后配置:
      filebeat.inputs:
        - type: log
          paths:
            - /var/lib/docker/containers/*.log
          json.keys_under_root: true
          json.add_error_key: true
          json.overwrite_keys: true
      output.elasticsearch:
        hosts: ["http://elasticsearch:9200"]
      
    • 两种方式各有适用场景;文件读取方式更通用,docker 输入方式更“原生”。
  • 权限与安全

    • 运行容器化 Filebeat 通常需要 root 权限或具备对 /var/lib/docker/containers 的读访问能力;在 compose 中可通过 user: root 指定,或在宿主机上精细控制目录权限。

验证与常见问题

  • 验证采集是否成功

    • 查看 Filebeat 容器日志:docker logs -f filebeat;或在宿主机使用 journalctl -u filebeat(若以 systemd 管理)。
    • Elasticsearch 中查询索引:curl -X GET “localhost:9200/filebeat-*/_search?pretty”,确认是否有日志写入。
  • 常见问题与处理

    • 日志被编辑工具全量写入导致重复采集:避免用编辑器直接修改日志文件,使用应用或 echo 追加方式写入可保持增量采集语义。
    • 时间字段偏差:Kibana 中调整 @timestamp 的时区显示设置,确保与业务时间一致。

0