node-exporter是基于Prometheus+Grafana的进程监控程序
安装Prometheus+Grafana
下载地址:https://github.com/ncabatoff/process-exporter
编辑配置文件
sudo mkdir /opt/process-exporter
cd /opt/process-exporter/
sudo vim process-exporter.yml
node-exporter.yml配置
yml配置说明
组名选择器
配置说明:
每一项都process_names提供了用于识别和命名过程的方法。可选name标记定义用于命名匹配过程的模板;如果未指定,则name默认为{{.ExeBase}}。
可用的模板变量:
{{.Comm}} 包含原始可执行文件的基本名称,即 /proc//stat
{{.ExeBase}} 包含可执行文件的基本名称
{{.ExeFull}} 包含可执行文件的标准路径
{{.Username}} 包含有效用户的用户名
{{.Matches}} 地图包含所有因应用cmdline正则表达式而产生的匹配项
{{.PID}}包含过程的PID。请注意,使用PID意味着该组将仅包含一个进程。
{{.StartTime}}包含过程的开始时间。与PID结合使用时,这很有用,因为PID会随着时间的推移而被重用。
不建议使用PID或气StartTime::这几乎不是您想要的,并且可能会导致基数过高,而Prometheus会遇到麻烦。
默认配置:
process_names:
- name: "{{.Comm}}"
cmdline:
- '.+'
进程选择器
每个项目中process_names必须包含一个或多个选择(comm,exe 或cmdline); 如果存在多个选择器,则它们必须全部匹配。每个选择是一个字符串列表来匹配过程的comm,argv[0]或在的情况下cmdline,一个正则表达式应用到命令行。cmdline regexp使用Go语法。
对于comm和exe,字符串列表是一个OR,这意味着与任何字符串匹配的任何进程都将添加到该项目的组中。
对于cmdline,正则表达式列表为AND,表示它们都必须匹配。regexp中的任何捕获组都必须使用该?P选项为捕获分配一个名称,该名称用于填充.Matches。
性能提示:除了任何cmdline子句外,还要提供exe或comm子句,因此避免在可执行文件名称不匹配时执行regexp。
process_names:
# comm is the second field of /proc//stat minus parens.
# It is the base executable name, truncated at 15 chars.
# It cannot be modified by the program, unlike exe.
- comm:
- bash
# exe is argv[0]. If no slashes, only basename of argv[0] need match.
# If exe contains slashes, argv[0] must match exactly.
- exe:
- postgres
- /usr/local/bin/prometheus
# cmdline is a list of regexps applied to argv.
# Each must match, and any captures are added to the .Matches map.
- name: "{{.ExeFull}}:{{.Matches.Cfgfile}}"
exe:
- /usr/local/bin/process-exporter
cmdline:
- -config.path\s+(?P<Cfgfile>\S+)
例如
process_names:
- comm:
- chromium-browse
- bash
- prometheus
- gvim
- exe:
- /sbin/upstart
cmdline:
- --user
name: upstart:-user
编辑配置文件
process_names:
- name: "{{.Matches}}"
cmdline:
- 'greenplum'
- exe:
- /usr/local/greenplum-db-6.7.0/bin/postgres
docker方式启动
docker run -itd --rm -p 9256:9256 --privileged -v /proc:/host/proc -v /opt/process-exporter:/config ncabatoff/process-exporter --procfs /host/proc -config.path config/process-exporter.yml
启动后登陆网址ip:9256看是否可以访问
在Prometheus的配置文件中添加刚刚配置的地址
- job_name: sdw2-process
static_configs:
- targets: ['10.0.61.43:9256']
重新加载配置
调用api
PUT /-/reload
POST /-/reload
或者执行命令
ps -ef | grep prometheus
kill -HUP [pid]
登陆Prometheus在target中查看是否成功连接
import dashboard 导入模板。模板 id 249,至此就配置完成了,打开配置的dashboard看是否有对进程的监控
使用ps命令搜索机器上的greenplum节点
gpadmin 2699 1 0 13:26 ? 00:00:00 /usr/local/greenplum-db-6.7.0/bin/postgres -D /data/data2/primary/gpseg3 -p 6001
gpadmin 2700 1 0 13:26 ? 00:00:02 /usr/local/greenplum-db-6.7.0/bin/postgres -D /data/data1/primary/gpseg2 -p 6000
gpadmin 2703 1 0 13:26 ? 00:00:02 /usr/local/greenplum-db-6.7.0/bin/postgres -D /data/data2/mirror/gpseg1 -p 7001
gpadmin 2704 1 0 13:26 ? 00:00:00 /usr/local/greenplum-db-6.7.0/bin/postgres -D /data/data1/mirror/gpseg0 -p 7000
配置process-exporter
process_names:
- name: "{{.Matches}}"
cmdline:
- 'postgres'
- exe:
- /usr/local/greenplum-db-6.7.0/bin/postgres -D /data/data2/primary/gpseg3 -p 6001
- /usr/local/greenplum-db-6.7.0/bin/postgres -D /data/data1/primary/gpseg2 -p 6000
使用docker命令停止process-exporter的容器,因为有–rm容器会自动销毁,重新run一个process-exporter