前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Prometheus Process-exporter 监控进程状态

Prometheus Process-exporter 监控进程状态

作者头像
Kevin song
发布2023-02-22 21:32:08
5.4K0
发布2023-02-22 21:32:08
举报
文章被收录于专栏:运维监控日志分析

Process-exporter

Process-exporter 主要监控主机进程状态,采集服务的进程数、消耗CPU、内存、IO资源等。

Process-exporter 官网

https://github.com/ncabatoff/process-exporter

添加prometheus用户

添加prometheus用户

代码语言:javascript
复制
groupadd prometheus
useradd -g prometheus -s /sbin/nologin prometheus

二进制部署Process-exporter

1,下载Process-exporter

代码语言:javascript
复制
wget https://github.com/ncabatoff/process-exporter/releases/download/v0.7.10/process-exporter-0.7.10.linux-amd64.tar.gz
tar -xvf process-exporter-0.7.10.linux-amd64.tar.gz  -C /usr/local/
cd    /usr/local/
mv process-exporter-0.7.10.linux-amd64/ process-exporter

2,process-exporter 版本信息

代码语言:javascript
复制
/usr/local/process-exporter/process-exporter  --version

3,运行process-exporter

代码语言:javascript
复制
./process-exporter -config.path process-name.yaml >process.log 2>&1 &

4,systemctl 管理process-exporter

vim /usr/lib/systemd/system/process-exporter.service

代码语言:javascript
复制
[Unit]
Description=process-exporter
After=network.target

[Service]
User=root
Type=simple
ExecStart=/usr/local/process-exporter/process-exporter --config.path=/usr/local/process-exporter/process-name.yaml
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure

[Install]
WantedBy=multi-user.target

5,启动、开机启动process-exporter

代码语言:javascript
复制
systemctl  start  process-exporter  && systemctl   enable   process-exporter
ps -ef |grep process-exporter

6,Process-exporter 配置文件

默认无配置文件需要手动创建

vim process-name.yaml

代码语言:javascript
复制
process_names:
 - name: "{{.Matches}}"
   cmdline:
   - 'prometheus'
 - name: "{{.Matches}}"
   cmdline:
   - 'chronyd'

{{.Matches}}模板表示映射包含应用命令行所产生的所有匹配项

7,process exporter 模板变量

  • {{.Comm}}包含原始可执行文件的名称,第二个字段/proc/<pid>/stat
  • {{.ExeBase}}包含可执行文件的基本名称
  • {{.ExeFull}}包含可执行文件的路径
  • {{.Username}}包含有效用户的用户名
  • {{.Matches}}映射包含应用 cmdline 正则表达式产生的匹配项
  • {{.PID}}包含进程的 PID。使用 PID 意味着该组将只包含一个进程。
  • {{.StartTime}}包含进程的开始时间。
  • {{.Cgroups}}包含(如果支持)进程的 cgroups()

8,process exporter 常用指标

运行的进程数

namedprocess_namegroup_num_procs

Running/Sleeping/Other/Zombie状态的进程数

namedprocess_namegroup_states

获取/proc/[pid]/stat 进程CPU utime、stime状态时间

namedprocess_namegroup_cpu_seconds_total

获取/proc/[pid]/io 进程读取字节数

namedprocess_namegroup_read_bytes_total

获取/proc/[pid]/io 进程写入字节数

namedprocess_namegroup_write_bytes_total

获取进程使用的内存字节数

namedprocess_namegroup_memory_bytes

获取进程使用的文件描述符数量

namedprocess_namegroup_open_filedesc

运行的线程数

namedprocess_namegroup_thread_count

获取线程CPU状态时间

namedprocess_namegroup_thread_cpu_seconds_total

获取线程IO字节数

namedprocess_namegroup_thread_io_bytes_total

9,http 访问测试(process-exporter默认监听9256端口)

process-exporter默认端口9256下

代码语言:javascript
复制
curl http://localhost:9256/metrics

Prometheus process-exporter 配置

1,prometheus.yml中加入process-exporter

代码语言:javascript
复制
vim  /usr/local/prometheus/prometheus.yml
- job_name: 'process'
    static_configs:
      - targets: ['192.168.100.167:9256']

2,检查prometheus.yml格式

代码语言:javascript
复制
/usr/local/prometheus/promtool   check config /usr/local/prometheus/prometheus.yml

3,Prometheus restful接口热加载配置

代码语言:javascript
复制
curl  -X POST http://127.0.0.1:9090/-/reload

访问 Prometheus Web UI 查询数据

查询服务进程数

namedprocess_namegroup_num_procs

Prometheus Rule 告警规则

1,创建rule告警目录

代码语言:javascript
复制
mkdir   -p /usr/local/prometheus/rules/
chown  prometheus.prometheus /usr/local/prometheus/rules/

2,编辑rule配置文件

vim /usr/local/prometheus/rules/rules.yml

代码语言:javascript
复制
- name: process_status
  rules:
  - alert: process_status
    expr: namedprocess_namegroup_num_procs==0
    for: 1m
    labels:
     severity: critical
    annotations:
     summary: "主机 {{ $labels.instance }} process 异常!!!"
     description: "{{ $labels.instance }} {{$labels.groupname}} process异常!!!(value: {{ $value }})"

3,检查rule文件格式

代码语言:javascript
复制
/usr/local/prometheus/promtool  check rules  rules.yml

Prometheus 告警测试

1,停止主机 192.168.100.234 chronyd服务

代码语言:javascript
复制
systemctl    stop chronyd

2,访问 Prometheus Web UI 查看Alerts

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源搬运工宋师傅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
Prometheus 监控服务
Prometheus 监控服务(TencentCloud Managed Service for Prometheus,TMP)是基于开源 Prometheus 构建的高可用、全托管的服务,与腾讯云容器服务(TKE)高度集成,兼容开源生态丰富多样的应用组件,结合腾讯云可观测平台-告警管理和 Prometheus Alertmanager 能力,为您提供免搭建的高效运维能力,减少开发及运维成本。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档