如何使用 Prometheus 监控 Linux 服务器性能
liuian 2025-09-18 22:48 2 浏览
使用 Prometheus 监控 Linux 服务器性能 是一套强大且灵活的解决方案,可以帮助你实时监控服务器的 CPU、内存、磁盘、网络等性能指标。以下是从安装到配置的完整指南,包括如何使用 Prometheus 和 Node Exporter 进行监控。
1. Prometheus 和 Node Exporter 简介
- Prometheus:
- 一个开源的监控工具,用于收集和存储时间序列数据(如服务器性能)。
- 提供强大的查询语言(PromQL)以及内置的警报功能。
- Node Exporter:
- 一个 Prometheus 的官方导出器,用于收集 Linux 系统的性能指标,如 CPU 使用率、内存使用、磁盘 I/O、网络等。
- 运行在每个需要监控的 Linux 服务器上。
2. 环境准备
在安装和配置之前,请确保以下条件满足:
- Linux 服务器: 一台用于安装 Prometheus 的服务器(监控主机)。 一台或多台需要被监控的 Linux 服务器。
- Root 权限:安装过程中需要 root 或 sudo 权限。
- 网络连通性:监控主机需能访问被监控服务器的指定端口(默认 9100)。
3. 安装和配置步骤
3.1 安装 Prometheus(监控主机)
步骤 1:下载 Prometheus
- 前往 Prometheus 官方下载页面:https://prometheus.io/download/。
- 或使用以下命令下载最新版本(以 v2.47.0 为例):
- bash
- 复制
- wget https://github.com/prometheus/prometheus/releases/download/v2.47.0/prometheus-2.47.0.linux-amd64.tar.gz
步骤 2:解压 Prometheus
bash
复制
tar -xvzf prometheus-2.47.0.linux-amd64.tar.gz
cd prometheus-2.47.0.linux-amd64
步骤 3:运行 Prometheus
- 使用默认配置启动 Prometheus:
- bash
- 复制
- ./prometheus --config.file=prometheus.yml
- 默认 Prometheus 会监听在 http://<监控主机IP>:9090。
3.2 安装 Node Exporter(被监控服务器)
步骤 1:下载 Node Exporter
- 前往 Node Exporter 官方页面:https://prometheus.io/download/。
- 或使用以下命令下载最新版本(以 v1.6.1 为例):
- bash
- 复制
- wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
步骤 2:解压并运行
bash
复制
tar -xvzf node_exporter-1.6.1.linux-amd64.tar.gz
cd node_exporter-1.6.1.linux-amd64
./node_exporter
- 默认 Node Exporter 会监听在 http://<服务器IP>:9100。
步骤 3:设置为系统服务(可选,确保自动启动)
- 创建 Systemd 服务文件:
- bash
- 复制
- sudo nano /etc/systemd/system/node_exporter.service
- 添加以下内容:
- ini
- 复制
- [Unit] Description=Node Exporter After=network.target [Service] User=nobody ExecStart=/path/to/node_exporter [Install] WantedBy=default.target
- 替换 /path/to/node_exporter 为 Node Exporter 的实际路径。
- 启用并启动服务:
- bash
- 复制
- sudo systemctl daemon-reload sudo systemctl enable node_exporter sudo systemctl start node_exporter
3.3 配置 Prometheus
步骤 1:修改 Prometheus 配置文件
- 编辑 prometheus.yml 文件:
- bash
- 复制
- nano prometheus.yml
- 添加被监控服务器节点信息:
- yaml
- 复制
- scrape_configs: - job_name: 'node_exporter' static_configs: - targets: - '<被监控服务器IP>:9100' - '<其他被监控服务器IP>:9100'
- 示例:
- yaml
- 复制
- scrape_configs: - job_name: 'node_exporter' static_configs: - targets: - '192.168.1.101:9100' - '192.168.1.102:9100'
步骤 2:重启 Prometheus
bash
复制
./prometheus --config.file=prometheus.yml
3.4 验证安装
- 检查 Prometheus 状态:
- 打开浏览器,访问 http://<Prometheus主机IP>:9090。
- 在页面顶部输入查询 up,查看 Node Exporter 是否已成功连接。
- 检查指标数据:
- 在 Prometheus 的查询界面输入以下指标: node_cpu_seconds_total:查看 CPU 使用情况。 node_memory_MemAvailable_bytes:查看可用内存。 node_network_transmit_bytes_total:查看网络传输数据。
4. 配置 Grafana 可视化(可选)
4.1 安装 Grafana
- 下载并安装 Grafana:
- bash
- 复制
- sudo apt-get install -y grafana # Debian/Ubuntu sudo yum install -y grafana # CentOS/RHEL
- 启动服务:
- bash
- 复制
- sudo systemctl start grafana-server sudo systemctl enable grafana-server
- 默认访问地址:http://<服务器IP>:3000(默认账户:admin/admin)。
4.2 配置 Prometheus 数据源
- 登录 Grafana。
- 在左侧菜单中选择 Configuration > Data Sources。
- 添加一个新的数据源,选择 Prometheus,并配置 URL 为 http://<Prometheus主机IP>:9090。
4.3 使用现成的 Grafana Dashboard
- 前往 Grafana Dashboard 共享库。
- 搜索并下载 Node Exporter Full Dashboard(常用 ID:1860)。
- 在 Grafana 导入该 Dashboard,并选择 Prometheus 数据源。
5. Prometheus 监控的关键指标
以下是 Prometheus 监控 Linux 服务器时常用的指标:
指标 | 用途 |
node_cpu_seconds_total | CPU 使用率(以秒为单位)。 |
node_memory_MemAvailable_bytes | 可用内存总量(字节)。 |
node_memory_MemTotal_bytes | 系统总内存(字节)。 |
node_filesystem_avail_bytes | 磁盘可用空间(字节)。 |
node_network_transmit_bytes_total | 网络发送的总字节数。 |
node_network_receive_bytes_total | 网络接收的总字节数。 |
node_load1 | 过去 1 分钟的系统平均负载。 |
6. 警报配置(可选)
Prometheus 支持通过 Alertmanager 配置警报。以下是简单的警报配置示例:
- 在 prometheus.yml 中添加警报规则:
- yaml
- 复制
- rule_files: - "alert.rules"
- 创建 alert.rules 文件:
- yaml
- 复制
- groups: - name: example_alerts rules: - alert: HighCPUUsage expr: avg(rate(node_cpu_seconds_total[1m])) > 0.9 for: 1m labels: severity: warning annotations: description: "CPU usage is above 90% for the past 1 minute."
- 重启 Prometheus。
7. 总结
通过 Prometheus 和 Node Exporter,你可以轻松实现对 Linux 服务器性能的全面监控。以下是关键步骤:
- 安装 Prometheus 并配置监控主机。
- 在每台被监控服务器上安装 Node Exporter。
- 配置 Prometheus 采集指标数据,并通过 PromQL 查询关键性能指标。
- (可选)结合 Grafana 实现数据可视化和警报。
这种监控方案灵活、可靠且开源,非常适合企业和个人使用。
相关推荐
- eino v0.4.5版本深度解析:接口类型处理优化与错误机制全面升级
-
近日,eino框架发布了v0.4.5版本,该版本在错误处理、类型安全、流处理机制以及代理配置注释等方面进行了多项优化与修复。本次更新共包含6个提交,涉及10个文件的修改,由2位贡献者共同完成。本文将详...
- SpringBoot异常处理_springboot异常注解
-
在SpringBoot中,异常处理是构建健壮、可维护Web应用的关键部分。良好的异常处理机制可以统一返回格式、提升用户体验、便于调试和监控。以下是SpringBoot中处理异常的完整指...
- Jenkins运维之路(Jenkins流水线改造Day02-1-容器项目)
-
这回对线上容器服务器的流水线进行了一定的改造来满足目前线上的需求,还是会将所有的自动化脚本都放置到代码库中统一管理,我感觉一章不一定写的完,所以先给标题加了个-1,话不多说开干1.本次流水线的流程设计...
- 告别宕机!零基础搭建服务器监控告警系统!小白也能学会!
-
前言本文将带你从零开始,一步步搭建一个完整的服务器指标监控与邮件告警系统,使用的技术栈均为业界主流、稳定可靠的开源工具:Prometheus:云原生时代的监控王者,擅长指标采集与告警规则定义Node_...
- httprunner实战接口测试笔记,拿走不谢
-
每天进步一点点,关注我们哦,每天分享测试技术文章本文章出自【码同学软件测试】码同学公众号:自动化软件测试码同学抖音号:小码哥聊软件测试01开始安装跟创建项目pipinstallhttprunne...
- 基于JMeter的性能压测平台实现_jmeter压测方案
-
这篇文章已经是两年前写的,短短两年时间,JMeter开源应用技术的发展已经是翻天覆地,最初由github开源项目zyanycall/stressTestPlatform形成的这款测试工具也开始慢...
- 12K+ Star!新一代的开源持续测试工具!
-
大家好,我是Java陈序员。在企业软件研发的持续交付流程中,测试环节往往是影响效率的关键瓶颈,用例管理混乱、接口调试复杂、团队协作不畅、与DevOps流程脱节等问题都能影响软件交付。今天,给大家...
- Spring Boot3 中分库分表之后如何合并查询
-
在当今互联网应用飞速发展的时代,数据量呈爆发式增长。对于互联网软件开发人员而言,如何高效管理和查询海量数据成为了一项关键挑战。分库分表技术应运而生,它能有效缓解单库单表数据量过大带来的性能瓶颈。而在...
- 离线在docker镜像方式部署ragflow0.17.2
-
经常项目上会出现不能连外网的情况,要怎么使用ragflow镜像部署呢,这里提供详细的步骤。1、下载基础镜像根据docker-compose-base.yml及docker-compose.yml中的i...
- 看,教你手写一个最简单的SpringBoot Starter
-
何为Starter?想必大家都使用过SpringBoot,在SpringBoot项目中,使用最多的无非就是各种各样的Starter了。那何为Starter呢?你可以理解为一个可拔插式...
- 《群星stellaris》军事基地跳出怎么办?解决方法一览
-
《群星stellaris》军事基地跳出情况有些小伙伴出现过这种情况,究竟该怎么解决呢?玩家“gmjdadk”分享的自己的解决方法,看看能不能解决。我用英文原版、德语、法语和俄语四个版本对比了一下,结果...
- 数据开发工具dbt手拉手教程-03.定义数据源模型
-
本章节介绍在dbt项目中,如何定义数据源模型。定义并引入数据源通过Extract和Load方式加载到仓库中的数据,可以使用dbt中的sources组件进行定义和描述。通过在dbt中将这些数据集(表)声...
- docker compose 常用命令手册_docker-compose init
-
以下是DockerCompose常用命令手册,按生命周期管理、服务运维、构建配置、扩缩容、调试工具分类,附带参数解析、示例和关键说明,覆盖多容器编排核心场景:一、生命周期管理(核心命令...
- RagFlow与DeepSeek R1本地知识库搭建详细步骤及代码实现
-
一、环境准备硬件要求独立显卡(建议NVIDIAGPU,8GB显存以上)内存16GB以上,推荐32GB(处理大规模文档时更高效)SSD硬盘(加速文档解析与检索)软件安装bash#必装组件Docker...
- Docker Compose 配置更新指南_docker-compose配置
-
高效管理容器配置变更的最佳实践方法重启范围保留数据卷适用场景docker-composeup-d变更的服务常规配置更新--force-recreate指定/所有服务强制重建down→up流程...
- 一周热门
-
-
【验证码逆向专栏】vaptcha 手势验证码逆向分析
-
Python实现人事自动打卡,再也不会被批评
-
Psutil + Flask + Pyecharts + Bootstrap 开发动态可视化系统监控
-
一个解决支持HTML/CSS/JS网页转PDF(高质量)的终极解决方案
-
再见Swagger UI 国人开源了一款超好用的 API 文档生成框架,真香
-
网页转成pdf文件的经验分享 网页转成pdf文件的经验分享怎么弄
-
C++ std::vector 简介
-
飞牛OS入门安装遇到问题,如何解决?
-
系统C盘清理:微信PC端文件清理,扩大C盘可用空间步骤
-
10款高性能NAS丨双十一必看,轻松搞定虚拟机、Docker、软路由
-
- 最近发表
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)
- hashmap转list (35)
- c++ 字符串查找 (35)
- mysql刷新权限 (34)