深色模式
Process Exporter 进程监控
整机 CPU 看不出“哪个进程吃资源”。Process Exporter 按进程名分组,定位问题进程一目了然。
适用环境
- Linux 服务器,已装 Prometheus
- 需要监控 nginx、java、mysql 等具体进程
bash
# 先看进程名,用于后续匹配
ps -eo comm,pcpu,pmem | sort -k2 -r | head1
2
2
操作步骤
1. 安装 Process Exporter
bash
VERSION=v0.12.0
cd /opt
wget https://github.com/ncabatoff/process-exporter/releases/download/v${VERSION}/process-exporter-${VERSION}.linux-amd64.tar.gz
tar xf process-exporter-${VERSION}.linux-amd64.tar.gz1
2
3
4
2
3
4
2. 编写匹配配置
yaml
process_names:
- name: "{{.Comm}}"
cmdline:
- '.+'1
2
3
4
2
3
4
或按进程名精确匹配:
yaml
process_names:
- name: nginx
cmdline:
- 'nginx'1
2
3
4
2
3
4
3. 启动并接入 Prometheus
bash
/usr/local/bin/process-exporter -config.path config.yml &1
yaml
- job_name: process
static_configs:
- targets: ['localhost:9256']1
2
3
2
3
验证
promql
# 按进程名看 CPU 占比(秒/秒)
rate(namedprocess_namegroup_cpu_seconds_total{groupname="nginx"}[5m])
# 进程是否存活
namedprocess_namegroup_num_procs{groupname="nginx"}1
2
3
4
2
3
4
常见坑
进程名匹配会聚合
同名的多个进程会被合并成一个 group,要看单进程需改用 pid 维度。
容器里读不到宿主机进程
Process Exporter 只能看到自身 pid namespace 的进程,容器内运行需挂宿主 pid namespace。