Prometheus 监控进程
Process-exporter
process-exporter可以用来检测所选进程的存活状态
下载process-exporter
下载地址:https://github.com/ncabatoff/process-exporter/releases/tag/v0.4.0
安装部署process-exporter
tar -zxvf process-exporter-0.4.0.linux-amd64.tar.gz -C /usr/local/process-exporter
编写配置文件
配置文件根据变量名匹配到配置文件
{{.Comm}} 包含原始可执行文件的基本名称,即 /proc//stat
{{.ExeBase}} 包含可执行文件的基本名称
{{.ExeFull}} 包含可执行文件的标准路径
{{.Username}} 包含有效用户的用户名
cat process-exporter.yaml
process_names:
- name: "{{.Matches}}"
cmdline:
- 'dbbakup'
- name: "{{.Matches}}"
cmdline:
- 'mysql'
- name: "{{.Matches}}"
cmdline:
- 'pushgateway'
注 cmdline: 所选进程的唯一标识,ps -ef 可以查询到。如果改进程不存在,则不会有该进程的数据采集到。
编写启动脚本
cat /usr/lib/systemd/system/process_exporter.service
[Unit]
Description=Prometheus exporter for processors metrics, written in Go with pluggable metric collectors.
Documentation=https://github.com/ncabatoff/process-exporter
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/usr/local/process-exporter
ExecStart=/usr/local/process-exporter/process-exporter -config.path=/usr/local/process-exporter/process-exporter.yaml
Restart=on-failure
[Install]
WantedBy=multi-user.target
启动process-exporter
systemctl daemon-reload
systemctl start process_exporter
systemctl enable process_exporter
验证
curl localhost:9256/metrics
修改Prometheus配置文件
增加
- job_name: 'process'
static_configs:
- targets: ['172.16.8.187:9256']
重启Prometheus

添加告警规则
cat process.yml
groups:
- name: process
rules:
- alert: backup-mysql-Down
expr: absent(namedprocess_namegroup_states{groupname="map[:mysql]"})
for: 1m
labels:
severity: critical
annotations:
summary: backup slave mysql docker process Down (instance {{ $labels.instance }})
description: "backup slave mysql process is down\n LABELS = {{ $labels }}"
- alert: pushgateway-Down
expr: absent(namedprocess_namegroup_states{groupname="map[:pushgateway]"})
for: 1m
labels:
severity: critical
annotations:
summary: pushgateway process Down (instance {{ $labels.instance }})
description: "pushgateway process is down\n LABELS = {{ $labels }}"
- alert: dbback-process-Down
expr: absent(namedprocess_namegroup_states{groupname="map[:dbbakup]"})
for: 1m
labels:
severity: critical
annotations:
summary: dbbackup docker process Down (instance {{ $labels.instance }})
description: "dbbackup docker process is down\n LABELS = {{ $labels }}"
Last updated