别再裸奔搞监控了!一篇带你上手 Prometheus+Grafana 的实战指南

举报
Echo_Wish 发表于 2025/12/18 22:03:54 2025/12/18
【摘要】 别再裸奔搞监控了!一篇带你上手 Prometheus+Grafana 的实战指南

别再裸奔搞监控了!一篇带你上手 Prometheus+Grafana 的实战指南

大家好,我是 Echo_Wish。今天我们来聊聊 Prometheus + Grafana ——一个在运维、数据可观测、SRE、边缘监控领域都快成为标配的组合拳。

我写这篇文章的目的很简单,不是跟你背理论,而是——

看完就能上手,搭好监控、出图、报警,全链打通。

而不是只会喊:“Prometheus 是普罗米修斯,来自希腊神话中的火种”。这跟我们监控没半毛钱关系,咱实战才是王道。


🥇 一句话概述:为啥都爱 Prometheus + Grafana?

  • Prometheus 负责采集和存储
  • Grafana 负责展示和告警
  • 二者搭起来最轻、最快、最灵活
  • 云原生时代已经成为事实标准

更关键的一点:

Prometheus 是拉模式,一切指标都可量化、可定义,讲究自助式监控。

不再需要黑盒猜系统状态,而是把系统变成“透明仪表盘”。

我第一次用 Prometheus 时,内心只有一句:

“卧槽,监控就应该这么爽!”


🚀 二、快速上手 Prometheus:能跑起来比啥都强

我们别绕圈,直接用最常见的方式启动:

📌 1. 下载 Prometheus

wget https://github.com/prometheus/prometheus/releases/latest/download/prometheus-2.46.0.linux-amd64.tar.gz
tar -zxvf prometheus-2.46.0.linux-amd64.tar.gz
cd prometheus-2.46.0.linux-amd64

启动:

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

浏览器访问:

http://localhost:9090

看到 UI,就算启动成功。


🛠 三、Prometheus 配置解析——监控第一个目标

Prometheus 要监控什么?靠 prometheus.yml 定义。

最经典的例子 —— 监控 Prometheus 自己:

scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 15s
    static_configs:
      - targets: ['localhost:9090']

解释一下:

  • scrape_interval 抓数据频率
  • job_name 名字随便起
  • targets 就是指标端点

能抓到什么?比如:

  • 采集耗时
  • TSDB 内存使用量
  • 抓指标失败次数

基本看到这,你已经监控了一个系统了。


🧩 四、让真正的应用暴露指标!Hello Metrics 👋

我们用一个 Go 程序演示暴露业务指标:

package main

import (
    "github.com/prometheus/client_golang/prometheus/promhttp"
    "net/http"
)

func main() {
    http.Handle("/metrics", promhttp.Handler())
    http.ListenAndServe(":8080", nil)
}

运行以后,打开:

http://localhost:8080/metrics

你会看到一堆以 _total结尾的玩意,看似乱码,其实就是业务指标基础原语。

如果嫌 Go 不亲民,用 Python 也一样:

from prometheus_client import start_http_server, Counter

c = Counter('requests_total', 'Total requests')

start_http_server(8000)

while True:
    c.inc()

打开:

http://localhost:8000

Prometheus 就能拉。


🔍 五、PromQL —— 运维的 SQL

PromQL 就是 Prometheus 的灵魂。比如 CPU 使用率:

rate(process_cpu_seconds_total[5m])

某个服务 QPS:

rate(http_requests_total[1m])

按状态分组:

sum(rate(http_requests_total[1m])) by (status)

这玩意一旦上瘾,你会觉得 SQL 都不香了


🎨 六、Grafana 出场:监控不仅要准,还要漂亮

Prometheus 有图能力,但一般没人用,因为 Grafana 的仪表盘帅太多

启动 Grafana:

docker run -d -p 3000:3000 grafana/grafana

访问:

http://localhost:3000

默认登录:

  • 用户名:admin
  • 密码:admin

然后添加 Prometheus 数据源:

  • URL:http://localhost:9090

Done!


📊 七、Grafana 可视化实战:按业务逻辑出图

比如:

QPS 曲线

sum(rate(http_requests_total[1m])) by (job)

内存

process_resident_memory_bytes

错误率

sum(rate(http_requests_total{status=~"5.."}[5m]))

搞成折线、柱状、饼图随便你。

你甚至能搞这样的大盘:

📌 3 行指标体现系统健康:

  • RT(99 分位)
  • QPS(1m)
  • Error(5m涨幅)

这已经是标准 SRE 大屏套路。


🪖 八、Play with Alert —— 没报警就不是监控

Prometheus 自带 Alertmanager,可以这样定义报警:

groups:
- name: instance_down
  rules:
  - alert: InstanceDown
    expr: up == 0
    for: 1m
    labels:
      severity: critical
    annotations:
      summary: "实例挂了"

报警逻辑挺有意思:

  • expr 是 PromQL
  • for 是持续时间
  • seveirty 告警等级
  • summary 展示内容

Slack、钉钉、企业微信、PagerDuty 全能对接。

报警不是提示你“挂了”,而是告诉你:

“滚去修系统!”


🧲 九、Grafana 也能报警

Grafana 8+ 有自身报警系统,比如:

  • 阈值报警
  • 速率报警
  • 无数据报警
  • PromQL 报警

配个邮件渠道,你就能收到一封“惨叫”的邮件:

Latency P99 > 500ms over 10m

这就是“运维的紧箍咒”。


☁️ 十、容器与云原生监控才是 Prometheus 的春天

说句大实话:

99% 使用 Prometheus 的公司,都在 Kubernetes 上。

K8s 暴露了 Metrics,把整个集群变成可观测系统。

你只要这样加:

- job_name: 'kubernetes-nodes'
  kubernetes_sd_configs:
  - role: node

节奏变成:

  • Node 指标
  • Pod 指标
  • Kubelet 指标
  • APIServer 指标
  • etcd 指标

全部自动抓。

Grafana 上直接导入:

ID: 315
ID: 6417

你就会看到:

  • CPU 饼图
  • Pod 崩溃趋势
  • 节点资源利用
  • 网络延时

你会突然意识到:

过去裸奔太久了。


💡 十一、我的一些感悟:监控永远不是“装工具”,是“打造运营能力”**

很多公司搞监控,流于形式:

  • 大屏很好看
  • 报警没人响应
  • 图写了一堆
  • SLA 依旧扑街

原因很简单:

数据要驱动决策,而不是驱动 PPT。

一个健康的监控体系必须:

  • 能发现问题
  • 能定位问题
  • 能趋势预判
  • 能指导容量规划
  • 能支撑 SLA 评估

否则都是花架子。


🏁 十二、写在最后

Prometheus + Grafana 的魅力在于:

  • 开源、免费、标准化
  • 插件丰富、生态爆表
  • 学习成本极低
  • 足够灵活

一句话总结:

监控不是为了看图,是为了把系统变成可度量的科学工程。

从今天开始,别再裸奔运维了。
让数据测量系统,让指标告诉你真相。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。