**前置文章:**[Centos7.6安装Prometheus(普罗米修斯)监控](https://www.xiaoleizhang.com/index.php/archives/10/ "Centos7.6安装Prometheus(普罗米修斯)监控") **前置文章:**[Prometheus(普罗米修斯)安装Grafana可视化图形工具](https://www.xiaoleizhang.com/index.php/archives/23/ "Prometheus(普罗米修斯)安装Grafana可视化图形工具") **环境配置** |服务器|IP地址| | :------------: | :------------: | |Prometheus服务器|10.60.147.101| |需要被监控进程的服务器|10.60.239.67| |grafana服务器|10.60.15.202| ------------ ------------ # 一、process-exporter简介 Prometheus有众多的exporter可供使用,如在前面的[Centos7.6安装Prometheus(普罗米修斯)监控](https://www.xiaoleizhang.com/index.php/archives/10/ "Centos7.6安装Prometheus(普罗米修斯)监控")一文中提到的node_exporter就可以用来采集机器的各项指标,从而监控机器的状态。 但是如果机器上运行了一些小脚本或者一些进程,想要对其进行监控,那么process-exporter会是一个现成的好选择。 如名所示,process-exporter就是用来监控进程的,其中一项能力,便是监控进程的状态。使用起来也简单。 # 二、process-exporter部署 ## 1、安装process-exporter 在安装好了Prometheus的前提下,打开process-exporter的Github release版本列表,下载最新发布版本的适合你机器的那一项,这里我选择的是process-exporter-0.7.9.linux-amd64.tar.gz,下载好后上传到需要被监控进程的服务器上(如果你的服务器可以连接外网,那么也可以直接用wget命令下载到服务器上),然后解压使用 process-exporter的Github release版本列表地址:https://github.com/ncabatoff/process-exporter/releases wget命令 ```shell wget https://github.com/ncabatoff/process-exporter/releases/download/v0.7.9/process-exporter-0.7.9.linux-amd64.tar.gz ``` 完成后可以看到 ```shell [root@10-60-239-67 ~]# ll total 3480 -rw-r--r-- 1 root root 3561909 Oct 31 20:35 process-exporter-0.7.9.linux-amd64.tar.gz [root@10-60-239-67 ~]# ``` 然后解压重命名 ```shell tar -xvf process-exporter-0.7.9.linux-amd64.tar.gz -C /usr/local/ mv /usr/local/process-exporter-0.7.9.linux-amd64 /usr/local/process-exporter ``` ## 2、配置process-exporter 现在我们开始设置我们需要监控的进程。process-exporter的做法是配置需要监控的进程的名称,他会去搜索该进程从而得到其需要的监控信息,其实也就是我们常做的“ps -ef | grep xxx”命令来查看对应的进程。配置文件一开始是不存在的,需要我们创建,名字可以自定义 ```shell vim /usr/local/process-exporter/process-exporter-config.yaml ``` 内容如下 ```shell process_names: - name: "{{.Matches}}" cmdline: - 'nginx' - name: "{{.Matches}}" cmdline: - 'mysql' ``` 这里,在配置文件(process-exporter-config.yaml)中,我们添加了两个要监控的进程名“nginx”和“mysql”,一个process_names就定义了要监控的一组进程,{{.Matches}}模板表示映射包含应用命令行所产生的所有匹配项 把process-exporter做成Service ```shell vim /etc/systemd/system/process_exporter.service ``` 内容如下 ```shell [Unit] Description=process_exporter After=network-online.target [Service] Restart=on-failure ExecStart=/usr/local/process-exporter/process-exporter -config.path /usr/local/process-exporter/process-exporter-config.yaml [Install] WantedBy=multi-user.target ``` 启动服务以及设置开机自启 ```shell systemctl daemon-reload systemctl start process_exporter.service systemctl enable process_exporter.service systemctl status process_exporter.service ``` 确认端口(9256) ```shell [root@10-60-239-67 ~]# ss -anltp | grep 9256 LISTEN 0 4096 :::9256 :::* users:(("process-exporte",pid=4906,fd=3)) [root@10-60-239-67 ~]# ``` process-exporter默认在端口9256下提供http服务供prometheus采集,因此可以直接尝试查看状态 ```shell curl http://localhost:9256/metrics ``` 会看到一堆输出,不太适合查看,建议你可以这么看,你如果能找到一堆“namedprocess_namegroup_states”,那就是进程状态信息了 ```shell [root@10-60-239-67 ~]# curl http://localhost:9256/metrics | grep namedprocess_namegroup_states % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 14991 0 14991 0 0 770k 0 --:--:-- --:--:-- --:--:-- 813k # HELP namedprocess_namegroup_states Number of processes in states Running, Sleeping, Waiting, Zombie, or Other # TYPE namedprocess_namegroup_states gauge namedprocess_namegroup_states{groupname="map[:mysql]",state="Other"} 0 namedprocess_namegroup_states{groupname="map[:mysql]",state="Running"} 0 namedprocess_namegroup_states{groupname="map[:mysql]",state="Sleeping"} 29 namedprocess_namegroup_states{groupname="map[:mysql]",state="Waiting"} 0 namedprocess_namegroup_states{groupname="map[:mysql]",state="Zombie"} 0 namedprocess_namegroup_states{groupname="map[:nginx]",state="Other"} 0 namedprocess_namegroup_states{groupname="map[:nginx]",state="Running"} 0 namedprocess_namegroup_states{groupname="map[:nginx]",state="Sleeping"} 2 namedprocess_namegroup_states{groupname="map[:nginx]",state="Waiting"} 0 namedprocess_namegroup_states{groupname="map[:nginx]",state="Zombie"} 0 [root@10-60-239-67 ~]# ``` 从这里也能看出来,process-exporter会给出你设置要观察的进程关键词搜索到的在不同状态下的所有进程的数量,比如这里我观察的两个进程均在“state="Sleeping"”状态下才有数值,说明都处于睡眠状态下,在等待唤醒,是正常的 # 三、Prometheus服务器上增加数据源 登录Prometheus服务器,修改Prometheus的配置文件,增加process-exporter的数据源 ```shell vim /usr/local/prometheus/prometheus.yml ``` 在配置文件的最后增加如下内容,注意格式 ```shell - job_name: 'process-exporter' static_configs: - targets: ['10.60.239.67:9256'] ``` 保存退出后,重启下prometheus的服务 ```shell systemctl restart prometheus.service ``` 重启后,你可以登录Prometheus服务器的web界面看Targets中process-exporter有没有UP ![Targets中process-exporter的状态.png](https://www.xiaoleizhang.com/usr/uploads/2021/11/2737449574.png) # 四、在Grafana web界面中增加Dashboard 登录Grafana的web界面,可以使用模板套用,比较方便,我用的模板id是249,进入下载地址后选择Download JSON然后下载下json文件。后面再进行Import,如果你有外网也可以直接使用Import模板id 模板下载地址:https://grafana.com/grafana/dashboards/249 ![Grafana上传模板.png](https://www.xiaoleizhang.com/usr/uploads/2021/11/3647940140.png) # 五、进程监控展示 模板弄好,选择你正确的数据源,你就能看到如下的效果 ![process-exporter在Grafana图形监控展示.png](https://www.xiaoleizhang.com/usr/uploads/2021/11/3099767017.png) 最后修改:2022 年 01 月 09 日 © 允许规范转载 赞 0 如果觉得我的文章对你有用,请随意赞赏