prometheus + process-exporter监控进程

一、下载process-exporter安装包

1、本地下载后上传到linux服务器

下载地址:https://github.com/ncabatoff/process-exporter/releases/

2、直接在linux服务器上wget方式下载

# 新建目录
mkdir -p /data/prometheus/process-exporter
# 进入目标目录
cd /data/prometheus/process-exporter
# 下载
wget https://github.com/ncabatoff/process-exporter/releases/download/v0.7.10/process-exporter-0.7.10.linux-amd64.tar.gz
# 解压
tar -vxzf process-exporter-0.7.10.linux-amd64.tar.gz
# 移动到安装目录
mv /data/prometheus/process-exporter/process-exporter-0.7.10.linux-amd64 /usr/local/process-exporter
# 进入目录
cd /usr/local/process-exporter
# 新建配置文件
touch process.yml

3、process.yml

# 添加如下内容
process_names:
# 监控所有进程
#  - name: "{{.Matches}}"
#    cmdline:
#    - '.+'
  - name: "{{.Matches}}"
    cmdline:
    - 'mysqld'

process_names是个数组,每个成员表示一个分组。

name是分组的名称,这里使用模版。cmdline用于对分组中的进程进行过滤,这里的正则表达式就表示过滤所有进程。

因此,上述配置文件的含义是:采集所有进程的指标数据,当遍历到某个进程时,获取该进程的进程名,然后放到进程名对应的分组。

name字段可以使用固定的字符串,也可以使用以下模版:

{{.Comm}}:进程名
{{.ExeBase}}:可执行文件的文件名,与进程的区别是,进程名有长度15的限制
{{.ExeFull}}:可执行文件的全路径
{{.Username}}:进程的有效用户名
{{.Matches}}:用正则匹配cmdline等字段时得到的匹配项的map,例如下面的Cfgfile
{{.PID}}:pid,使用pid表示这个组只会有这一个进程
{{.StartTime}}:进程的起始时间
{{.Cgroups}}:进程的cgoup,可以用于区分不同的容器
进行分组进程过滤除了使用cmdline字段,还可以使用comm和exe,分别表示进程名和二进制路径,并且遵循以下规则:
如果使用了多个字段,则必须都匹配,例如,如果既使用了comm,又使用了exe,两个过滤必须都满足
对于comm和exe,它们是字符串数组,并且是OR的关系
对于cmdline,则是正则表达式数组,并且是AND的关系
process_names:
  # 进程名过滤,超过15个字符会被截断
  - comm:
    - bash

  # argv[0],如果开头不是/,说明匹配进程名
  # 如果开头是/,则需要使用二进制路径全匹配
  - exe:
    - postgres
    - /usr/local/bin/prometheus

  # 如果使用多个字段进行匹配,则需要都匹配
  - name: "{{.ExeFull}}:{{.Matches.Cfgfile}}"
    exe:
    - /usr/local/bin/process-exporter
    cmdline:
    - -config.path\s+(?P<Cfgfile>\S+)

二、将process-exporter配置为系统服务

1、进入systemd目录

cd /usr/lib/systemd/system

2、创建文件

vim process-exporter.service

# 添加如下内容
[[Unit]
Description=https://github.com/ncabatoff/process-exporter
After=network-online.target

[Service]
Restart=on-failure
ExecStart=/usr/local/process-exporter/process-exporter --config.path=/usr/local/process-exporter/process.yml

[Install]
WantedBy=multi-user.target

3、服务命令

# 生效系统systemd文件
systemctl daemon-reload
# 设置开机自启
systemctl enable process-exporter.service
# 查看状态
systemctl status process-exporter.service
# 启动
systemctl start process-exporter.service
# 停止
systemctl stop process-exporter.service

三、启动process-exporter

# 进入目标目录
/usr/local/process-exporter
# 启动命令如下
nohup ./process-exporter -config.path=process.yml -web.listen-address=:9067 >> ./process-exporter.out 2>&1 &

process-exporter用来安装到被监控的主机上,服务器端通过调用默认端口9256来获取服务器信息。访问process-exporter

http://172.30.18.244:9256/metrics,默认端口为9256

四、Docker部署(推荐)

五、添加 Prometheus 监控配置

- job_name: "process"
    file_sd_configs:
    - refresh_interval: 1m
      files:
      - /data/docker/prometheus/sd_config/process.json

六、process.json

[{
    "targets": [
       "192.168.0.62:9256"
    ],
    "labels": {
       "service": "进程监控",
       "idc": "ctyun"
    }
}]

七、process-exporter的主要指标

1、process-exporter常用指标。

process-exporter中进程的指标以namedprocess_namegroup开头:

namedprocess_namegroup_num_procs:运行的进程数

namedprocess_namegroup_states:Running/Sleeping/Other/Zombie状态的进程数

namedprocess_namegroup_cpu_seconds_total:获取/proc/[pid]/stat 进程CPU utime、stime状态时间

namedprocess_namegroup_read_bytes_total:获取/proc/[pid]/io 进程读取字节数

namedprocess_namegroup_write_bytes_total:获取/proc/[pid]/io 进程写入字节数

namedprocess_namegroup_memory_bytes:获取进程使用的内存字节数,通过memtype区分不同的占用类型

namedprocess_namegroup_open_filedesc:获取进程使用的文件描述符数量

namedprocess_namegroup_thread_count:运行的线程数

namedprocess_namegroup_thread_cpu_seconds_total:获取线程CPU状态时间

namedprocess_namegroup_thread_io_bytes_total:获取线程IO字节数

namedprocess_namegroup_num_threads:线程数

namedprocess_namegroup_thread_context_switches_total:线程上下文切换统计

因此,进程的单核CPU占比的promsql语句为increase(namedprocess_namegroup_cpu_seconds_total{mode="user",groupname="procname"}[30s])*100/30,单核内核态CPU占比的promsql语句为increase(namedprocess_namegroup_cpu_seconds_total{mode="system",groupname="procname"}[30s])*100/30。

注意:实测发现,process-exporter获取的数据与/proc/pid/stat中的有一定差异,需要进一步看下。

process-exporter采集内存的指标时将内存分成5种类型:

resident:进程实际占用的内存大小,包括共享库的内存空间,可以从/proc/pid/status中的VmRSS获取

proportionalResident:与resident相比,共享库的内存空间会根据进程数量平均分配

swapped:交换空间,系统物理内存不足时,会将不常用的内存页放到硬盘的交换空间,可以从/proc/pid/status中的VmSwap获取

proportionalSwapped:将可能被交换的内存页按照可能性进行加权平均

virtual:虚拟内存,描述了进程运行时所需要的总内存大小,包括哪些还没有实际加载到内存中的代码和数据,可以从/proc/pid/status中的VmSize获取

对于一般的程序来说,重点关注的肯定是实际内存,也就是resident和virtual,分别表示实际在内存中占用的空间和应该占用的总空间。

  • 17
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在Windows上配置Prometheusprocess-exporter,可以按照以下步骤进行操作: 1. 下载process-exporter的Windows版本,可以从process-exporter的官方GitHub页面上下载:https://github.com/ncabatoff/process-exporter/releases 2. 将下载的可执行文件解压缩到一个合适的目录中,例如C:\Program Files\process-exporter。 3. 编写一个process-exporter的配置文件,指定需要监控进程以及相关参数,例如: ``` process_names: - firefox.exe - chrome.exe windows_exporter: log_queries: true ``` 将该配置文件保存为process-exporter.yml。 4. 在Prometheus的配置文件prometheus.yml中添加以下内容,以启用process-exporter: ``` scrape_configs: - job_name: 'process-exporter' static_configs: - targets: ['localhost:9256'] ``` 注意,process-exporter默认监听端口9256。 5. 保存并重新启动Prometheusprocess-exporter。 现在,Prometheus就可以监控Windows上的进程了。可以通过Prometheus的web界面来查看相关的指标,并使用PromQL语言进行查询和分析。例如,可以使用以下查询来查看chrome.exe的CPU使用率: ``` 100 * (1 - avg by (instance)(rate(process_cpu_seconds_total{process_name="chrome.exe"}[5m]))) ``` ### 回答2: 配置Prometheusprocess-exporter可以通过以下步骤完成: 1. 首先,从Process Exporter的GitHub页面(https://github.com/ncabatoff/process-exporter)下载最新版本的二进制文件。根据操作系统的类型,选择对应的二进制文件,例如Windows选择`.exe`文件。 2. 将下载的二进制文件解压缩到一个适当的位置,例如C:\process-exporter。 3. 在解压缩目录中创建一个名为`process-exporter.yml`的配置文件,该文件将定义要监控进程列表和其他选项。 4. 在配置文件中指定要监控进程。例如,可以在`process_names`部分添加以下行来监控一个名为`my_process`的进程: ```yaml process_names: - my_process ``` 你也可以添加多个进程名称,按需监控。 5. 配置Prometheus以收集process-exporter的指标。在Prometheus的配置文件(prometheus.yml)中添加以下具有适当地址和端口的`scrape_configs`部分: ```yaml scrape_configs: - job_name: 'process_exporter' static_configs: - targets: ['localhost:9256'] ``` 这将告诉Prometheus在本地主机上的9256端口上收集来自process-exporter的指标。 6. 保存并关闭Prometheus配置文件。 7. 打开一个命令提示符窗口,并导航到process-exporter的解压缩目录。 8. 在命令提示符中运行以下命令启动process-exporter: ```bash process-exporter.exe --config.path=process-exporter.yml ``` 9. 确保Prometheus服务器正在运行,然后重新加载配置文件。 10. 访问Prometheus的Web界面,并导航到“Targets”选项卡。您应该看到一个名为`process_exporter`的目标显示为"UP",表示process-exporterPrometheus之间的连接正常。 11. 接下来,您可以在Prometheus中使用适当的查询来检索和可视化process-exporter提供的指标数据。 通过按照以上步骤配置和启动process-exporter,您将能够监控和收集有关指定进程的性能指标,并将其集成到Prometheus监控系统中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值