使用process-exporter监控应用

安装Prometheus+Grafana

node-exporter是基于Prometheus+Grafana的进程监控程序
安装Prometheus+Grafana

安装node-exporter

下载地址: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中配置process-exporter

在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中查看是否成功连接

Grafana中配置process-exporter

import dashboard 导入模板。模板 id 249,至此就配置完成了,打开配置的dashboard看是否有对进程的监控

监控Greenplum的各个节点

使用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

你可能感兴趣的:(shell)