添加进程元数据

编辑

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}).* 匹配类似 /kubepods/besteffort/pod665fb997-575b-11ea-bfce-080027421ddf/b5285682fba7449c86452b89a800609440ecc88a7ba5f2d38bedfb85409b30b1 的 cgroup 的容器 ID
  2. ^\/.+\/.+\/.+\/docker-([0-9a-f]{64}).scope 匹配类似 /kubepods.slice/kubepods-burstable.slice/kubepods-burstable-pod69349abe_d645_11ea_9c4c_08002709c05c.slice/docker-80d85a3a585f1575028ebe468d83093c301eda20d37d1671ff2a0be50fc0e460.scope 的 cgroup 的容器 ID
  3. ^\/.+\/.+\/.+\/crio-([0-9a-f]{64}).scope 匹配类似 /kubepods.slice/kubepods-burstable.slice/kubepods-burstable-pod69349abe_d645_11ea_9c4c_08002709c05c.slice/crio-80d85a3a585f1575028ebe468d83093c301eda20d37d1671ff2a0be50fc0e460.scope 的 cgroup 的容器 ID

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

cgroup_cache_expire_time

30s

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