process-exporter介绍
在prometheus中,可以借助process-exporter用来检测所选进程的状态信息,官网地址https://github.com/ncabatoff/process-exporter
运行方法:
process-exporter [options] -config.path filename.yml
若选择监控的进城并对其进行分组,可以使用命令行参数或者yaml配置文件,推荐使用-confg.path指定配置文件路径。
详细的yml配置文件格式以及规则参考官方说明,以下是常用的监控规则
#监控主机上所有的进程
process_names:
- name: "{{.Comm}}"
cmdline:
- '.+'
#监控主机上指定进程
process_names:
- name: "{{.Matches}}"
cmdline:
- 'sshd'
常用的模板变量如下:
#配置文件根据变量名匹配到配置文件
{{.Comm}} 包含原始可执行文件的基本名称,即 /proc/<pid>/stat
{{.ExeBase}} 包含可执行文件的基本名称
{{.ExeFull}} 包含可执行文件的标准路径
{{.Username}} 包含有效用户的用户名
{{.Matches}} 包含所有由于应用cmdline正则表达式而产生的匹配项
{{.PID}} 包含过程的PID。请注意,使用PID意味着该组将仅包含一个进程
{{.StartTime}} 包含过程的开始时间。与PID结合使用时,这很有用,因为PID会随着时间的推移而被重用
日常工作,不建议使用PID或者StartTime
配置安装
安装并注册到系统服务
#下载
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 /usr/local/
#重命令
mv process-exporter-0.7.10.linux-amd64 process_exporter
#注册到系统服务
cat > /etc/systemd/system/process_exporter.service << EOF
[Unit]
Description=process_exporter
Documentation=https://github.com/ncabatoff/process-exporter
After=network.target
[Service]
ExecStart=/usr/local/process_exporter/process-exporter \
-config.path=/usr/local/process_exporter/process-conf.yaml
Restart=always
[Install]
WantedBy=multi-user.target
EOF
#加载并开机启动
systemctl daemon-reload && systemctl enable process_exporter
配置监控进程举例
process-exporter可以对进程名字进行匹配,获取进程信息,匹配的规则由name 对应的模板变量决定。
编写配置文件process-conf.yaml,监控所有进程。
# vim process-conf.yaml
#process_names:
# - name: "{{.Matches}}"
# cmdline:
# - 'sshd'
# - 'docker'
process_names:
- name: "{{.Comm}}"
cmdline:
- '.+'
#启动process-exporter
systemctl start process_exporter
配置完成后,查看metric信息: http://ip:9256
promethues sever上添加监控
在promethues配置文件prometheus.yml中,添加process exporter信息
- job_name: Process Monitor
static_configs:
- targets: ['192.168.33.130:9256']
检查配置文件并重启
./promtool check config prometheus.yml
systemctl restart prometheus
检查prometheus中tagerts是否存在
在prometheus中的console页面,就能查询到相关数据
配置granafa监控
使用模板id为249:
常用process查询
#统计由多少进程数
sum(namedprocess_namegroup_states)
#统计有多少僵尸进程
sum(namedprocess_namegroup_states{state=“Zombie”}