使用Prometheus + Grafana + node_exporter实现Linux服务器性能监控

监控与告警系统部署:
项目示例: "使用Prometheus + Grafana + node_exporter实现Linux服务器性能监控"
描述: 在目标服务器部署node_exporter采集系统指标(CPU, 内存, 磁盘, 网络)。
部署配置Prometheus Server,抓取node_exporter数据。
部署配置Grafana,连接Prometheus数据源,创建可视化仪表盘展示关键指标。 配置Prometheus Alertmanager或Grafana告警规则(如CPU使用率>90%持续5分钟邮件告警)。
技术关键词: Prometheus, Grafana, node_exporter, Alertmanager,
监控指标(CPU/Mem/Disk/Net), 告警规则。
亮点: 掌握现代监控栈的核心流程,理解关键性能指标,具备告警意识。

✅ 项目目标总结(你最终会学会的)

你将部署并掌握以下组件:

组件功能是否部署
node_exporter采集 Linux 主机指标(CPU/内存/磁盘/网络)✅ 是
Prometheus抓取 exporter 指标、存储、查询、告警✅ 是
Grafana连接 Prometheus,做图表可视化✅ 是
AlertmanagerPrometheus 告警触发后转发邮件/微信等通知✅ 是


🛠 教学模式(分阶段推进)

我会按以下 5 个阶段带你完成部署,每一步我都可以给你指令+截图模板:

阶段任务是否必须
1. 环境准备准备3台虚拟机或1台本机✅ 必须
2. node_exporter部署被监控主机安装 exporter✅ 必须
3. Prometheus部署主控端部署并配置 prometheus.yml✅ 必须
4. Grafana安装浏览器访问仪表盘展示监控图表✅ 必须
5. 告警系统配置配置 CPU >90% 持续5分钟发邮件⚠️ 可选,但建议完成


📦 第1步:环境准备(你要准备什么)

你至少要有:

  • 🖥️ 1 台 Linux 虚拟机(推荐 CentOS 7 或 Ubuntu 20.04)
    ✅ 如果有 VMware + CentOS 就直接用那台
    ✅ 最好关掉 selinux 和 firewalld

  • 📶 能联网(或者提前下载好 Prometheus/Grafana 安装包)

  • 📁 一个安装目录,如:/opt/monitoring


📌 现在我们开始第1阶段:

✅ 第1阶段:部署 node_exporter(采集系统指标)

目标:你这台主机的 CPU/内存/磁盘 数据能被采集到

第1步:下载安装 node_exporter

# 进入工作目录 
cd /opt# 下载 node_exporter(以 v1.8.1 为例) wget https://github.com/prometheus/node_exporter/releases/download/v1.8.1/node_exporter-1.8.1.linux-amd64.tar.gz# 解压 tar -xzf node_exporter-1.8.1.linux-amd64.tar.gz cd node_exporter-1.8.1.linux-amd64

第2步:后台运行 node_exporter

# 启动 node_exporter(监听在 9100 端口) ,一定要先进入cd node_exporter-1.8.1.linux-amd64目录./node_exporter &

遇到问题:

执行了

后,光标仍然闪动,好像没进入后台

可能原因:

 原因一:程序其实没有完全进入后台

虽然你用了 &,但:

  • 程序可能打印了很多日志到控制台(stdout / stderr),

  • shell 仍然认为你“在等它输出”,光标就会一直闪,

  • 所以 Ctrl + C 终止了它。

这是 Linux 的常见行为,并不是命令错了。

原因二:程序被调度到后台了,但还有“子线程/子进程”输出信息或没释放终端控制权。

解决办法

nohup 让它真正脱离终端运行(临时使用)

cd到这个/usr/local/Prometheusm目录下执行

nohup ./node_exporter > /dev/null 2>&1 &

第3步:确认是否运行成功

# 查看监听端口 
netstat -tunlp | grep 9100 
# 浏览器访问http://主机号:9100/metrics
#或者ps -ef | grep node_exporter

✅ 第二步:部署 Prometheus Server

1. 下载并解压 Prometheus

你可以从 官网 获取,也可以直接用以下命令下载最新版:

cd /usr/local/src/ wget https://github.com/prometheus/prometheus/releases/download/v2.52.0/prometheus-2.52.0.linux-amd64.tar.gztar -xzf prometheus-2.52.0.linux-amd64.tar.gz mv prometheus-2.52.0.linux-amd64 /usr/local/Prometheus cd /usr/local/Prometheus

2. 编辑配置文件 prometheus.yml

vim prometheus.yml

scrape_configs 下添加 node_exporter 的配置,例如:

scrape_configs:- job_name: 'node_exporter'static_configs:- targets: ['localhost:9100']

🔍 说明:

  • localhost:9100 是你的 node_exporter 默认监听地址。

  • 如果你的 node_exporter 是部署在别的服务器上,则改为对应的 IP,例如:192.168.1.100:9100


3. 启动 Prometheus

./prometheus --config.file=prometheus.yml &
  • 启动后访问 Prometheus Web UI:

    http://<你的服务器IP>:9090


4. 验证是否采集到 node_exporter 数据

在浏览器中打开 http://<你的服务器IP>:9090

  • 点击 “Status” → “Targets”

  • 查看是否有 node_exporter 的目标出现,并且状态为 UP


图示:

✅ 当前进度回顾

任务状态
✔️ 部署 node_exporter已完成
✅ 部署 Prometheus Server进行中
⏭️ 部署 Grafana下一步
⏭️ 创建 Dashboard 并配置告警后续

第三步:部署 Grafana(可视化监控面板)

Grafana 是一个强大的开源可视化工具,用于展示 Prometheus 收集的数据。


1. 安装 Grafana

 方法一:使用 RPM 包安装(推荐 CentOS)
# 添加 Grafana 官方源
cat <<EOF | sudo tee /etc/yum.repos.d/grafana.repo
[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
EOF# 安装 Grafana
sudo yum install -y grafana

2. 启动 Grafana 并设置为开机启动

sudo systemctl start grafana-serversudo systemctl enable Grafana-serverGrafana

3. 放行防火墙端口(默认 3000)

bash

复制编辑

sudo firewall-cmd --add-port=3000/tcp --permanent sudo firewall-cmd --reload


4. 访问 Grafana Web 界面

打开浏览器访问:

http://<你的服务器IP>:3000

首次登录默认账号密码是:

用户名:admin 密码:admin

首次登录会要求修改密码,请记住新密码。


5. 添加 Prometheus 数据源

登录 Grafana 后:

  1. 点击左侧边栏的 Data Sources

  2. 点击 Add data source

  3. 选择 Prometheus

  4. 在 URL 填入:

    http://localhost:9090

  5. 点击底部的 Save & Test,显示 success 即可。


6. 导入官方 Node Exporter 监控模板(Dashboard)

Grafana 社区已有 Node Exporter 的可视化模板,操作如下:

  1. 点击左侧 “+” → Import

  2. 在 Import 页面中,输入 dashboard ID:

    1860 这是官方维护的 Node Exporter 全套模板
  3. 点击 Load

  4. 选择你刚添加的 Prometheus 数据源

  5. 点击 Import

导入成功后,就能看到完整的服务器资源监控仪表板,包括 CPU、内存、磁盘、网络等信息。


✅ 当前进度回顾

任务状态
✔️ 部署 node_exporter已完成
✔️ 部署 Prometheus Server已完成
✅ 部署 Grafana进行中
⏭️ 创建 Dashboard 并配置告警下一步

第四步:配置 Grafana Dashboard 和告警系统

📊 一、导入官方 Node Exporter Dashboard

1. 登录 Grafana

浏览器访问:

http://<你的服务器IP>:3000

默认账号密码是:

用户名:admin 密码:123456


2. 添加 Prometheus 数据源

在 Grafana 页面中:

  1. 左侧栏点击齿轮「⚙️」 → Data sources

  2. 点击「Add data source

  3. 选择「Prometheus

  4. 在 URL 栏填写:

    http://localhost:9090

  5. 点击最下方「Save & test」,如果提示成功则数据源配置完成。


3. 导入 Node Exporter 官方 Dashboard(ID:1860)
  1. 左侧栏点击「+」 → Import

  2. 在 “Import via grafana.com” 输入:

    1860

  3. 点击「Load」

  4. 选择刚才添加的 Prometheus 数据源

  5. 点击「Import」

你将看到一个完整的、实时更新的系统监控 Dashboard,包括 CPU、内存、磁盘、网络 等指标。


🚨 二、配置告警规则(Prometheus + Alertmanager 简版)

1. 创建 Prometheus 告警规则文件

vim /usr/local/prometheus/rules/alert.rules.yml

示例内容:当 CPU 使用率连续 1 分钟超过 80%,触发告警:

groups:- name: node_alertsrules:- alert: HighCPUUsageexpr: 100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[1m])) * 100) > 80for: 1mlabels:severity: warningannotations:summary: "High CPU usage detected on {{ $labels.instance }}"description: "CPU usage is above 80% for more than 1 minute."

2. 修改 Prometheus 配置文件添加告警规则
# prometheus.yml 添加下面配置rule_files: - "rules/alert.rules.yml"

3. 配置 Alertmanager(可选)

如果你希望支持发送邮件、钉钉、企业微信等告警,可以继续配置 Alertmanager(可等你后面深入时单独学习)。

🛠 第四步:部署与配置 Alertmanager

1. 下载并解压 Alertmanager

cd /usr/local/src/
wget https://github.com/prometheus/alertmanager/releases/download/v0.27.0/alertmanager-0.27.0.linux-amd64.tar.gz
tar -xzf alertmanager-0.27.0.linux-amd64.tar.gz
mv alertmanager-0.27.0.linux-amd64 /usr/local/alertmanager
cd /usr/local/alertmanager

2. 配置 Alertmanager

先备份,在配置

mv  ./alertmanager.yml ./alertmanager01.yml

编辑 alertmanager.yml(163邮箱)

global:resolve_timeout: 5msmtp_smarthost: 'smtp.163.com:465'               # 163 SMTP + SSL端口smtp_from: '你的邮箱@163.com'                     # 发件邮箱smtp_auth_username: '你的邮箱@163.com'            # 账号smtp_auth_password: '你的授权码'                   # 注意:不是登录密码,是客户端授权码smtp_require_tls: false                          # 465端口是SSL,不用STARTTLSroute:receiver: 'email-alert'group_wait: 10sgroup_interval: 1mrepeat_interval: 3hreceivers:- name: 'email-alert'email_configs:- to: '接收告警的邮箱@example.com'               # 接收方邮箱,可以不是163send_resolved: true

💡 说明:

  • to 为告警接收方邮箱

  • fromauth_username 必须一致,且为发送邮箱

  • auth_password 为邮箱 SMTP 授权码(不是邮箱登录密码)

  • smarthost 为邮件服务商的 SMTP 地址(如 smtp.qq.com:465


3. 启动 Alertmanager

#在/usr/local/alertmmanager目录下执行./alertmanager --config.file=alertmanager01.yml &

默认端口:9093
访问测试:http://<你的IP>:9093


4. 将 Alertmanager 接入 Prometheus

修改 Prometheus 配置文件 prometheus01.yml,添加:

alerting: 
alertmanagers: - static_configs: - targets: ['localhost:9093']

5、添加告警规则文件(CPU 使用率 > 90%)

创建 rules.yml

cd /usr/local/Prometheus
vim rules.yml

编写

groups:- name: cpu_alertrules:- alert: HighCPULoadexpr: 100 - (avg by(instance)(rate(node_cpu_seconds_total{mode="idle"}[2m])) * 100) > 90for: 5mlabels:severity: criticalannotations:summary: "CPU 使用率高于 90%"description: "实例 {{ $labels.instance }} 的 CPU 使用率已连续 5 分钟超过 90%"


6、在 prometheus.yml 中引入规则文件

rule_files: - "rules.yml"

7️⃣ 重启 Prometheus 和 Alertmanager

pkill prometheus./prometheus --config.file=prometheus.yml & pkill alertmanager ./alertmanager --config.file=alertmanager.yml &

8️⃣ 验证告警

  1. 可以用 stress 工具制造高 CPU:

    yum install epel-release -y yum install stress -y stress --cpu 2 --timeout 600
  2. 等 5 分钟,看是否收到 163 邮箱的告警邮件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/94781.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/94781.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IP防护等级及检验方法说明

IP防护等级说明&#xff1a; IP (Ingress Protection) 防护等级系统是由 IEC 60529 标准定义的&#xff0c;用于衡量电气设备外壳对固体异物和液体进入的防护能力。IP代码通常由两位数字组成&#xff1a;第一位数字表示防固体异物等级(0-6)&#xff0c;第二位数字表示防水等级(…

最近看到的提示词相关内容汇总

看看能不能总结出来一些提示词最佳实践 一定要动手实践。 目前已经知道的提示词好习惯 角色扮演 操作步骤 质量要求 结构化输出 案例 Anthropic 视频中提到,实际上作为一门科学,我们可以通过以下手段尝试它。 最初的提示词,不断的尝试,直到最终的提示词。 优质提示词结…

github代理

自己整理的github代理 代理网址 https://g.cachecdn.ggff.net/ https://gitcode.com/ https://git.mxg.pub/ https://xiake.pro/ https://github.akams.cn/ 手动更新 hosts 方法 适合临时使用&#xff0c;Github 的ip经常变 Linux / MacOS hosts 路径&#xff1a;/etc/host…

交换机100G模块远距离连接踩坑记录

一、业务需求场景 两个办公场地之间相距较远,大约有几百米。网络系统规划两个办公场地的局域网之间通过100G 网络连接,几百米的距离使用多模光纤是不能满足需求的,因此选择使用单模光纤连接,交换机的模块选择使用华为QSFP28-100G-PSM4 模块,这个模块使用的是MPO接口。 两个…

精通Python异步编程:深入理解Async/Await在LLM应用中的实践

简介 在现代高性能应用开发中,特别是在处理大型语言模型(LLM)时,高效处理I/O密集型操作至关重要。Python的async和await关键字通过异步编程提供了优雅的解决方案。本综合指南将探讨如何利用这些特性构建响应迅速、高效的LLM驱动应用。 目录 理解同步与异步执行 Async/Await…

嵌入式第二十三课 !!!树结构与排序(时间复杂度)

二叉树树概念 树是 n(n > 0) 个结点的有限集合。若 n0 &#xff0c;为空树。在任意一个非空树中&#xff1a; &#xff08;1&#xff09;有且仅有一个特定的根结点&#xff1b;&#xff08;2&#xff09;当 n>1 时&#xff0c;其余结点可分为 m 个互不相交的有…

【MySQL】初识索引

目录索引是什么优点和缺点B树和B树红黑树和哈希表存储数据的局限B树B树MySQL中的页页是什么为什么要使用页页的结构三层树高的B树可以存放多少条记录索引的分类主键索引普通索引唯⼀索引全⽂索引聚集索引和非聚集索引(重要)索引覆盖创建索引自动创建手动创建创建复合索引查看索…

重生之我在暑假学习微服务第九天《后端拆分部分完结篇》

个人主页&#xff1a;VON文章所属专栏&#xff1a;微服务 微服务系列文章 重生之我在暑假学习微服务第一天《MybatisPlus-上篇》重生之我在暑假学习微服务第二天《MybatisPlus-下篇》重生之我在暑假学习微服务第三天《Docker-上篇》重生之我在暑假学习微服务第四天《Docker-下篇…

如何实现一个简单的基于Spring Boot的用户权限管理系统?

全文目录&#xff1a;开篇语前言系统设计概述步骤一&#xff1a;创建Spring Boot项目步骤二&#xff1a;配置数据库步骤三&#xff1a;定义实体类1. 用户实体类 User2. 角色实体类 Role3. 权限实体类 Permission步骤四&#xff1a;创建JPA Repository步骤五&#xff1a;配置Spr…

机器学习及其KNN算法

一、机器学习概述机器学习&#xff08;Machine Learning, ML&#xff09;是人工智能的核心分支&#xff0c;旨在通过算法让计算机从数据中自动学习规律并优化性能&#xff0c;而无需显式编程。这一技术领域起源于20世纪50年代&#xff0c;随着计算能力的提升和大数据时代的到来…

Kaggle 经典竞赛泰坦尼克号:超级无敌爆炸详细基础逐行讲解Pytorch实现代码,看完保证你也会!!!

讲解代码分为3个步骤&#xff1a;有什么用&#xff0c;为什么需要他&#xff0c;如何使用保证大家耐心看完一定大有裨益&#xff01;如果有懂的可以跳过&#xff0c;不过建议可以看完&#xff0c;查漏补缺嘛。现在开始吧&#xff01;项目目标我们的目标是根据泰坦尼克号乘客的个…

双目标定中旋转矩阵参数应用及旋转角度计算(聚焦坐标系平行)

一、引言 在双目视觉系统开发中&#xff0c;若需实现右相机坐标系与左相机坐标系平行&#xff0c;核心在于通过双目标定获取的旋转矩阵RRR&#xff0c;消除两相机间的相对旋转。本报告聚焦旋转矩阵的物理意义与工程应用&#xff0c;详细说明如何通过旋转矩阵计算相对旋转角度&a…

GraphRAG 入门教程:从原理到实战

GraphRAG 入门教程&#xff1a;从原理到实战 1. 什么是 GraphRAG&#xff1f; GraphRAG 是一种结构化的、分层的检索增强生成&#xff08;Retrieval-Augmented Generation&#xff0c;简称 RAG&#xff09;方法 和传统的 RAG 不同&#xff0c;GraphRAG 不仅仅依赖文本相似度搜索…

系统集成项目管理工程师【第十一章 规划过程组】规划成本管理、成本估算、制定预算和规划质量管理篇

系统集成项目管理工程师【第十一章 规划过程组】规划成本管理、成本估算、制定预算和规划质量管理篇 一、规划成本管理&#xff1a;为成本管控定方向 规划成本管理是项目成本管理的起点&#xff0c;其核心是明确“如何管”的规则&#xff0c;为整个项目的成本管理提供统一框架。…

Xiphos Q8 SDR DOCK子板 AD9361 宽带收发器的 SDR 模块。

Q8 混合处理器卡的子板&#xff0c;包含基于 ADI 公司流行的 AD9361 宽带收发器的 SDR 模块。与基于 AD9361 的 SDR 模块接口PPS、CAN总线、串行、UART&#xff08;LVDS&#xff09;、USB接口电源接口&#xff08;5V、12V&#xff09; Q8 处理器卡的子板&#xff0c;集成了基于…

DPU(数据处理单元)架构中,SoC(系统级芯片)与FPGA(现场可编程门阵列)之间的数据交互

在DPU&#xff08;数据处理单元&#xff09;架构中&#xff0c;SoC&#xff08;系统级芯片&#xff09;与FPGA&#xff08;现场可编程门阵列&#xff09;之间的数据交互是实现高效异构计算的关键。根据通信目标和硬件特性&#xff0c;其交互数据类型可分为以下四类&#xff1a;…

图论(邻接表)DFS

竞赛中心 - 蓝桥云课 #include<bits/stdc.h> using namespace std; #define int long long const int A1e51; typedef pair<int,int>p; map<p,int>st; vector<p>edge[A]; int a[A]; int result0; bool dfs(int s,int u,int father,int v,int sum) {i…

深入理解VideoToolbox:iOS/macOS视频硬编解码实战指南

引言&#xff1a;VideoToolbox框架概述 VideoToolbox是Apple提供的底层框架&#xff0c;首次在WWDC2014上推出&#xff0c;为iOS和macOS开发者提供直接访问硬件编码器和解码器的能力。作为Core Media框架的重要组成部分&#xff0c;VideoToolbox专注于视频压缩、解压缩以及Cor…

Python基础语法练习

本文涵盖了 Python 基础编程中的多个重要概念&#xff0c;从简单的输出语句到运算符、字符串操作、变量赋值等都有涉及。这些例子非常适合初学者学习和理解 Python 的基本语法。1. Hello World# 输出Hello Worldprint("Hello, World!")2. 变量赋值# 创建变量并赋值na…

关于“致命错误:‘https://github.com/....git/‘ 鉴权失败”

问题分析 错误信息&#xff1a; remote: Invalid username or token. Password authentication is not supported for Git operations. 致命错误&#xff1a;https://github.com/yarajia/LittleTestToolsProject.git/ 鉴权失败原因&#xff1a;GitHub从2021年8月13日起不再支持…