prometheus.exporter.process
prometheus.exporter.process
组件嵌入了 process_exporter,用于从 /proc
收集进程统计信息。
用法
prometheus.exporter.process "LABEL" {
}
参数
以下参数可用于配置导出器的行为。所有参数均为可选。省略的字段将采用其默认值。
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
procfs_path | string | procfs 挂载点。 | /proc | 否 |
track_children | bool | 是否跟踪进程的子进程。 | true | 否 |
track_threads | bool | 报告进程各个线程的指标。 | true | 否 |
gather_smaps | bool | 从进程的 smaps 文件收集指标。 | true | 否 |
recheck_on_scrape | bool | 在每次抓取时重新检查进程名称。 | true | 否 |
块
prometheus.exporter.process
的定义中支持以下块
层级 | 块 | 描述 | 必需 |
---|---|---|---|
matcher | matcher | 用于决定要监控哪些进程的匹配规则集合。 | 否 |
matcher 块
每个 matcher
块配置可以匹配多个进程,这些进程将被作为一个进程“组”进行跟踪。
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
name | string | 用于在指标中标识进程组名称的名称。 | "{{.ExeBase}}" | 否 |
comm | list(string) | 与进程的基本可执行文件名匹配的字符串列表,截断为 15 个字符。 | 否 | |
exe | list(string) | 与进程的 argv[0] 匹配的字符串列表。 | 否 | |
cmdline | list(string) | 应用于进程的 argv 的正则表达式列表。 | 否 |
name
参数可以使用以下模板变量。默认情况下,它使用可执行文件的基本路径
{{.Comm}}
:来自 /proc/<pid>/stat 的原始可执行文件的基本名称。{{.ExeBase}}
:来自 argv[0] 的可执行文件的基本名称。{{.ExeFull}}
:可执行文件的完整限定路径。{{.Username}}
:有效用户的用户名。{{.Matches}}
:映射,包含通过 cmdline 规则组匹配进程而产生的所有正则表达式捕获组。{{.PID}}
:进程的 PID。请注意,PID 是从找到的第一个可执行文件复制的。{{.StartTime}}
:进程的启动时间。当与 PID 结合使用时,这非常有用,因为 PID 会随着时间推移而重复使用。{{.Cgroups}}
:进程的 cgroup(如果支持)(/proc/self/cgroup
)。这对于识别进程所属的容器尤其有用。
注意:不建议使用 PID
或 StartTime
,因为它几乎不是您想要的,并且很可能导致高基数指标。
用于匹配 comm
列表元素的值是从读取 /proc/<pid>/stat
的第二个字段(去除括号)派生而来的。
对于 exe
中的值,如果没有斜杠,则只需要匹配 argv[0]
的基本名称。否则,名称必须完全匹配。例如,“postgres”可能匹配任何 postgres 二进制文件,但 /usr/local/bin/postgres
将仅匹配具有该确切路径的 postgres 进程。如果任何字符串匹配,则将跟踪该进程。
cmdline
中的每个正则表达式都必须与要跟踪的进程的相应 argv 匹配。匹配的第一个元素是 argv[1]
。正则表达式捕获将添加到 .Matches 映射中,以在名称中使用。
导出的字段
以下字段已导出,可以被其他组件引用。
名称 | 类型 | 描述 |
---|---|---|
targets | list(map(string)) | 可用于收集导出器指标的目标。 |
例如,targets
可以传递给 discovery.relabel
组件以重写目标的标签集,也可以传递给 prometheus.scrape
组件以收集暴露的指标。
导出的目标使用 内存流量 地址,该地址由 run 命令 指定。
组件运行状况
仅当 prometheus.exporter.process
配置无效时,才将其报告为不健康。在这些情况下,导出的字段将保留其上次的健康值。
调试信息
prometheus.exporter.process
不会公开任何组件特定的调试信息。
调试指标
prometheus.exporter.process
不会公开任何组件特定的调试指标。
示例
此示例使用 prometheus.scrape
组件 从 prometheus.exporter.process
收集指标
prometheus.exporter.process "example" {
track_children = false
matcher {
comm = ["alloy"]
}
}
// Configure a prometheus.scrape component to collect process_exporter metrics.
prometheus.scrape "demo" {
targets = prometheus.exporter.process.example.targets
forward_to = [prometheus.remote_write.demo.receiver]
}
prometheus.remote_write "demo" {
endpoint {
url = PROMETHEUS_REMOTE_WRITE_URL
basic_auth {
username = USERNAME
password = PASSWORD
}
}
}
替换以下内容
PROMETHEUS_REMOTE_WRITE_URL
:Prometheus remote_write 兼容服务器的 URL,用于将指标发送到该服务器。USERNAME
:用于远程写入 API 身份验证的用户名。PASSWORD
:用于远程写入 API 身份验证的密码。
兼容组件
prometheus.exporter.process
具有可被以下组件使用的导出
- 使用 Targets 的组件
注意
连接某些组件可能不合理,或者组件可能需要进一步配置才能使连接正常工作。有关更多详细信息,请参阅链接的文档。