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
英文地址,請注明出處:http://en.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…