添加 Docker 元数据编辑

add_docker_metadata 处理器使用 Docker 容器的相关元数据来注释每个事件。在启动时,它会检测 Docker 环境并缓存元数据。只有在检测到有效配置并且处理器能够访问 Docker API 时,才会使用 Docker 元数据来注释事件。

每个事件都使用以下内容进行注释

  • 容器 ID
  • 名称
  • 镜像
  • 标签

在容器中运行心跳时,您需要提供对 Docker 的 Unix 套接字的访问权限,以便 add_docker_metadata 处理器能够正常工作。您可以通过在容器内挂载套接字来实现。例如

docker run -v /var/run/docker.sock:/var/run/docker.sock ...

为了避免权限问题,您可能还需要将 --user=root 添加到 docker run 标志中。因为用户必须是 docker 组的成员才能访问 /var/run/docker.sock,所以如果心跳在容器内以非 root 用户身份运行,则需要 root 访问权限。

如果 Docker 守护程序重新启动,挂载的套接字将变得无效,元数据将停止工作。在这些情况下,有两种选择

  • 每次 Docker 重新启动时重新启动心跳
  • 挂载整个 /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"

它具有以下设置

主机
(可选) Docker 套接字(UNIX 或 TCP 套接字)。默认情况下,它使用 unix:///var/run/docker.sock
ssl
(可选) 连接到 Docker 套接字时要使用的 SSL 配置。
匹配字段
(可选) 用于匹配容器 ID 的字段列表。至少其中一个字段应该包含容器 ID,才能使事件得到丰富。
匹配 pid
(可选) 包含进程 ID 的字段列表。如果进程在 Docker 中运行,则事件将得到丰富。默认值为 ["process.pid", "process.parent.pid"]
匹配源
(可选) 从 log.file.path 字段中存在的日志路径匹配容器 ID。默认情况下启用。
匹配短 ID
(可选) 从 log.file.path 字段中存在的日志路径匹配容器短 ID。默认情况下禁用。这允许匹配具有容器 ID 前 12 个字符的目录名称。例如,/var/log/containers/b7e3460e2b21/*.log
匹配源索引
(可选) 源路径中按 / 分割的索引,用于查找容器 ID。默认值为 4,用于匹配 /var/lib/docker/containers/<container_id>/*.log
清理超时
(可选) 我们认为可以清理并忘记容器元数据的非活动时间,默认值为 60 秒。
标签。去点
(可选) 默认值为 false。如果设置为 true,则用 _ 替换标签中的点。