系统进程 metricset
编辑系统进程 metricset
编辑系统 process
metricset 提供进程统计信息。每个进程都提供一个文档。
此 metricset 在以下系统上可用:
- FreeBSD
- Linux
- macOS
- Windows
配置
编辑-
processes
-
启用
process
metricset 后,可以使用processes
选项定义一个正则表达式列表来过滤要报告的进程。对于更复杂的过滤,应使用processors
配置选项。有关更多信息,请参见 处理器。以下示例配置将返回所有进程的指标
metricbeat.modules: - module: system metricsets: ["process"] processes: ['.*']
-
process.cgroups.enabled
-
启用
process
metricset 后,可以使用此布尔配置选项禁用 cgroup 指标。默认情况下,启用 cgroup 指标收集。以下示例配置禁用 Linux 上的 cgroup 指标。
metricbeat.modules: - module: system metricsets: ["process"] process.cgroups.enabled: false
-
process.cmdline.cache.enabled
- 此 metricset 默认情况下会缓存正在运行的进程的命令行参数。这意味着,如果在运行此 metricset 时更改了进程的命令行,则不会检测到这些更改。可以通过在配置中设置
process.cmdline.cache.enabled: false
来禁用缓存。 -
process.env.whitelist
-
此 metricset 可以收集用于启动进程的环境变量。此功能在 Linux、Darwin 和 FreeBSD 上可用。默认情况下不收集任何环境变量,因为它们可能包含敏感信息。必须通过指定与变量名称匹配的正则表达式列表来配置要收集的环境变量。
metricbeat.modules: - module: system metricsets: ["process"] process.env.whitelist: - '^PATH$' - '^SSH_.*'
-
process.include_cpu_ticks
-
默认情况下,此 metricset 不会报告累积的 CPU 滴答值(仅报告百分比)。将此选项设置为 true 将启用原始 CPU 滴答值的报告(对于用户、系统和总 CPU 时间)。
metricbeat.modules: - module: system metricsets: ["process"] process.include_cpu_ticks: true
-
process.include_per_cpu
- 默认情况下,在可用时会报告每个 CPU 的指标。将此选项设置为 false 将禁用这些指标的报告。
-
process.include_top_n
- 这些选项允许您过滤掉所有不在 CPU 或内存前 N 名的进程,以减少创建的文档数量。如果同时使用
by_cpu
和by_memory
选项,则包含这两个集合的并集。 -
process.include_top_n.enabled
- 设置为 false 以禁用前 N 功能并包含所有进程,而不管其他选项如何。默认值为
true
,但除非其他选项之一(by_cpu
或by_memory
)设置为非零值,否则不会过滤任何内容。 -
process.include_top_n.by_cpu
- 要从 CPU 前 N 名中包含多少个进程。进程按
system.process.cpu.total.pct
字段排序。默认值为 0。 -
process.include_top_n.by_memory
- 要从内存前 N 名中包含多少个进程。进程按
system.process.memory.rss.bytes
字段排序。默认值为 0。
监控混合层次结构 Cgroups
编辑process metricset 支持 V1 和 V2(有时称为统一)cgroups 控制器。但是,在运行混合层次结构(同时具有 V1 和 V2 控制器)的系统上,metricbeat 仅会为给定进程报告其中一个层次结构。如果一个进程同时关联了 V1 和 V2 层次结构,metricbeat 将检查该进程是否附加到任何 V2 控制器。如果是,它将报告 cgroups V2 指标。如果不是,它将报告 V1 指标。
如果 metricbeat 在混合系统上的 docker 内运行,也需要解决方法。在 docker 内,metricbeat 将无法看到任何 V2 cgroups 组件。如果您希望从混合系统上的 docker 内监控 cgroups V2,则必须将统一 sysfs 层次结构(通常为 /sys/fs/cgroups/unified
)安装到容器内,然后使用 system.hostfs
指定容器内的文件系统根目录。
这是一个默认的 metricset。如果主机模块未配置,则默认启用此 metricset。
有关 metricset 中每个字段的说明,请参见 导出字段 部分。
以下是此 metricset 生成的示例文档
{ "@timestamp": "2017-10-12T08:05:34.853Z", "event": { "dataset": "system.process", "duration": 115000, "module": "system" }, "metricset": { "name": "process", "period": 10000 }, "process": { "args": [ "/tmp/go-build2159656503/b001/process.test", "-test.paniconexit0", "-test.timeout=10m0s", "-test.v=true", "-data", "-test.run=TestData" ], "command_line": "/tmp/go-build2159656503/b001/process.test -test.paniconexit0 -test.timeout=10m0s -test.v=true -data -test.run=TestData", "cpu": { "pct": 0.0012, "start_time": "2023-11-28T03:13:18.000Z" }, "executable": "/tmp/go-build2159656503/b001/process.test", "memory": { "pct": 0.0008 }, "name": "process.test", "parent": { "pid": 592387 }, "pgid": 592387, "pid": 592516, "state": "sleeping", "working_directory": "/home/alexk/go/src/github.com/elastic/beats/metricbeat/module/system/process" }, "service": { "type": "system" }, "system": { "process": { "cgroup": { "cgroups_version": 2, "cpu": { "id": "session-426.scope", "path": "/user.slice/user-1000.slice/session-426.scope", "pressure": { "full": { "10": { "pct": 0 }, "300": { "pct": 0 }, "60": { "pct": 0 }, "total": 5524742 }, "some": { "10": { "pct": 0.07 }, "300": { "pct": 0.1 }, "60": { "pct": 0.3 }, "total": 32365561 } }, "stats": { "periods": 0, "system": { "norm": { "pct": 0 }, "ns": 548263994, "pct": 0 }, "throttled": { "periods": 0, "us": 0 }, "usage": { "norm": { "pct": 0 }, "ns": 1599791233, "pct": 0 }, "user": { "norm": { "pct": 0 }, "ns": 1051527238, "pct": 0 } } }, "id": "session-426.scope", "memory": { "id": "session-426.scope", "mem": { "events": { "high": 0, "low": 0, "max": 0, "oom": 0, "oom_kill": 0 }, "low": { "bytes": 0 }, "usage": { "bytes": 3864518656 } }, "memsw": { "events": { "fail": 0, "high": 0, "max": 0 }, "low": { "bytes": 0 }, "usage": { "bytes": 0 } }, "path": "/user.slice/user-1000.slice/session-426.scope", "stats": { "active_anon": { "bytes": 1759969280 }, "active_file": { "bytes": 990560256 }, "anon": { "bytes": 1781649408 }, "anon_thp": { "bytes": 618659840 }, "file": { "bytes": 1710731264 }, "file_dirty": { "bytes": 0 }, "file_mapped": { "bytes": 15060992 }, "file_thp": { "bytes": 0 }, "file_writeback": { "bytes": 0 }, "htp_collapse_alloc": 313, "inactive_anon": { "bytes": 327753728 }, "inactive_file": { "bytes": 698679296 }, "kernel_stack": { "bytes": 2899968 }, "major_page_faults": 3001, "page_activate": 0, "page_deactivate": 0, "page_faults": 79495294, "page_lazy_free": 0, "page_lazy_freed": 0, "page_refill": 0, "page_scan": 0, "page_steal": 0, "page_tables": { "bytes": 19267584 }, "per_cpu": { "bytes": 10336 }, "shmem": { "bytes": 21491712 }, "shmem_thp": { "bytes": 0 }, "slab": { "bytes": 60957576 }, "slab_reclaimable": { "bytes": 55816376 }, "slab_unreclaimable": { "bytes": 5141200 }, "sock": { "bytes": 0 }, "swap_cached": { "bytes": 0 }, "thp_fault_alloc": 8577, "unevictable": { "bytes": 0 }, "workingset_activate_anon": 0, "workingset_activate_file": 0, "workingset_node_reclaim": 0, "workingset_refault_anon": 0, "workingset_refault_file": 0, "workingset_restore_anon": 0, "workingset_restore_file": 0 } }, "path": "/user.slice/user-1000.slice/session-426.scope" }, "cmdline": "/tmp/go-build2159656503/b001/process.test -test.paniconexit0 -test.timeout=10m0s -test.v=true -data -test.run=TestData", "cpu": { "start_time": "2023-11-28T03:13:18.000Z", "system": { "ticks": 40 }, "total": { "norm": { "pct": 0.0012 }, "pct": 0.007, "ticks": 100, "value": 100 }, "user": { "ticks": 60 } }, "fd": { "limit": { "hard": 524288, "soft": 524288 }, "open": 15 }, "io": { "cancelled_write_bytes": 0, "read_bytes": 0, "read_char": 2517537, "read_ops": 9551, "write_bytes": 0, "write_char": 22, "write_ops": 4 }, "memory": { "rss": { "bytes": 26234880, "pct": 0.0008 }, "share": 16252928, "size": 1886003200 }, "num_threads": 9, "state": "sleeping" } }, "user": { "name": "alexk" } }