监控利器之Promenade基于process-exporter监控服务的进程

背景介绍

  • 由于我们常用的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        #重载服务

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44729138/article/details/114438177