添加 Docker 元数据
编辑添加 Docker 元数据
编辑add_docker_metadata
处理器会使用来自 Docker 容器的相关元数据来注解每个事件。在启动时,它会检测 Docker 环境并缓存元数据。仅当检测到有效的配置并且处理器能够访问 Docker API 时,才会使用 Docker 元数据来注解事件。
每个事件都会使用以下信息进行注解:
- 容器 ID
- 名称
- 镜像
- 标签
当在容器中运行 Heartbeat 时,你需要提供对 Docker Unix 套接字的访问权限,以便 add_docker_metadata
处理器能够正常工作。你可以通过将套接字挂载到容器内部来实现这一点。例如:
docker run -v /var/run/docker.sock:/var/run/docker.sock ...
为了避免权限问题,你可能还需要在 docker run
标志中添加 --user=root
。因为用户必须是 docker 组的成员才能访问 /var/run/docker.sock
,如果 Heartbeat 在容器内以非 root 用户身份运行,则需要 root 访问权限。
如果 Docker 守护进程重启,则挂载的套接字将失效,并且元数据将停止工作。在这些情况下,有两种选择:
- 每次 Docker 重启时都重启 Heartbeat
- 挂载整个
/var/run
目录(而不是仅挂载套接字)
processors: - add_docker_metadata: host: "unix:///var/run/docker.sock" #match_fields: ["system.process.cgroup.id"] #match_pids: ["process.pid", "process.parent.pid"] #match_source: true #match_source_index: 4 #match_short_id: true #cleanup_timeout: 60 #labels.dedot: false # To connect to Docker over TLS you must specify a client and CA certificate. #ssl: # certificate_authority: "/etc/pki/root/ca.pem" # certificate: "/etc/pki/client/cert.pem" # key: "/etc/pki/client/cert.key"
它具有以下设置:
-
host
- (可选)Docker 套接字(UNIX 或 TCP 套接字)。默认使用
unix:///var/run/docker.sock
。 -
ssl
- (可选)连接到 Docker 套接字时要使用的 SSL 配置。
-
match_fields
- (可选)用于匹配容器 ID 的字段列表,其中至少一个应包含容器 ID 以使事件得到丰富。
-
match_pids
- (可选)包含进程 ID 的字段列表。如果进程在 Docker 中运行,则该事件将被丰富。默认值为
["process.pid", "process.parent.pid"]
。 -
match_source
- (可选)从
log.file.path
字段中存在的日志路径匹配容器 ID。默认启用。 -
match_short_id
- (可选)从
log.file.path
字段中存在的日志路径匹配容器短 ID。默认禁用。这允许匹配具有容器 ID 的前 12 个字符的目录名称。例如,/var/log/containers/b7e3460e2b21/*.log
。 -
match_source_index
- (可选)在以
/
分割的源路径中查找容器 ID 的索引。默认为 4,以匹配/var/lib/docker/containers/<container_id>/*.log
。 -
cleanup_timeout
- (可选)认为可以清除和忘记容器元数据的不活动时间,默认为 60 秒。
-
labels.dedot
- (可选)默认为 false。如果设置为 true,则将标签中的点替换为
_
。