当前位置: 首页 > news >正文

Prometheus+Grafana入门教程:从零搭建云原生服务器监控系统

更多云服务器知识,尽在hostol.com

在我们动手之前,你必须先理解Prometheus的“哲学”,这和我们以往接触的很多监控工具,截然不同。

  • 核心比喻:从“病人主动汇报”到“医生主动巡诊”
    • 传统监控 (Push模式): 就像要求每一位“病人”(你的服务器),每隔5分钟,都必须自己打电话,向“医院”(监控中心)汇报一次自己的心率和体温。如果某个病人“忘记”了(比如网络问题),医院就收不到它的数据。
    • Prometheus (Pull模式): 它更像一位极其负责的“主治医生”。它手里有一个“病人名单”(配置文件),它会每隔15秒,就主动地、挨个地,去“远程问诊”每一个病人:“嘿,你现在的心率体温是多少?报给我!” 这种“拉取”的模式,更主动、更中心化,也更可靠。

好了,理解了这位“医生”的工作模式,我们开始搭建它的“诊疗体系”。这个体系,主要由三部分构成。

第一步:给你的“病人”戴上传感器 —— node_exporter

Prometheus医生,不会说人类的语言,它只懂一种叫“Metrics”的、标准化的数据格式。我们的Linux服务器,默认是不会说这种“外星语”的。

所以,我们需要给服务器,安装一个“同声传译器 + 全身体征传感器”。这个工具,就是node_exporter

  • 它是什么? node_exporter是一个由Prometheus官方出品的小程序。它运行在你的服务器上,不知疲倦地,收集这台服务器所有你能想到的“生命体征”——CPU使用率、内存、硬盘空间、网络流量、文件句柄……然后,它会把这些海量的、实时的数据,翻译成Prometheus医生能看懂的“Metrics”格式,并在一个默认的9100端口上,像一个广播站一样,对外“广播”。
  • 如何安装?
    1. 下载并解压: 去Prometheus官网的下载页面,找到node_exporter的最新版,复制linux-amd64版本的链接。

Bash

# 登录到你要监控的服务器上
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar xvfz node_exporter-1.7.0.linux-amd64.tar.gz

2.运行“传感器”:

Bash

cd node_exporter-1.7.0.linux-amd64/
./node_exporter & # &表示在后台运行
3验证: 现在,你的“传感器”已经在9100端口上开始广播了。我们来“偷听”一下。Bashcurl http://localhost:9100/metrics
你会看到屏幕上,滚过成百上千行,类似这样的“天书”。别怕,这就是Prometheus最喜欢的“语言”。

4.(专业建议)让它7x24小时工作: 为了让node_exporter能开机自启,我们需要为它创建一个systemd服务。

Bash

sudo nano /etc/systemd/system/node_exporter.service

写入以下内容:

Ini, TOML

[Unit]
Description=Node Exporter[Service]
User=node_exporter # 建议创建一个专门的用户
ExecStart=/path/to/your/node_exporter[Install]
WantedBy=default.target

    1. 然后,启动并设置开机自启。

第二步:建立“中央数据库”—— 安装并配置Prometheus

“传感器”已经就位,现在,我们需要建立一个“健康数据中心”,来定期地,收集并存储所有“病人”广播出来的健康数据。这个数据中心,就是Prometheus服务器

  1. 下载并解压: 同样,去官网下载Prometheus的最新版。

Bash

wget https://github.com/prometheus/prometheus/releases/download/v2.46.0/prometheus-2.46.0.linux-amd64.tar.gz
tar xvfz prometheus-2.46.0.linux-amd64.tar.gz

2.编写“病人名册” (prometheus.yml) cd进入解压后的目录,你会看到一个prometheus.yml文件。这是Prometheus唯一的、也是最重要的配置文件。它就是我们那位“主治医生”的“病人巡诊名单”。 用nano编辑它,改成下面这样:

YAML

# 全局配置
global:scrape_interval: 15s # 每隔15秒,去“巡诊”一次# “巡诊”任务配置
scrape_configs:# 第一个任务,我们给它起名叫“node_exporter_group”- job_name: "node_exporter_group"static_configs:# 这个任务需要巡诊的“病房”列表- targets: ["localhost:9100"] # 目前,我们只监控自己

这份“巡诊名单”写得清清楚楚:每隔15秒,去localhost:9100这个地址,采集一次健康数据。

3.启动“数据中心”!

Bash

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

  1. Prometheus服务,现在已经在后台的9090端口上运行起来了。

第三步:第一次“专家会诊”—— 你的第一条PromQL

打开你的浏览器,访问 http://你的服务器IP:9090。欢迎来到Prometheus简朴但强大的“专家会诊室”。

点击顶部的“Graph”菜单。在输入框里,输入我们传感器的某个“指标”名字,比如node_memory_MemAvailable_bytes(可用内存大小),然后点击“Execute”。

看到了吗?一张实时更新的、关于你服务器可用内存的历史曲线图,就呈现在了你的眼前!

Prometheus的查询语言PromQL,极其强大。比如,你想计算“过去5分钟内,CPU在‘空闲(idle)’模式下的平均使用率”,你可以这样写: avg_over_time(rate(node_cpu_seconds_total{mode="idle"}[5m])[10m:]) 这,就是“数据医生”的专业语言。

第四步:装修“可视化大屏”—— 终极神器Grafana登场

Prometheus的界面,对于“医生”来说,功能强大。但对于“病人”(我们自己)和“医院管理者”(老板)来说,它太简陋了。我们需要一个华丽的、直观的、能把所有健康数据,都变成漂亮仪表盘的“可视化驾驶舱”

这个驾驶舱,就是Grafana

  1. 安装Grafana: Grafana的安装,建议直接使用官方的源,过程很简单,这里不赘述。
  2. 启动并登录: 启动Grafana服务后,访问 http://你的服务器IP:3000,默认用户名和密码都是admin
  3. 连接“数据中心”: 登录后,第一件事,就是告诉Grafana,我们的“健康数据”,存放在哪里。
    • 点击左侧齿轮图标 -> “Data Sources”。
    • 点击“Add data source”,选择“Prometheus”。
    • 在HTTP的URL一栏,填入http://localhost:9090(Prometheus的地址)。
    • 点击“Save & Test”。如果一切正常,会提示“Data source is working”。
  4. 见证“魔法”的终极时刻 —— 一键导入“世界级”仪表盘 我们不需要自己去一个一个地画图表。Grafana拥有一个全球共享的“仪表盘模板库”
    • 点击左侧加号图标 -> “Import”。
    • 在“Import via grafana.com”的输入框里,输入一个神奇的数字:1860
      • 1860是什么?这是一个由社区大神制作、被全世界成千上万的人使用的、最经典的“Node Exporter Full”仪表盘模板的ID。
    • 点击“Load”。Grafana会自动加载这个模板的详情。在最下方,选择一下我们刚才配置好的那个Prometheus数据源,然后点击“Import”。

然后,奇迹,发生了。

你的屏幕上,瞬间出现了一面由几十个精美的图表、仪表、数字组成的、极其专业、极其酷炫的“服务器健康状态驾驶舱”!

CPU使用率、内存、硬盘、网络、负载……所有你能想到的、甚至你从未想过的监控指标,都以一种前所未有的、优雅而直观的方式,呈现在了你的眼前。

你,已是自己服务器的“首席健康官”

看看你眼前这面由Grafana生成的、闪耀着数据光芒的仪表盘。这,不再是零散的命令和冰冷的数字。这是你服务器的“实时健康CT影像”。

你,已经从一个只能“感觉”服务器状态的“老司机”,进化成了一位能看懂所有遥测数据、能分析历史曲线、并能做出精准预判的“F1车队数据工程师”。

你掌握的,是云原生时代,最核心的“可观测性 (Observability)”能力。

去吧,去静静地,倾听你的系统。它,还有无数的故事,想要通过这些曲线,告诉你。

http://www.dtcms.com/a/357045.html

相关文章:

  • 如何管理跨境电商多语种素材?数字资产本地化指南
  • nacos单机部署并开启鉴权
  • #医疗AI时代的生物医学Go编程:高性能计算与精准医疗的案例分析(五)
  • 机器学习 - Kaggle项目实践(5)Quora Question Pairs 文本相似
  • OpenCV轮廓近似与Python命令行参数解析
  • 玳瑁的嵌入式日记D29-0829(进程间通信)
  • ZooKeeper 安装配置
  • idea2025.2中maven编译中文乱码
  • Altium Designer 22使用笔记(10)---PCB铺铜相关操作
  • c++ const 关键字
  • 聊聊Prompt Engineering (提示词工程)
  • 【工具类】得到多个数组中的相同元素
  • 考研数据结构Part3——二叉树知识点总结
  • Vue学习Ⅳ
  • 二手车估值查询-二手车估值api接口
  • el-table实现双击编辑-el-select选择框+输入框限制非负两位小数
  • HunyuanVideo-Foley视频音效生成模型介绍与部署
  • 非标设计 机架模板 misumi 设计组合案例
  • 浏览器自动化工具怎么选?MCP 控制浏览器 vs Selenium 深度对比
  • 预测模型及超参数:3.集成学习:[1]LightGBM
  • LangChain实战(三):深入理解Model I/O - Prompts模板
  • 顶会顶刊图像分类的云服务器训练方法
  • 闭包与内存泄漏:深度解析与应对策略
  • Spring boot 启用第二数据源
  • Java全栈工程师的实战面试:从基础到微服务架构
  • 【SOD】目标检测
  • 2025.8.29机械臂实战项目
  • 基于STM32单片机的智能温室控制声光报警系统设计
  • leetcode 461 汉明距离
  • 基于MSRDCN、FEAM与AMSFM的轴承故障诊断MATLAB实现