背景介绍
- 由于我们常用的node_exporter并不能覆盖所有监控项,而往往在生产环境我们需要对某个程序的进程进行监控,从而判断业务是否正常,因此Process-exporter应运而生。
- process exporter在prometheus中用于监控进程,通过process_exporter,可从宏观角度监控应用的运行状态(譬如监控redis、mysql的进程资源等)。
部署
1、下载监控插件
wget https://github.com/ncabatoff/process-exporter/releases/download/v0.7.5/process-exporter-0.7.5.linux-amd64.tar.gz
2、解压和配置
解压
cd /usr/local/src
tar -xf process-exporter-0.7.5.linux-amd64.tar.gz
mv process-exporter-0.7.5.linux-amd64 process-exporter
chown -R root:root /usr/local/src/process-exporter
编辑配置文件(参考README.md文件第80行)
process_exporter的做法是配置需要监控的进程的名称,它会去搜索该进程从而得到其需要的监控信息,其实也就是我们常做的"ps -efl | grep xxx”命令来查看对应的进程。配置文件一开始是不存在的,需要我们创建,名字可以自定义:
-
注意:如果一个进程符合多个匹配项,只会归属于第一个匹配的groupname组
其中,name选项有四个(官方翻译https://github.com/ncabatoff/process-exporter):
{{.Comm}} 包含原始可执行文件的基本名称,即第二个字段 /proc//stat
{{.ExeBase}} 包含可执行文件的basename
{{.ExeFull}} 包含可执行文件的完全限定路径
{{.Username}} 包含有效用户的用户名
{{.Matches}} map包含应用cmdline regexps产生的所有匹配项 -
补充说明:name选项其实影响的是metrics中的key:groupname,以监控zookeeper和kafka作为例
touch process-name.yaml
vim process-name.yaml
process_names:
- name: "{{.Matches}}"
cmdline:
- '/u01/isi/application/component/zookeeper-3.4.10/bin/../zookeeper-3.4.10.jar'
- name: "{{.Matches}}"
cmdline:
- '/u01/isi/application/component/kafka_2.11-0.10.0.1/bin/../libs/kafka_2.11-0.10.0.1.jar'
3、启停服务
注意:启动参数
-config.path #process-name.yaml的配置文件路径
-web.listen-address #blackbox_exporter监听的服务端口,默认为9256
cd /usr/local/src/process-exporter #进入blackbox_exporter的目录
mkdir logs #创建日志目录
nohup ./process-exporter -config.path="process-name.yaml" -web.listen-address=":9256">> logs/process-exporter.log 2>&1 & #启动服务
netstat -tanlp | grep 9256 #查看监听端口
ps -ef |grep process-exporter |grep -v grep |awk '{print $2}' | xargs kill -9 #停止服务
4、在Prometheus中添加配置
1)编写fd_config文件
touch zk_kafka.json
vim zk_kafka.json
[
{
"labels": {
"desc": "zk node",
"group": "zk_process",
"host_ip": "192.168.16.113",
"hostname": "isi-16-113"
},
"targets": [
"192.168.16.113:9256"
]
},
{
"labels": {
"desc": "kafka node",
"group": "kafka_process",
"host_ip": "192.168.16.113",
"hostname": "isi-16-113"
},
"targets": [
"192.168.16.113:9256"
]
}
]
2)Prometheus.yml中添加配置
...
...
- job_name: 'zk_kafka-process'
scrape_interval: 2m
scrape_timeout: 120s
static_configs:
file_sd_configs:
- files:
- /home/monitor/prometheus/conf.d/zk_kafka.json
5、校验配置,重载服务
cd /usr/local/src/prometheus/
./promtool check config prometheus.yml #检查配置文件是否正确
curl -XPOST http://192.168.16.115:9090/-/reload #重载服务