Exporters | 安装process_exporter
文章目录
- 一、Process Exporter简介
- 二、可用的模板变量(都需要配置cmdline:)
- 三、安装process_exporter
- 四、开机自启并启动
- 五、配置prometheus server
一、Process Exporter简介
在Prometheus中,可以借助process-exporter用以检测所选进程的状态信息。
用法:
process-exporter [options] -config.path filename.yaml
若选择监控的进城并对其进行分组,可以使用命令行参数或者yaml配置文件。推荐使用-config.path指定配置文件路径。
详细.yaml配置文件格式及规则参考https://github.com/ncabatoff/process-exporter
# 若监控主机上所有进程
process_names:- name: "{{.Comm}}"cmdline:- '.+'
# 若监控主机上某个进程
process_names:
- name: "{{.Matches}}"cmdline:- 'sshd'
二、可用的模板变量(都需要配置cmdline:)
{{.Comm}} 包含原始可执行文件的基本名称,即 /proc/<pid>/stat
{{.ExeBase}} 包含可执行文件的基本名称
{{.ExeFull}} 包含可执行文件的标准路径
{{.Username}} 包含有效用户的用户名
{{.Matches}} 包含所有由于应用cmdline正则表达式而产生的匹配项
{{.PID}} 包含过程的PID。请注意,使用PID意味着该组将仅包含一个进程
{{.StartTime}} 包含过程的开始时间。与PID结合使用时,这很有用,因为PID会随着时间的推移而被重用
| {{.Comm}} | groupname=“redis-server” | exe或者sh文件名称 |
| {{.ExeBase}} | groupname=“redis-server *:6379” | / |
| {{.ExeFull}} | groupname=“/usr/bin/redis-server *:6379” | ps中的进程完成信息 |
| {{.Username}} | groupname=“redis” | 使用进程所属的用户进行分组 |
| {{.Matches}} | groupname=“map[:redis]” | 表示配置到关键字“redis” |
不建议使用PID或StartTime,重启服务后,会变动
例:
process_names:# comm is the second field of /proc/<pid>/stat minus parens.# It is the base executable name, truncated at 15 chars.# It cannot be modified by the program, unlike exe.- comm:- bash# exe is argv[0]. If no slashes, only basename of argv[0] need match.# If exe contains slashes, argv[0] must match exactly.- exe:- postgres- /usr/local/bin/prometheus# cmdline is a list of regexps applied to argv.# Each must match, and any captures are added to the .Matches map.- name: "{{.ExeFull}}:{{.Matches.Cfgfile}}"exe:- /usr/local/bin/process-exportercmdline:- -config.path\s+(?P<Cfgfile>\S+
三、安装process_exporter
下载地址:https://github.com/ncabatoff/process-exporter
wget https://github.com/ncabatoff/process-exporter/releases/download/v0.7.10/process-exporter-0.7.10.linux-amd64.tar.gz
tar xf process-exporter-0.7.10.linux-amd64.tar.gz -C /data
cd /data
mv process-exporter-0.7.10.linux-amd64 process-exporter
chown -R root.root /data/process-exportercat > /usr/lib/systemd/system/process_exporter.service << EOF
[Unit]
Description=process_exporter
Documentation=https://github.com/ncabatoff/process-exporter
After=network.target[Service]
Type=simple
ExecStart=/data/process-exporter/process-exporter -config.path=/data/process-exporter/process-conf.yaml
Restart=on-failure[Install]
WantedBy=multi-user.target
EOFvim /data/process-exporter/process-conf.yaml
process_names:- name: "{{.Matches}}"cmdline:- 'node_exporter' # 进程名称(二进制进程名称,不一定与service名称一样)- name: "{{.Matches}}"cmdline:- 'test1'- name: "{{.Matches}}"cmdline:- 'test2'- exe:- /usr/sbin/sshd
四、开机自启并启动
systemctl daemon-reload && systemctl enable --now process_exporter && systemctl status process_exporter
五、配置prometheus server
vim /data/prometheus_server/files-sd/prometheus.yml
# 添加- job_name: 'process-exporter'file_sd_configs:- files:- targets/process*.yamlrefresh_interval: 1mrelabel_configs:- source_labels: [ '__address__' ]target_label: 'instance'regex: "(.*):.*"replacement: $1vim /data/prometheus_server/files-sd/targets/process_exporter.yaml
- targets:- 192.158.134.16:9256labels:app: "xx主机"job: "xx主机"
