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

如何在Docker Compose中正确配置Elastic Docker Agent采集容器日志?

解决Elastic Docker Agent无法采集容器日志的问题

问题分析

从Elastic Agent的日志可明确两个核心问题:

  1. Docker Socket权限不足:Agent容器无法访问宿主机的/var/run/docker.sock,导致无法获取Docker容器日志数据。
  2. Agent配置缺失采集规则:当前配置仅定义了输出到Elasticsearch的规则,未配置任何日志采集输入源,即便权限问题解决,也不会主动采集容器日志。

解决步骤

1. 修复Docker Socket访问权限

修改docker-compose.yml中的elastic-agent服务配置,挂载宿主机Docker Socket并赋予足够权限:

elastic-agent:
  image: docker.elastic.co/beats/elastic-agent:7.16.3
  container_name: elastic-agent
  volumes:
    - ./elastic-agent.yml:/usr/share/elastic-agent/elastic-agent.yml
    - /var/run/docker.sock:/var/run/docker.sock  # 挂载宿主机Docker Socket
  environment:
    - ELASTICSEARCH_HOST=elasticsearch
    - ELASTICSEARCH_PORT=9200
  user: root  # 使用root用户运行,确保有权限访问socket
  restart: always
  networks:
    - elastic-stack

注:若不想用root用户,可指定Docker组的GID(通常为999),替换user: root为group: "999",可通过getent group docker命令查看宿主机Docker组GID。

2. 完善Elastic Agent采集配置

更新elastic-agent.yml,添加Docker日志采集的输入规则:

inputs:
  - type: docker
    containers.ids:
      - "*"  # 采集所有容器的日志
    containers.exclude:
      - "elastic-agent"  # 排除自身容器,避免日志循环采集
outputs:
  elasticsearch:
    type: elasticsearch
    hosts: ["http://elasticsearch:9200"] 
    index: "elastic-agent-logs-%{+yyyy.MM.dd}"

3. 重启服务生效

执行以下命令重启所有服务:

docker-compose down
docker-compose up -d

验证结果

  1. 查看Elastic Agent日志,确认不再出现Docker Socket权限错误:
docker logs elastic-agent
  1. 访问Kibana(http://localhost:5601),创建索引模式elastic-agent-logs-*,即可在"发现"页面查看采集到的容器日志。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 05:24:58