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端口上开始广播了。我们来"偷听"一下。

Bash

curl 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)"能力。

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

相关推荐
强_子7 小时前
基于 Prometheus+Alertmanager+Grafana 打造监控报警后台(四)-Grafana告警配置
服务器·grafana·prometheus
TTBIGDATA8 小时前
【Ambari-Metrics监控】Grafana+Infinity快速构建DEMO-插件安装
hadoop·ambari·hdp·grafana·cdh·bigtop·ambari-metrics
运维开发王义杰9 小时前
Kubernetes: 解构Karpenter NodePool, 云原生时代的弹性节点管理艺术
云原生·容器·kubernetes
FreeBuf_9 小时前
无恶意软件勒索:Storm-0501如何转向云原生攻击
大数据·云原生·storm
上邪o_O9 小时前
从零开始部署 Kubernetes Dashboard:可视化管理你的集群
云原生·kubernetes
草履虫建模9 小时前
若依微服务一键部署(RuoYi-Cloud):Nacos/Redis/MySQL + Gateway + Robot 接入(踩坑与修复全记录)
redis·mysql·docker·微服务·云原生·nacos·持续部署
鼠鼠我捏,要死了捏10 小时前
基于Prometheus Pushgateway与Alertmanager的自定义指标监控与告警实践指南
prometheus·pushgateway
Light6011 小时前
领码前瞻|国产操作系统闯关之路:从创新到应用
云原生·国产操作系统·ai赋能·自主可控·生态建设
草莓田田圈~11 小时前
kubernetes-ubuntu24.04操作系统部署k8s集群
云原生·容器·kubernetes