深入了解Process Exporter:Prometheus进程监控利器

一、概述

process-exporter主要用来监控进程的运行状态和资源使用情况。

exporter是从/proc目录下获取进程的状态。

二、安装

1、传统安装

下载二进制包,下载链接:https://github.com/ncabatoff/process-exporter/releases/tag/v0.8.1

2、kubernetes中安装

一般推荐使用daemonset的方式进行安装。感兴趣的话可以搜索一下相关文章。

3、运行

  process-exporter  -config.path filename.yml

4、配置文件

1.组名

每一项都process_names给出了识别和命名过程的秘诀。可选name标签定义一个用于命名匹配进程的模板;如果未指定,则name默认为{{.ExeBase}}.

可用的模板变量:

  • {{.Comm}}包含原始可执行文件的基本名称,即第二个字段/proc/<pid>/stat
  • {{.ExeBase}}包含可执行文件的基本名称
  • {{.ExeFull}}包含可执行文件的完全限定路径
  • {{.Username}}包含有效用户的用户名
  • {{.Matches}}映射包含应用 cmdline 正则表达式产生的所有匹配项
  • {{.PID}}包含进程的PID。请注意,使用 PID 意味着该组将仅包含一个进程。
  • {{.StartTime}}包含进程的开始时间。这与 PID 结合使用非常有用,因为 PID 会随着时间的推移而被重用。
  • {{.Cgroups}}包含(如果支持)进程 ( /proc/self/cgroup) 的 cgroup。这对于识别进程属于哪个容器特别有用。
2.进程选择器

每一项process_names必须包含一个或多个选择器(commexecmdline);如果存在多个选择器,则它们必须全部匹配。每个选择器都是一个字符串列表,用于与进程的commargv[0]或在 的情况下匹配cmdline应用于命令行的正则表达式。 cmdline regexp 使用Go 语法

对于commexe,字符串列表是一个 OR,这意味着与任何字符串匹配的任何进程都将添加到该项目的组中。

对于cmdline,正则表达式列表是 AND,这意味着它们都必须匹配。正则表达式中的任何捕获组都必须使用该?P<name>选项来为捕获分配名称,该名称用于填充.Matches.

事例如下:

process_names:
  - exe:
    - /opt/sidecar/thanos-0.23.1.linux-amd64/thanos
    cmdline:
    - sidecar
    name: thanos:sidecar

  - cmdline:
    - /usr/local/bin/relay
    name: carbon_c_relay
    
  - cmdline:
    - /opt/(?P<name>\w{4,})/cachex
    name: cachex:{{.Matches.name}}

5、常用指标:

num_procs

指标类型:gauge(随意变更大小)

指标说明:进该组中的进程数

cpu_seconds_total

指标类型:counter(只增不减)

指标说明:于 /proc/[pid]/stat 字段 utime(14) 和 stime(15),即用户和系统时间。

read_bytes_total

指标类型:counter

指标说明:基于 /proc/[pid]/io 字段 read_bytes 读取的字节数

write_bytes_total

指标类型:counter

指标说明:基于 /proc/[pid]/io 字段 write_bytes 写入的字节数

major_page_faults_total

指标类型:counter

指标说明:基于 /proc/[pid]/stat 字段 majflt(12) 的主要页面错误数。

minor_page_faults_total

指标类型:counter

指标说明:基于 /proc/[pid]/stat 字段 minflt(10) 的次要页面错误数。

context_switches_total

指标类型:counter

指标说明:基于 /proc/[pid]/status 字段 volunteer_ctxt_switches 和 nonvolunter_ctxt_switches 的上下文切换数量

memory_bytes

指标类型:gauge

指标说明:进使用的内存字节数

open_filedesc

指标类型:gauge

指标说明:文件描述符的数量

worst_fd_ratio

指标类型:gauge

指标说明:打开 filedesc 与 filedesc 限制的最差比率

oldest_start_time_seconds

指标类型:gauge

指标说明:最旧进程启动的纪元时间(自 1970/1/1 以来的秒数)

num_threads

指标类型:gauge

指标说明:组中所有进程的线程数总和

states

指标类型:gauge

指标说明:组中处于各种状态的线程数,基于 /proc/[pid]/stat 中的字段 state(3)。额外标签state可以具有以下值:Running, Sleeping, Waiting, Zombie, Other

6、验证指标

通过curl默认的端口9256来验证指标是否收集到

curl http://localhost:9256/metrics

7、常用告警规则

 #进程停止告警规则
 namedprocess_namegroup_num_procs{groupname!~"map.*(query|sidecar)."} < 1
 
 #启动时间小于三分钟,意味着发生过重启
 (time() - namedprocess_namegroup_oldest_start_time_seconds{groupname!~"map.*(query|sidecar)."})/60 < 3

三、garafana

仪表盘位置:https://grafana.net/dashboards/249

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值