添加进程元数据

编辑

add_process_metadata 处理器使用正在运行的进程信息(通过进程 ID (PID) 识别)来丰富事件。

示例

编辑
  - add_process_metadata:
      match_pids: [system.process.ppid]
      target: system.process.parent

添加到事件的字段如下所示

"process": {
  "name":  "systemd",
  "title": "/usr/lib/systemd/systemd --switched-root --system --deserialize 22",
  "exe":   "/usr/lib/systemd/systemd",
  "args":  ["/usr/lib/systemd/systemd", "--switched-root", "--system", "--deserialize", "22"],
  "pid":   1,
  "parent": {
    "pid": 0
  },
  "start_time": "2018-08-22T08:44:50.684Z",
  "owner": {
    "name": "root",
    "id": "0"
  }
},
"container": {
  "id": "b5285682fba7449c86452b89a800609440ecc88a7ba5f2d38bedfb85409b30b1"
},

(可选)也可以包含进程环境

  ...
  "env": {
    "HOME":       "/",
    "TERM":       "linux",
    "BOOT_IMAGE": "/boot/vmlinuz-4.11.8-300.fc26.x86_64",
    "LANG":       "en_US.UTF-8",
  }
  ...

配置设置

编辑

Elastic Agent 处理器在摄取管道之前执行,这意味着它们处理原始事件数据,而不是发送到 Elasticsearch 的最终事件。有关相关限制,请参阅使用处理器有哪些限制?

名称 必需 默认值 描述

match_pids

用于查找 PID 的字段列表。处理器按顺序搜索该列表,直到在当前事件中找到该字段,然后将 PID 查找应用于此字段的值。

target

事件根目录

将在其中创建 process 对象的目标前缀。

include_fields

要添加的字段列表。默认情况下,添加所有可用字段,除了 process.env

ignore_missing

true

是否忽略缺失的字段。如果为 false,则会丢弃不包含 match_pids 中指定任何字段的事件,然后生成错误。如果为 true,则忽略缺失的字段。

overwrite_keys

false

是否覆盖现有键。如果为 false 且目标字段已存在,则不会覆盖该字段,并且会记录错误。如果为 true,则会覆盖目标字段。

restricted_fields

false

是否输出受限字段。如果为 false,为了避免泄露敏感数据,则不输出 process.env 字段。如果为 true,则该字段将出现在输出中。

host_path

主机的根目录 (/)

/proc 挂载的主机路径。对于 Kubernetes 或 Docker 的不同运行时配置,请设置 host_path 以覆盖默认值。

cgroup_prefixes

/kubepods/docker

容器 ID 在 cgroup 内的前缀。对于 Kubernetes 或 Docker 的不同运行时配置,请设置 cgroup_prefixes 以覆盖默认值。

cgroup_regex

用于从 cgroup 路径捕获容器 ID 的捕获组正则表达式。例如

  1. ^\/.+\/.+\/.+\/([0-9a-f]{64}).* 匹配 cgroup 的容器 ID,如 /kubepods/besteffort/pod665fb997-575b-11ea-bfce-080027421ddf/b5285682fba7449c86452b89a800609440ecc88a7ba5f2d38bedfb85409b30b1
  2. ^\/.+\/.+\/.+\/docker-([0-9a-f]{64}).scope 匹配 cgroup 的容器 ID,如 /kubepods.slice/kubepods-burstable.slice/kubepods-burstable-pod69349abe_d645_11ea_9c4c_08002709c05c.slice/docker-80d85a3a585f1575028ebe468d83093c301eda20d37d1671ff2a0be50fc0e460.scope
  3. ^\/.+\/.+\/.+\/crio-([0-9a-f]{64}).scope 匹配 cgroup 的容器 ID,如 /kubepods.slice/kubepods-burstable.slice/kubepods-burstable-pod69349abe_d645_11ea_9c4c_08002709c05c.slice/crio-80d85a3a585f1575028ebe468d83093c301eda20d37d1671ff2a0be50fc0e460.scope

如果未设置 cgroup_regex,则根据 cgroup_prefixes 设置从 cgroup 文件中提取容器 ID。

cgroup_cache_expire_time

30 秒

cgroup 缓存元素过期前的秒数。要禁用 cgroup 缓存,请将其设置为 0。在某些容器运行时技术(如 runc)中,容器的进程也是主机内核中的进程,并且会受到 PID 滚动/重用的影响。将过期时间设置为小于 PID 环绕时间的值,以避免错误的容器 ID。