process-exporter主要用来做进程监控,比如某个服务的进程数、消耗了多少CPU、内存、IO资源等。

1、process-exporter,可从github中搜索下载,process-exporter非官方出品,但能基本满足我们对进程监控的需求。

# wget https://github.com/ncabatoff/process-exporter/releases/download/v0.7.2/process-exporter-0.7.2.linux-amd64.tar.gz

# tar -xvf process-exporter-0.7.2.linux-amd64.tar.gz -C /usr/local/

# cd /usr/local/

# ln -s process-exporter-0.7.2.linux-amd64 process_exporter

# cd process_exporter

# ln -s process-exporter process_exporter

注:修改目录名,统一风格

2、创建配置文件,并添加要监控的进程

# cat /usr/local/process_exporter/config.yaml

process_names:

- name: "{{.Matches}}"

cmdline:

- '/usr/local/prometheus/prometheus'

- name: "{{.Matches}}"

cmdline:

- '/usr/local/alertmanager/alertmanager'

- name: "{{.Matches}}"

cmdline:

- '/usr/local/node_exporter/node_exporter'

- name: "{{.Matches}}"

cmdline:

- '/usr/bin/supervisord -c /etc/supervisord.conf'

3、使用systemd方式启动process_exporter

# cat > /lib/systemd/system/process_exporter.service <<EOF

[Unit]

Description=process-exporter

[Service]

ExecStart=/usr/local/process_exporter/process_exporter -config.path=/usr/local/process_exporter/config.yaml

Restart=on-failure

[Install]

WantedBy=multi-user.target

EOF

启动process_exporter服务,并设置开机自启动

# systemctl daemon-reload

# systemctl enable process_exporter

# systemctl start process_exporter

默认端口:9256

4、将process_exporter做为target添加到prometheus中并加载配置

# vim /usr/local/prometheus/prometheus.yml

- job_name: 'process_exporter'

static_configs:

- targets: ['monitor01:9256']

labels:

app: process_exporter

nodename: monitor01

role: process_exporter

然后使用supervisorctl命令update下配置即可

# supervisorctl -uadmin -p1235 update

5、在prometheus控制台进行查询验证。

namedprocess_namegroup_num_procs,用于进程数监控

例如:namedprocess_namegroup_num_procs{groupname=~".*prometheus.*"}

namedprocess_namegroup_cpu_seconds_total,进程所占CPU监控,包括system和user两类

例如:sum(rate(namedprocess_namegroup_cpu_seconds_total{groupname=~".*prometheus.*"}[2m]))

namedprocess_namegroup_memory_bytes,进程所常驻内存监控

例如:namedprocess_namegroup_memory_bytes{groupname=~".*prometheus.*", memtype="resident"}

namedprocess_namegroup_read_bytes_total,进程磁盘读

例如:rate(namedprocess_namegroup_read_bytes_total{groupname=~".*prometheus.*"}[2m])

namedprocess_namegroup_write_bytes_total,进程磁盘写

rate(namedprocess_namegroup_write_bytes_total{groupname=~".*prometheus.*"}[2m])

最后以进程数查询结果如下图所示:

prometheus监控容器标签(Prometheus之使用process-exporter来监控服务进程)(1)

使用Grafana展示效果

prometheus监控容器标签(Prometheus之使用process-exporter来监控服务进程)(2)

,