searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

process exporter简介

2023-12-08 06:04:40
141
0

1、安装
下载安装包,解压运行即可:

$ wget https://github.com/ncabatoff/process-exporter/releases/download/v0.7.5/process-exporter-0.5.0.linux-amd64.tar.gz
$ tar -xvf process-exporter-0.7.5.linux-amd64.tar.gz
 

我们需要通过配置文件设置我们需要监控的进程。Process-Exporter他会去搜索该进程从而得到其需要的监控信息,其实也就是我们常做的“ps -efl | grep xxx”命令来查看对应的进程。配置文件一开始是不存在的,需要我们创建,名字可以自定义:
配置文件样例如下(process-conf.yml):

process_names:
- name: "{{.Comm}}"
cmdline:
- 'prometheus'
 

配置好后,我们依据此配置文件来运行process-exporter:

./process-exporter -config.path process-conf.yaml &
 

默认端口9256,可以通过curl验证是否采集指标成功:

$ curl http://localhost:9256/metrics
 

可以看到如下指标输出:

# HELP namedprocess_namegroup_states Number of processes in states Running, Sleeping, Waiting, Zombie, or Other
# TYPE namedprocess_namegroup_states gauge
namedprocess_namegroup_states{groupname="prometheus",state="Other"} 0
namedprocess_namegroup_states{groupname="prometheus",state="Running"} 0
namedprocess_namegroup_states{groupname="prometheus",state="Sleeping"} 53
namedprocess_namegroup_states{groupname="prometheus",state="Waiting"} 0
namedprocess_namegroup_states{groupname="prometheus",state="Zombie"} 0
# etc.

2、 配置

建议通过yaml文件配置要监控的进程及其分组。一个通用的配置文件如下所示,包含一个名称匹配器列表:

process_names:
  - matcher1
  - matcher2
  ...
  - matcherN

注意:如果一个进程符合多个匹配项,只会归属于第一个匹配的groupname组。

2.1 group name

可选的标签name定义了一个模板来命名匹配的进程;如果没有指定,name默认为{{. exebase}}。

其中,name选项主要有以下几个:

  • {{.Comm}} 包含原始可执行文件的基本名称,即 /proc/<pid>/stat
  • {{.ExeBase}} 包含可执行文件的basename
  • {{.ExeFull}} 包含可执行文件的完全限定路径
  • {{.Username}} 包含有效用户的用户名
  • {{.Matches}} map包含应用cmdline regexps产生的所有匹配项

举例:

ps -ef | grep redis  
 redis 771 1 0 Jun05 ? 00:45:49 /usr/bin/redis-server *:6379

 

{{.Comm}} 

groupname="redis-server"

exe或者sh文件名称

{{.ExeBase}}

groupname="redis-server *:6379"

/

{{.ExeFull}}

groupname="/usr/bin/redis-server *:6379"

ps中的进程完成信息

{{.Username}}

groupname="redis"

使用进程所属的用户进行分组

{{.Matches}}

groupname="map[:redis]"

表示配置到关键字“redis”

2.2 process selectors

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

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

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

process_names:
  # comm is the second field of /proc/<pid>/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+)
0条评论
0 / 1000
孙****洋
3文章数
0粉丝数
孙****洋
3 文章 | 0 粉丝
孙****洋
3文章数
0粉丝数
孙****洋
3 文章 | 0 粉丝
原创

process exporter简介

2023-12-08 06:04:40
141
0

1、安装
下载安装包,解压运行即可:

$ wget https://github.com/ncabatoff/process-exporter/releases/download/v0.7.5/process-exporter-0.5.0.linux-amd64.tar.gz
$ tar -xvf process-exporter-0.7.5.linux-amd64.tar.gz
 

我们需要通过配置文件设置我们需要监控的进程。Process-Exporter他会去搜索该进程从而得到其需要的监控信息,其实也就是我们常做的“ps -efl | grep xxx”命令来查看对应的进程。配置文件一开始是不存在的,需要我们创建,名字可以自定义:
配置文件样例如下(process-conf.yml):

process_names:
- name: "{{.Comm}}"
cmdline:
- 'prometheus'
 

配置好后,我们依据此配置文件来运行process-exporter:

./process-exporter -config.path process-conf.yaml &
 

默认端口9256,可以通过curl验证是否采集指标成功:

$ curl http://localhost:9256/metrics
 

可以看到如下指标输出:

# HELP namedprocess_namegroup_states Number of processes in states Running, Sleeping, Waiting, Zombie, or Other
# TYPE namedprocess_namegroup_states gauge
namedprocess_namegroup_states{groupname="prometheus",state="Other"} 0
namedprocess_namegroup_states{groupname="prometheus",state="Running"} 0
namedprocess_namegroup_states{groupname="prometheus",state="Sleeping"} 53
namedprocess_namegroup_states{groupname="prometheus",state="Waiting"} 0
namedprocess_namegroup_states{groupname="prometheus",state="Zombie"} 0
# etc.

2、 配置

建议通过yaml文件配置要监控的进程及其分组。一个通用的配置文件如下所示,包含一个名称匹配器列表:

process_names:
  - matcher1
  - matcher2
  ...
  - matcherN

注意:如果一个进程符合多个匹配项,只会归属于第一个匹配的groupname组。

2.1 group name

可选的标签name定义了一个模板来命名匹配的进程;如果没有指定,name默认为{{. exebase}}。

其中,name选项主要有以下几个:

  • {{.Comm}} 包含原始可执行文件的基本名称,即 /proc/<pid>/stat
  • {{.ExeBase}} 包含可执行文件的basename
  • {{.ExeFull}} 包含可执行文件的完全限定路径
  • {{.Username}} 包含有效用户的用户名
  • {{.Matches}} map包含应用cmdline regexps产生的所有匹配项

举例:

ps -ef | grep redis  
 redis 771 1 0 Jun05 ? 00:45:49 /usr/bin/redis-server *:6379

 

{{.Comm}} 

groupname="redis-server"

exe或者sh文件名称

{{.ExeBase}}

groupname="redis-server *:6379"

/

{{.ExeFull}}

groupname="/usr/bin/redis-server *:6379"

ps中的进程完成信息

{{.Username}}

groupname="redis"

使用进程所属的用户进行分组

{{.Matches}}

groupname="map[:redis]"

表示配置到关键字“redis”

2.2 process selectors

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

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

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

process_names:
  # comm is the second field of /proc/<pid>/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+)
文章来自个人专栏
个人专栏sy
3 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0