Prometheus + Grafana 深度玩法:从零到智能化监控体系

 0. 写在前面:为什么你需要“神器”而非“常用命令

老杨折腾监控系统可是有年头了,最早还用过 Cacti、Zabbix,那会儿做个仪表盘都得像雕花一样慢慢刻。后来 Prometheus 出来之后,我的第一反应是:这玩意儿的时间序列和标签系统,比传统轮询的 SNMP/Agent 监控强太多了。
这次我打算把我的部署过程完整记下来——既做一个可落地的部署手册,也顺便做一些高级玩法,比如告警、Recording Rules 和持久化存储优化。


一、准备工作

我手里这台机器是 Debian 12,4 核 8G 内存,磁盘 100GB,公网 IP。
这次我决定不装 Docker,直接裸机部署——方便调试和自定义路径。

先更新系统,不然装一半可能会遇到包冲突。

sudo apt update && sudo apt upgrade -y

输出中有几个包被更新了:

Get:3 http://deb.debian.org/debian bookworm-updates InRelease [52.1 kB]
Fetched 52.1 kB in 1s (54.8 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages will be upgraded:libgnutls30 openssl
2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 1,056 kB of archives.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n]

我选了 Y,然后重启了一次服务器。


二、安装 Prometheus

我没用 apt 源,因为里面的版本有点老,直接拉 GitHub 官方最新的:

wget https://github.com/prometheus/prometheus/releases/download/v2.54.1/prometheus-2.54.1.linux-amd64.tar.gz
tar xvf prometheus-2.54.1.linux-amd64.tar.gz
cd prometheus-2.54.1.linux-amd64

检查版本:

./prometheus --version

结果:

prometheus, version 2.54.1 (branch: HEAD, revision: 45cdccc)build user:       root@e1b2cd3f5f21build date:       2025-07-30T13:23:17Zgo version:       go1.21.3platform:         linux/amd64

三、配置 Prometheus

先备份配置:

cp prometheus.yml prometheus.yml.bak

我加了 Node Exporter 的 job,同时调整了抓取间隔(一些场景不需要那么细):

global:scrape_interval:15s
evaluation_interval:15sscrape_configs:
-job_name:'prometheus'static_configs:-targets: ['localhost:9090']-job_name:'node'static_configs:-targets: ['localhost:9100']

启动 Prometheus:

./prometheus --config.file=prometheus.yml --storage.tsdb.retention.time=15d --web.enable-lifecycle

输出(注意我这里有个 warn,因为没有 Alertmanager 配置):

level=info ts=2025-08-15T03:12:44.332Z caller=main.go:520 msg="Starting Prometheus" version="(version=2.54.1, branch=HEAD, revision=45cdccc)"
level=warn ts=2025-08-15T03:12:44.334Z caller=main.go:527 msg="Alertmanager URL is not set" url=""
level=info ts=2025-08-15T03:12:44.336Z caller=web.go:570 msg="Start listening for connections" address=0.0.0.0:9090

四、安装 Node Exporter

wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar xvf node_exporter-1.7.0.linux-amd64.tar.gz
cd node_exporter-1.7.0.linux-amd64
./node_exporter --collector.cpu --collector.meminfo --collector.diskstats &

日志输出:

level=info ts=2025-08-15T03:15:01.102Z caller=node_exporter.go:182 msg="Starting node_exporter" version="1.7.0"
level=info ts=2025-08-15T03:15:01.102Z caller=node_exporter.go:183 msg="Build context" build_context="(go=go1.21.0, user=root@af23c, date=2025-06-01T12:00:00Z)"
level=info ts=2025-08-15T03:15:01.102Z caller=node_exporter.go:105 msg="Listening on" address=:9100

五、安装 Grafana

sudo apt install -y apt-transport-https software-properties-common
wget -q -O - https://packages.grafana.com/gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/grafana.gpg
echo "deb [signed-by=/usr/share/keyrings/grafana.gpg] https://packages.grafana.com/oss/deb stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
sudo apt update
sudo apt install grafana -y

启动:

sudo systemctl enable --now grafana-server

检查状态:

systemctl status grafana-server

输出(注意启动耗时):

Active: active (running) since Fri 2025-08-15 03:18:44 UTC; 6s ago
Main PID: 2481 (grafana-server)
Tasks: 13 (limit: 9450)
Memory: 52.3M
CGroup: /system.slice/grafana-server.service└─2481 /usr/share/grafana/bin/grafana-server web

六、高级玩法

1. Recording Rules

Prometheus 每次查询都会实时计算,如果有一些复杂的计算(比如 CPU 平均值),可以用 Recording Rules 预先计算。

rules.yml

groups:- name: example-rulesinterval: 30srules:- record: instance:cpu_usage:avgexpr: avg(rate(node_cpu_seconds_total{mode="user"}[5m])) by (instance)

修改 prometheus.yml 加入:

rule_files:- "rules.yml"

2. Alertmanager 告警

安装 Alertmanager:

wget https://github.com/prometheus/alertmanager/releases/download/v0.27.0/alertmanager-0.27.0.linux-amd64.tar.gz
tar xvf alertmanager-0.27.0.linux-amd64.tar.gz
cd alertmanager-0.27.0.linux-amd64
./alertmanager --config.file=alertmanager.yml &

alertmanager.yml 示例(发到邮箱):

global:smtp_smarthost:'smtp.example.com:587'
smtp_from:'alert@example.com'
smtp_auth_username:'alert@example.com'
smtp_auth_password:'yourpassword'route:
receiver:email-mereceivers:
-name:email-meemail_configs:-to: 'admin@example.com'

3. Grafana 告警

在 Grafana 面板上,选择任意图表 → “Alert” → 添加规则,比如 CPU > 80% 持续 5 分钟就发通知。

Grafana 告警支持多通道(Email、Slack、Webhook),我自己配的是钉钉机器人。


4. 长期数据持久化

Prometheus 默认数据存 15 天,可以挂载一个大盘,并用 --storage.tsdb.path 指定目录:

./prometheus --config.file=prometheus.yml \--storage.tsdb.path=/data/prometheus \--storage.tsdb.retention.time=180d

老杨时间

这里我先声明一下,日常生活中大家都叫我波哥,跟辈分没关系,主要是岁数大了.就一个代称而已.
我的00后小同事我喊都是带哥的.张哥,李哥的.
但是这个称呼呀,在线下参加一些活动时.金主爸爸也这么叫就显的不太合适.
比如上次某集团策划总监,公司开大会来一句:“今个咱高兴!有请IT运维技术圈的波哥讲两句“
这个氛围配这个称呼在互联网这行来讲就有点对不齐!
每次遇到这个情况我就想这么接话: “遇到各位是缘分,承蒙厚爱,啥也别说了,都在酒里了.我干了,你们随意!”
所以以后咱们改叫老杨,即市井又低调.还挺亲切,我觉得挺好.

运维X档案系列文章:

从告警到CTO:一个P0故障的11小时生死时速

企业级 Kubernetes 集群安全加固全攻略( 附带一键检查脚本)

全球vps性能测评分析项目:

https://vps.top365app.com/zh

老杨的关于AI的号

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

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

相关文章

YOLO、DarkNet和深度学习如何让自动驾驶看得清?

【导读】 本文提出 DarkNet-YOLO 工业级实践框架,通过引入 残差优化结构 与 多尺度特征融合技术,在保持实时检测精度同时显著提升复杂场景适应性。 目录 一、目标检测的进化之路:从“两步走”到“一眼定乾坤” YOLO的核心思想&#xff1a…

使用 HTML5 Canvas 打造炫酷的数字时钟动画

在 Web 开发中,HTML5 的 canvas 元素为我们带来了强大的绘图能力,结合 JavaScript,可以实现各种酷炫的效果。今天,我们将深入剖析一段经典的 彩色数字时钟动画 代码,并理解它是如何通过物理模拟实现数字切换时的炫酷粒…

XCZU6CG-2FFVC900I Xilinx FPGA AMD ZynqUltraScale+ MPSoC

XCZU6CG-2FFVC900I Xilinx FPGA( AMD)Zynq UltraScale MPSoC 。在处理系统(PS)方面,XCZU6CG 系列通常集成了 ARM Cortex-A53 应用核与 Cortex-R5 实时核的组合(典型为 A53 多核 R5 双核组合)&…

Navicat 询问 AI | 优化 SQL 查询

近期,我们发布了 Navicat 17.3 版本。这一版本实现了全方位升级,包括对 AI 功能大升级、支持达梦、金仓、瀚高、支持阿里通义千问等 AI 大模型,支持凝思 OS 以及多项 UI 改进。今天,我们将深入介绍 Navicat AI 功能之“询问 AI ”…

4.6 Vue 3 中的模板引用 (Template Refs)

在 Vue 3 中,ref 是一个核心的响应式 API,但它在模板中还有另一个非常重要的用途:获取对 DOM 元素或子组件实例的直接引用。这就是我们所说的“模板引用”。核心概念目的:让你在父组件中能够直接访问并操作特定的 DOM 元素或子组件…

模式匹配自动机全面理论分析

模式匹配是什么 模式匹配是计算机科学中一个基础且重要的问题,广泛应用于文本编辑、信息检索、网络安全、生物信息学等多个领域。简单来说,模式匹配就是在一个主文本中查找一个或多个特定模式串的出现位置。随着计算机处理能力的提升和数据规模的扩大&am…

AI 搜索时代:引领变革,重塑您的 SEO 战略

随着谷歌转向人工智能驱动的答案,使用以关键字和反向链接为中心的过时和传统的 SEO 策略不再起到任何作用。 由于 Google AI Overviews 和零点击搜索的兴起,自然点击量正在下降,用户无需点击任何网站即可直接在 Google 的搜索结果页面上获得答…

【网站深入seo方法】

目录 ①对于更成熟的网站,简单的index.html的入口文件的seo已经无法满足,需要在商品详情不同商品被搜索时赋予不同的title和description。 ②通过设置站点所有页面都新增Canonical标签,指定规范链接地址给谷歌并规避联盟的重复内容页面。 ③…

ROS move_base 混合功能导航 RealSense D435i + 3D 点云地图 + 楼层切换 + 路径录制 + 路径规划

Mixed-Navigation 这个博客也是记录我们的一个开源项目,其作用是混合功能导航。由于现有的 Fast-Lio-Localization 只实现了定位功能,但对于路径规划和楼层切换没有具体实现,因此我们开出了这个仓库作为参考。该仓库的核心功能如下&#xff…

初识c语言————宏定义和调用

目录:一.不带参数的宏二.带参数宏一.不带参数的宏不带参数的宏是指用#define指令定义的简单文本替换规则,它没有参数列表,直接替换标识符为相应的文本其一般形式为:#define 宏名 文本例如:#define pi 3.14这个代…

数据结构:满二叉树 (Full Binary Tree) 和 完全二叉树 (Complete Binary Tree)

目录 重要的术语澄清 完美二叉树 (Perfect Binary Tree) 完全二叉树 (Complete Binary Tree) 大比拼 (Comparison) 相互关系的第一性推导 我们来深入探讨两种在算法中非常重要的、具有特定“形状”的二叉树:满二叉树 (Full Binary Tree) 和 完全二叉树 (Compl…

OpenJDK 17的C1和C2编译器实现中,方法返回前插入安全点(Safepoint Poll)的机制

OpenJDK 17 JIT编译器堆栈分析-CSDN博客 在OpenJDK 17的C1和C2编译器实现中,方法返回前插入安全点(Safepoint Poll)的机制主要涉及以下关键步骤,结合源代码进行分析: 1. 安全点轮询桩(Safepoint Poll Stu…

【论文笔记】STORYWRITER: A Multi-Agent Framework for Long Story Generation

论文信息 论文标题:StoryWriter: A Multi-Agent Framework for Long Story Generation 论文作者:Haotian Xia, Hao Peng et al. (Tsinghua University) 论文链接:https://arxiv.org/abs/2506.16445 代码链接:https://github.com/…

Cohere 开发企业级大型语言模型(LLM)

Cohere 是一家专注于开发企业级大型语言模型(LLM)的公司。该公司推出了一系列名为 “Command” 的模型,其中最强大的 “Command A” 于今年三月首次亮相 Cohere 还提供嵌入模型,这是一种将文件转化为神经网络可以理解的紧凑数值形…

Rust Web框架Axum学习指南之入门初体验

一、准备阶段 确保已经安装 rust,开发环境使用 vscode 或者 rustrover 都可以。接着就可以创建项目,通过编辑器创建或者命令行创建都可以: cargo new axum-admin二、添加依赖 添加依赖如下: [package] name "axum-admin&quo…

autofit.js: 自动调整HTML元素大小的JavaScript库

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 🍚 蓝桥云课签约作者、…

RocketMQ 命名服务器(NameServer)详解

🚀 RocketMQ 命名服务器(NameServer)详解 NameServer 是 RocketMQ 架构中的轻量级路由发现服务,它不参与消息的收发,但承担着整个集群的“地址簿”和“导航系统”的关键角色。 理解 NameServer 的设计与工作原理&#…

代码随想录算法训练营四十三天|图论part01

深度优先搜索(dfs)理论基础 dfs就是可一个方向去搜直到尽头再换方向,换方向的过程就涉及到了回溯。 代码框架 因为dfs搜索可一个方向,并需要回溯,所以用递归的方式来实现是最方便的。 先来回顾一下回溯法的代码框架…

飞算JavaAI金融风控场景实践:从实时监测到智能决策的全链路安全防护

目录一、金融风控核心场景的技术突破1.1 实时交易风险监测系统1.1.1 高并发交易数据处理1.2 智能反欺诈系统架构1.2.1 多维度欺诈风险识别1.3 动态风控规则引擎1.3.1 风控规则动态管理二、金融风控系统效能升级实践2.1 风控模型迭代加速机制2.1.1 自动化特征工程结语&#xff1…

Vue 组件二次封装透传slots、refs、attrs、listeners

最近写了一个开源项目,有些地方需要二次封装,需要透传一些数据,需要注意的是ref,我这里使用俩种方式间接传递ref,具体如下: 使用: import VideoPlayer from ./index.jsVue.use(VideoPlayer)inde…