进程字段编辑

这些字段包含有关进程的信息。

这些字段可以帮助您将指标信息与日志消息中的进程 ID/名称相关联。 process.pid 通常保留在指标本身中,并复制到全局字段以进行关联。

进程字段详细信息编辑

字段 说明 级别

process.args

进程参数数组,以可执行文件的绝对路径开头。

可能会被过滤以保护敏感信息。

类型:关键字

注意:此字段应包含一个值数组。

示例: ["/usr/bin/ssh", "-l", "user", "10.0.0.16"]

扩展

process.args_count

process.args 数组的长度。

此字段对于查询或对启动进程时提供的参数数量执行存储桶分析非常有用。 更多参数可能表示存在可疑活动。

类型:长整型

示例: 4

扩展

process.command_line

启动进程的完整命令行,包括可执行文件的绝对路径和所有参数。

某些参数可能会被过滤以保护敏感信息。

类型:通配符

多字段

  • process.command_line.text(类型:match_only_text)

示例: /usr/bin/ssh -l user 10.0.0.16

扩展

process.end

进程结束的时间。

类型:日期

示例: 2016-05-23T08:05:34.853Z

扩展

process.entity_id

进程的唯一标识符。

其实现由数据源指定,但这里可以使用的一些示例是进程生成的 UUID、Sysmon 进程 GUID 或进程某些唯一标识组件的哈希值。

构建全局唯一标识符是一种常见做法,可以缓解 PID 重用,并在多个受监控主机上识别一段时间内的特定进程。

类型:关键字

示例: c2c455d9f99375d

扩展

process.entry_meta.type

入口会话领导者的入口类型。 值包括:init(例如 systemd)、sshd、ssm、kubelet、teleport、terminal、console

注意:此字段仅在 process.session_leader 上设置。

类型:关键字

扩展

process.env_vars

[测试版] 此字段为测试版,可能会发生更改。

环境变量绑定数组。 从执行时环境的快照中捕获。

可能会被过滤以保护敏感信息。

类型:关键字

注意:此字段应包含一个值数组。

示例: ["PATH=/usr/local/bin:/usr/bin", "USER=ubuntu"]

扩展

process.executable

进程可执行文件的绝对路径。

类型:关键字

多字段

  • process.executable.text(类型:match_only_text)

示例: /usr/bin/ssh

扩展

process.exit_code

如果这是一个终止事件,则为进程的退出代码。

如果事件没有退出代码(例如进程启动),则该字段应为空。

类型:长整型

示例: 137

扩展

process.interactive

进程是否连接到交互式 shell。

进程交互性是从进程文件描述符推断出来的。 如果控制终端的字符设备与进程的 stdin 和 stderr 相同,则该进程被视为交互式的。

注意:非交互式进程可以属于交互式会话,并且只是一个没有打开文件描述符的进程,这些文件描述符在 FD 0(stdin)上读取控制 TTY 或在 FD 2(stderr)上写入控制 TTY。 如果 stdin 和 stderr 连接到控制 TTY,则后台进程仍被视为交互式的。

类型:布尔值

示例: True

扩展

process.io

[测试版] 此字段为测试版,可能会发生更改。

来自单个进程的输入或输出 (IO) 块。

此字段仅出现在顶级进程对象上,该对象是写入输出或读取输入的进程。

类型:对象

扩展

process.io.bytes_skipped

[测试版] 此字段为测试版,可能会发生更改。

一个字节偏移量和长度数组,表示已跳过 IO 数据的位置。

类型:对象

注意:此字段应包含一个值数组。

扩展

process.io.bytes_skipped.length

[测试版] 此字段为测试版,可能会发生更改。

跳过的字节长度。

类型:长整型

扩展

process.io.bytes_skipped.offset

[测试版] 此字段为测试版,可能会发生更改。

跳过长度字节的此事件的 io.text(或未来的 io.bytes)中的字节偏移量。

类型:长整型

扩展

process.io.max_bytes_per_process_exceeded

[测试版] 此字段为测试版,可能会发生更改。

如果为 true,则生成输出的进程已超过 max_kilobytes_per_process 配置设置。

类型:布尔值

扩展

process.io.text

[测试版] 此字段为测试版,可能会发生更改。

已清理为 UTF-8 的输出或输入块。

尽最大努力确保在这些事件中捕获完整的行。 不应假设多行将出现在同一事件中。 TTY 输出可能包含终端控制代码,例如用于光标移动的代码,因此某些字符串查询可能由于插入在单词字符之间的终端代码而无法匹配。

类型:通配符

扩展

process.io.total_bytes_captured

[测试版] 此字段为测试版,可能会发生更改。

此事件中捕获的总字节数。

类型:长整型

扩展

process.io.total_bytes_skipped

[测试版] 此字段为测试版,可能会发生更改。

由于缓冲区大小限制等实现限制而未捕获的总字节数。 实现者应努力确保此值始终为零

类型:长整型

扩展

process.io.type

[测试版] 此字段为测试版,可能会发生更改。

对其执行 IO 操作(读取或写入)的对象类型。

目前仅支持 *tty*。 将来可能会添加其他类型以支持 *file* 和 *socket*。

类型:关键字

扩展

process.name

进程名称。

有时称为程序名称或类似名称。

类型:关键字

多字段

  • process.name.text(类型:match_only_text)

示例: ssh

扩展

process.pgid

已弃用,将在下一个主要版本中删除。 此字段已被 process.group_leader.pid 取代。

进程所属进程组的标识符。

类型:长整型

扩展

process.pid

进程 ID。

类型:长整型

示例: 4242

核心

process.same_as_process

此布尔值用于标识领导进程是否与顶级进程相同。

例如,如果 process.group_leader.same_as_process = true,则表示有问题的进程事件是其进程组的领导者。 process.* 下的详细信息(如 pid)在 process.group_leader.* 下将相同。 process.session_leaderprocess.entry_leader 也是如此。

此字段的存在是为了 EQL 和其他规则引擎的利益,因为无法比较单个文档中两个字段之间的相等性。 例如,process.entity_id = process.group_leader.entity_id(顶级进程是进程组领导者)或 process.entity_id = process.entry_leader.entity_id(顶级进程是入口会话领导者)

相反,这些规则可以写成:process.group_leader.same_as_process: trueprocess.entry_leader.same_as_process: true

注意:此字段仅在 process.entry_leaderprocess.session_leaderprocess.group_leader 上设置。

类型:布尔值

示例: True

扩展

process.start

进程开始的时间。

类型:日期

示例: 2016-05-23T08:05:34.853Z

扩展

process.thread.capabilities.effective

这是内核用于对线程执行权限检查的功能集。

类型:关键字

注意:此字段应包含一个值数组。

示例: ["CAP_BPF", "CAP_SYS_ADMIN"]

扩展

process.thread.capabilities.permitted

这是线程可以假定的有效功能的限制性超集。

类型:关键字

注意:此字段应包含一个值数组。

示例: ["CAP_BPF", "CAP_SYS_ADMIN"]

扩展

process.thread.id

线程 ID。

类型:长整型

示例: 4242

扩展

process.thread.name

线程名称。

类型:关键字

示例: thread-0

扩展

process.title

进程标题。

进程标题,有时与进程名称相同。 也可以不同:例如,浏览器将其标题设置为当前打开的网页。

类型:关键字

多字段

  • process.title.text(类型:match_only_text)

扩展

process.tty

有关控制 TTY 设备的信息。 如果设置,则该进程属于交互式会话。

类型:对象

扩展

process.tty.char_device.major

主号码标识与设备关联的驱动程序。 字符设备的主号码和次号码可以通过算法组合生成更熟悉的终端标识符,例如“ttyS0”和“pts/0”。 有关更多详细信息,请参阅 Linux 内核文档。

类型:长整型

示例: 4

扩展

process.tty.char_device.minor

次号码仅由主号码指定的驱动程序使用; 内核的其他部分不使用它,只是将它传递给驱动程序。 驱动程序控制多个设备是很常见的; 次号码为驱动程序提供了一种区分它们的方法。

类型:长整型

示例: 1

扩展

process.tty.columns

[测试版] 此字段为测试版,可能会发生更改。

每行字符列数。例如,终端宽度。

终端大小可能会发生变化,因此该值反映给定 IO 事件的最大值。即,event.action = text_output

类型:长整型

示例: 80

扩展

process.tty.rows

[测试版] 此字段为测试版,可能会发生更改。

终端中的字符行数。例如,终端高度。

终端大小可能会发生变化,因此该值反映给定 IO 事件的最大值。即,event.action = text_output

类型:长整型

示例: 24

扩展

process.uptime

进程已启动的秒数。

类型:长整型

示例: 1325

扩展

process.vpid

虚拟进程 ID。

pid 命名空间内的进程 ID。这在主机上的所有进程中不一定是唯一的,但在进程所在的进程命名空间内是唯一的。

类型:长整型

示例: 4242

核心

process.working_directory

进程的工作目录。

类型:关键字

多字段

  • process.working_directory.text(类型:match_only_text)

示例: /home/alice

扩展

字段复用编辑

预计 process 字段嵌套在以下位置:

  • process.entry_leader
  • process.entry_leader.parent
  • process.entry_leader.parent.session_leader
  • process.group_leader
  • process.parent
  • process.parent.group_leader
  • process.previous
  • process.session_leader
  • process.session_leader.parent
  • process.session_leader.parent.session_leader

另请注意,process 字段可以直接在事件的根级别使用。

可以嵌套在 Process 下的字段集编辑
位置 字段集 说明

process.attested_groups.*

group

[测试版] 在此位置复用 group 字段目前被视为测试版。

基于外部源(例如 Kube API)的外部认证组。

注意:此复用应包含一个 group 字段集对象的数组。

process.attested_user.*

user

[测试版] 在此位置复用 user 字段目前被视为测试版。

基于外部源(例如 Kube API)的外部认证用户。

process.code_signature.*

code_signature

这些字段包含有关二进制代码签名的信息。

process.elf.*

elf

[测试版] 此字段复用功能尚处于测试阶段,将来可能会发生更改。

这些字段包含 Linux 可执行链接格式 (ELF) 元数据。

process.entry_leader.*

process

来自终端或通过 SSH、SSM 等进行远程访问的第一个进程,或由 init 进程直接启动的服务。

process.entry_leader.parent.*

process

有关入口领导者父进程的信息。仅设置了 pid、start 和 entity_id 字段。

process.entry_leader.parent.session_leader.*

process

有关入口领导者父会话的信息。仅设置了 pid、start 和 entity_id 字段。

process.entry_meta.source.*

source

远程客户端信息,例如 IP、端口和地理位置。

process.group.*

group

有效组 (egid)。

process.group_leader.*

process

有关进程组领导者的信息。在某些情况下,这可能与顶级进程相同。

process.hash.*

hash

哈希值,通常是文件哈希值。

process.macho.*

macho

[测试版] 此字段复用功能尚处于测试阶段,将来可能会发生更改。

这些字段包含 Mac OS Mach 对象文件格式 (Mach-O) 元数据。

process.parent.*

process

有关父进程的信息。

process.parent.group_leader.*

process

有关父进程的进程组领导者的信息。仅设置了 pid、start 和 entity_id 字段。

process.pe.*

pe

这些字段包含 Windows 可移植可执行文件 (PE) 元数据。

process.previous.*

process

进程先前执行的数组,包括初始 fork。仅设置了 executable 和 args。

注意:此复用应包含一个 process 字段集对象的数组。

process.real_group.*

group

真实组 (rgid)。

process.real_user.*

user

真实用户 (ruid)。标识进程的实际所有者。

process.saved_group.*

group

保存的组 (sgid)。

process.saved_user.*

user

保存的用户 (suid)。

process.session_leader.*

process

通常与 entry_leader 相同。当它不同时,它表示在一个会话中启动的会话。例如,使用 tmux。

process.session_leader.parent.*

process

有关会话领导者父进程的信息。仅设置了 pid、start 和 entity_id 字段。

process.session_leader.parent.session_leader.*

process

有关会话领导者父会话的信息。仅设置了 pid、start 和 entity_id 字段。

process.supplemental_groups.*

group

补充组的数组。

注意:此复用应包含一个 group 字段集对象的数组。

process.user.*

user

有效用户 (euid)。