发现进程
discovery.process
发现本地Linux OS上运行的进程。
注意
要使用discovery.process
组件,必须以root身份在host PID命名空间中运行Alloy。
用法
discovery.process "LABEL" {
}
参数
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
join | list(map(string)) | 根据 __container_id__ 标签将外部目标与发现进程目标连接。 | no | |
refresh_interval | 持续时间 | 同步目标的时间间隔。 | “60s” | no |
目标连接
如果指定了 join
,则 discovery.process
将根据 __container_id__
标签连接发现的进程。
例如,如果 join
指定如下
[
{
"pod": "pod-1",
"__container_id__": "container-1"
},
{
"pod": "pod-2",
"__container_id__": "container-2"
}
]
并且发现的进程是
[
{
"__process_pid__": "1",
"__container_id__": "container-1"
},
{
"__process_pid__": "2"
}
]
结果目标是
[
{
"__container_id__": "container-1",
"__process_pid__": "1",
"pod": "pod-1"
},
{
"__process_pid__": "2"
},
{
"__container_id__": "container-1",
"pod": "pod-1"
},
{
"__container_id__": "container-2",
"pod": "pod-2"
}
]
块
以下是在discovery.process
定义中支持的块:
层次结构 | 块 | 描述 | 必需 |
---|---|---|---|
discover_config | discover_config | 配置要发现哪些进程元数据。 | no |
discover_config 块
discover_config
块描述了要发现哪些进程元数据。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
exe | bool | 一个标志,用于启用发现__meta_process_exe 标签。 | true | no |
cwd | bool | 一个标志,用于启用发现__meta_process_cwd 标签。 | true | no |
commandline | bool | 一个标志,用于启用发现__meta_process_commandline 标签。 | true | no |
uid | bool | 一个标志,用于启用发现__meta_process_uid 标签。 | true | no |
username | bool | 一个标志,用于启用发现__meta_process_username 标签。 | true | no |
container_id | bool | 一个标志,用于启用发现__container_id__ 标签。 | true | no |
导出字段
以下字段被导出,并可以被其他组件引用
名称 | 类型 | 描述 |
---|---|---|
targets | list(map(string)) | 在本地Linux OS上发现的进程集。 |
每个目标包含以下标签
__process_pid__
:进程PID。__meta_process_exe
:进程可执行文件路径。从/proc/<pid>/exe
获取。__meta_process_cwd
:进程当前工作目录。从/proc/<pid>/cwd
获取。__meta_process_commandline
:进程命令行。从/proc/<pid>/cmdline
获取。__meta_process_uid
:进程UID。从/proc/<pid>/status
获取。__meta_process_username
:进程用户名。从__meta_process_uid
和os/user/LookupID
获取。__container_id__
:容器ID。从/proc/<pid>/cgroup
获取。如果进程未在容器中运行,则此标签未设置。
组件健康状态
当给定无效配置时,discovery.process
才会报告为不健康。在这种情况下,导出字段保留其最后健康的值。
调试信息
discovery.process
不公开任何组件特定的调试信息。
调试度量
discovery.process
不公开任何组件特定的调试度量。
示例
示例:在本地主机上发现进程
discovery.process "all" {
refresh_interval = "60s"
discover_config {
cwd = true
exe = true
commandline = true
username = true
uid = true
container_id = true
}
}
示例:在本地主机上发现进程并与discovery.kubernetes
结合
discovery.kubernetes "pyroscope_kubernetes" {
selectors {
field = "spec.nodeName=" + sys.env("HOSTNAME")
role = "pod"
}
role = "pod"
}
discovery.process "all" {
join = discovery.kubernetes.pyroscope_kubernetes.targets
refresh_interval = "60s"
discover_config {
cwd = true
exe = true
commandline = true
username = true
uid = true
container_id = true
}
}
兼容组件
discovery.process
可以接受以下组件的参数
- 导出目标的组件
discovery.process
的导出可以被以下组件消费
- 消费目标的组件
注意
连接某些组件可能不合理,或者组件可能需要进一步配置才能正确连接。有关更多详细信息,请参阅相关文档。