一、概述
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
必须包含一个或多个选择器(comm
、exe
或cmdline
);如果存在多个选择器,则它们必须全部匹配。每个选择器都是一个字符串列表,用于与进程的comm
、argv[0]
或在 的情况下匹配cmdline
应用于命令行的正则表达式。 cmdline regexp 使用Go 语法。
对于comm
和exe
,字符串列表是一个 OR,这意味着与任何字符串匹配的任何进程都将添加到该项目的组中。
对于cmdline
,正则表达式列表是 AND,这意味着它们都必须匹配。正则表达式中的任何捕获组都必须使用该?P<name>
选项来为捕获分配名称,该名称用于填充.Matches
.
事例如下:
process_names:- exe:- /opt/sidecar/thanos-0.23.1.linux-amd64/thanoscmdline:- sidecarname: thanos:sidecar- cmdline:- /usr/local/bin/relayname: carbon_c_relay- cmdline:- /opt/(?P<name>\w{4,})/cachexname: 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