当前位置: 首页 > 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.xdnf.cn/news/1391383.html

相关文章:

  • 【论文阅读】SegCLIP:用于高分辨率遥感图像语义分割的多模态视觉语言和快速学习
  • 【完整源码+数据集+部署教程】控制台缺陷检测系统源码和数据集:改进yolo11-repvit
  • Vision Transformer模型解读
  • 性能测试-jmeter7-元件提取器
  • Free Subtitles-免费AI在线字幕生成工具,支持111种语言
  • selenium自动下载更新浏览器对应的webdriver
  • Spring AOP:JDK与CGLIB代理机制解析
  • 数据结构(C语言篇):(五)单链表算法题(上)
  • 对于牛客网—语言学习篇—编程初学者入门训练—函数类型:BC156 牛牛的数组匹配及BC158 回文数解析
  • 美食推荐|美食推荐小程序|基于微信小程序的美食推荐系统设计与实现(源码+数据库+文档)
  • GPFS性能优化
  • Skywork:昆仑万维推出天工超级智能体
  • vue3 表单项不对齐的解决方案
  • Custom SRP - LOD and Reflections
  • 【AI】常见8大LLM大语言模型地址
  • SPSA为什么要求三阶可导
  • 事务和锁(进阶)
  • 对接连连支付(七)-- 退款查询
  • C++ 线程安全初始化机制详解与实践
  • Elasticsearch核心配置与性能优化
  • 从零开始的python学习——常量与变量
  • 复杂保单信息如何自动提取
  • 【新启航】3D 逆向抄数的工具技术与核心能力:基于点云处理的扫描设备操作及模型重建方法论
  • Java面试现场:Spring Boot+Redis+MySQL在电商场景下的技术深度剖析
  • Shell 编程基础(续):流程控制与实践
  • Python Imaging Library (PIL) 全面指南:PIL图像处理异常处理与优化
  • 数据结构:选择排序 (Selection Sort)
  • JavaScript 中,判断一个数组是否包含特定值
  • 【完整源码+数据集+部署教程】停车位状态检测系统源码和数据集:改进yolo11-DCNV2-Dynamic
  • 机器学习入门,从线性规划开始