欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > Prometheus监控Linux进程资源!

Prometheus监控Linux进程资源!

2025/9/22 3:25:30 来源:https://blog.csdn.net/liuguizhong/article/details/148555917  浏览:    关键词:Prometheus监控Linux进程资源!

前言

在建设监控体系的过程中,我们可能需要对Linux所有进程的资源状态进行监控,以便在发生CPU、内存使用率异常时可以通过监控系统快速定位到异常进程,或者帮助我们恢复后的溯源工作。虽然通过PushGateway+Shell也能实现着这个需求,但为了方便管理以及监控数据的准确性,还是写了个Exporter来实现 ---- Linux Process Exporter。

「实现效果」

这是一个用Go语言编写的Prometheus exporter,用于收集Linux系统中所有进程的信息,包括PID、进程名称、CPU使用率和内存使用率,作为对Node Exporter的补充,更全面的监控服务器的状态。

项目地址:https://github.com/hzbb2221/linux-process-exporter.git


功能特点

  • 收集所有进程的基本信息(PID和进程名称)

  • 监控每个进程的CPU使用率

  • 监控每个进程的内存使用率

  • 支持TLS加密和基本认证

  • 通过HTTP接口暴露Prometheus格式的metrics

  • 支持Docker部署

安装

从源码安装
# 克隆仓库
git clone [repository-url]
cd linux-process-exporter# 安装依赖
go mod download# 编译
go build
Docker部署
  1. 使用Docker Compose(推荐):

# 启动服务
docker-compose up -d# 查看日志
docker-compose logs -f
  1. 使用Docker命令:

# 构建镜像
docker build -t linux-process-exporter .# 运行容器
docker run -d \--name process-exporter \--pid=host \--privileged \-v /proc:/host/proc:ro \-v /sys:/host/sys:ro \-p 9113:9113 \linux-process-exporter

配置

命令行参数
  • --version: 显示版本信息

  • --help: 显示帮助信息

  • --web.config.file: TLS和基本认证配置文件路径

  • --web.listen-address: Web服务监听地址(默认::9113)

TLS和认证配置

创建web-config.yml文件(参考web-config.yml.example):

# TLS配置
tls_server_config:cert_file: server.crtkey_file: server.key# 基本认证配置
basic_auth_users:admin: $2y$10$kHSXPKX.SqaDe3zJ7HN5h.SqaDe3zJ7HN5h # 密码为admin

Metrics说明

  • process_info:进程基本信息,标签包含pid和name

    • 示例:process_info{pid="1",name="systemd"} 1

  • process_cpu_usage:进程CPU使用率(百分比)

    • 示例:process_cpu_usage{pid="1",name="systemd"} 0.5

  • process_memory_usage:进程内存使用率(百分比)

    • 示例:process_memory_usage{pid="1",name="systemd"} 1.2

Prometheus配置

在Prometheus的配置文件中添加以下job:

scrape_configs:-job_name:'process-exporter'static_configs:-targets:['localhost:9113']# 如果启用了基本认证,添加以下配置basic_auth:username:adminpassword:admin# 如果启用了TLS,添加以下配置scheme:httpstls_config:insecure_skip_verify:true

示例查询

以下是一些常用的PromQL查询示例:

  1. 查询CPU使用率最高的5个进程:

topk(5, process_cpu_usage)
  1. 查询内存使用率超过50%的进程:

process_memory_usage > 50
  1. 查询特定进程名称的资源使用情况:

process_cpu_usage{name="nginx"}
process_memory_usage{name="nginx"}

Grafana展示示例

  • 进程资源使用情况展示

    • sum by (pid,name) (process_cpu_usage)

    • sum by (pid,name) (process_memory_usage)

  • 数据关联及标签名称配置

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词