last modified by tianju.zhou , 2024-11-26 10:00:56
process-exporter
Github: https://github.com/ncabatoff/process-exporter
process-exporter 的作者已经不在维护了!
参考其他博客:
- 包选择
# 检查操作系统的架构
uname -a
# > ... x86_64 ...
# 选择与操作系统架构对应的包 amd64 下载
# https://github.com/ncabatoff/process-exporter/releases
wget https://github.com/ncabatoff/process-exporter/releases/download/v0.7.10/process-exporter-0.7.10.linux-amd64.tar.gz
- 配置文件
场景:捕获特定格式的进程参数
ps -ef | grep hive | head -1
# > work 5140 164719 1 07:51 ? 00:03:17 /home/ke/bin/jdk/bin/java -Dproc_jar -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Stack=true -XX:+HeapDumpOnOutOfMemoryError -Dyarn.log.dir=/home/ke/logs/hadoop-logs -Dyarn.log.file=hadoop.log -Dyarn.home.dir=/home/ke/bin/hadoop -Dyarn.root.logger=INFO,console -Djava.library.path=/home/ke/bin/hadoop/lib/native -Xmx2048m -Dhadoop.log.dir=/home/ke/logs/hadoop-logs -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/home/ke/bin/hadoop -Dhadoop.id.str=work -Dhadoop.root.logger=INFO,console -Dhadoop.policy.file=hadoop-policy.xml -Dhadoop.security.logger=INFO,NullAppender org.apache.hadoop.util.RunJar /home/ke/bin/hive/lib/hive-cli-1.2.1.jar org.apache.hadoop.hive.cli.CliDriver --hiveconf mapred.job.name=wangjingyuan001_256698_287106770_320162129@10.201.13.32 --hiveconf tez.queue.name=bigdata --hiveconf mapred.job.queue.name=bigdata --hiveconf spark.app.name=wangjingyuan001_256698_287106770_320162129@10.201.13.32 --hiveconf hive.session.id=wangjingyuan001_256698_287106770_320162129@10.201.13.32 --hiveconf hive.execution.engine=tez --hiveconf spark.queue.name=bigdata -f /home/work/tmp/8f9c15313d7e443d1521414a6b6814f3_20240123.sql
# 目标:捕获 wangjingyuan001_256698_287106770_320162129@10.201.13.32 这个字段作为进程标识
配置文件 config.yml
process_names:
# diaodu executor subprocess
- name: "{{.Matches.name}}"
cmdline:
- '.*[= ](?P<name>\S+?_\d+?_\d+?_\d+?@\d+.\d+.\d+.\d+).*'
- 启动脚本
自己编写的启动脚本 start.sh,可用于重启
#!/bin/bash
# set -x
set -eu
cd $(dirname $0)
if ps -ef | grep -v grep | grep -v start | grep -v deploy | grep process-exporter > /dev/null ; then
kill -9 $(ps -ef | grep -v grep | grep -v start | grep -v deploy | grep process-exporter | awk '{print $2}')
fi
nohup ./process-exporter -config.path=config.yml 2>stderr.log >stdout.log &
- 定时重启
Issue: https://github.com/ncabatoff/process-exporter/issues/282
如果 process-exporter 的 metrics 接口一直有调用的话,process-exporter 就会把曾经检测到的进程都放到内存中(即使进程已经结束了),直到一段时间没有调用才会释放,这种方式对于定时采集 metrics 接口不太友好,会导致 metrics 接口的指标项目过多和 process-exporter 自身内存溢出的隐患,但由于 process-exporter 的作者不在维护了,相关的 issue 也没有人处理了,可以简单通过 crontab 定时重启的方式避免这个问题。
- 常用的 metrics
| metrics | 说明 | 常用 labels |
|---|---|---|
| process_exporter_build_info | 用于测试 | instance, version |
| namedprocess_namegroup_num_procs | 进程数量 | instance, groupname |
| namedprocess_namegroup_cpu_seconds_total | CPU 使用 | instance, groupname, mode |
| namedprocess_namegroup_memory_bytes | 内存使用 | instance, groupname, memtype |
Copyright © 2024 zhoutianju.
All rights reserved.
All rights reserved.