运维老鸟的监控秘籍:Prometheus抓数据+Grafana画大屏,故障再也藏不住

[复制链接]
发表于 2026-10-6 11:12:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

一、为什么是 Prometheus 加 Grafana

监控监控这件事,没仪表盘的车最能说明问题:开到一百二不知道油量、水温、车速全靠猜,等发动机冒烟才发现问题,那就是没有监控监控的微服务日常。企业面对监控监控通常两条路,要么自研一套,从零写采集、存储、告警,人力成本高、周期长,一般只有大厂玩得起;要么拿开源方案搭积木,Prometheus 加 Grafana 这对组合十家企业有八家在用,下面按章节拆开说。

  • Prometheus:拉模型采集时序数据,自己存 TSDB,靠规则做告警。
  • Grafana:专门画图,接多个数据源,把指标变成人能看懂的面板。
  • 两者分工清楚,采集归采集,展示归展示,中间靠 HTTP 接口打通。

二、用 Docker 把底座装起来

先把 Prometheus 和 Alertmanager 起掉:

docker run -d --name prometheus \
  -p 9090:9090 \
  -v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
  prom/prometheus
docker run -d --name alertmanager \
  -p 9093:9093 \
  -v /opt/prometheus/alertmanager.yml:/etc/alertmanager/alertmanager.yml \
  prom/alertmanager

生产环境别用 latest,钉死版本号,回滚才有依据。配置文件挂宿主机,方便改了直接重启容器,不用重建镜像。

三、让业务应用暴露指标

Prometheus 是主动来拉的,所以应用得提供一个能被拉的地址。Spring Boot 项目两步:

第一步,加依赖:spring-boot-starter-actuator 和 micrometer-registry-prometheus。

第二步,改配置把端点开出来:

management.endpoints.web.exposure.include=health,info,prometheus
management.endpoint.prometheus.metrics.export.enabled=true

验证应用自己先吐得出来:

curl http://127.0.0.1:8080/actuator/prometheus

能返回一堆 http_server_requests_seconds_* 之类的文本就成了。

四、配置抓取任务

prometheus.yml 里写一个 job:

scrape_configs:
  - job_name: 'spring-app'
    metrics_path: '/actuator/prometheus'
    scrape_interval: 15s
    static_configs:
      - targets: ['192.168.1.10:8080']

改完检查配置语法再重启,别盲改:

docker exec prometheus promtool check config /etc/prometheus/prometheus.yml
docker restart prometheus

界面上 Status / Targets 看每个目标是不是 UP,这里红一个,后面的图全是假的。

五、用规则做告警

groups:
  - name: app.rules
    rules:
      - alert: HighErrorRate
        expr: rate(http_server_requests_seconds_count{status=~"5.."}[5m]) > 0.05
        for: 2m
        labels:
          severity: page
        annotations:
          summary: "应用错误率过高 {{ $labels.instance }}"
          description: "5 分钟错误率超过 5%,请检查上游依赖"

写规则的三条经验:表达式先用 promtool 或 UI 的 Graph 页验证能出数;for 时间别设太短,抖动会刷爆值班手机;告警名带业务语义,让接警的人一眼知道该看什么。

六、Grafana 接数据源和画大屏

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

浏览器开 http://<IP>:3000,默认账号 admin,密码 admin,首次登录强制改。数据源选 Prometheus,地址填 http://<prometheusIP>:9090,保存时点「Test」确认通。

面板不一定要从零画,官方社区有上千现成模板,导入 JSON 后改变量就能用。画大屏按「一条业务线一页」组织,顶部放全局概览,下钻到单实例,别把所有指标堆一页。

七、扩展监控覆盖范围

  • 主机:node_exporter 挂上去,CPU、内存、磁盘、文件系统剩余是必看项。
  • 数据库:MySQL 用 mysqld_exporter,盯连接数、慢查询、复制延迟。
  • 缓存:Redis 用 redis_exporter,盯命中率和内存碎片。
  • 链路:需要调用链就上 OpenTelemetry 或 Jaeger,Prometheus 只管时序,不管 traces。

八、落地时容易翻车的点

  • 只装不配告警,出事还是靠人发现——告警规则是这套东西的价值核心,不是附加项。
  • 标签随手加(instance、pod 乱写), cardinality 一涨,TSDB 内存直接爆。
  • retention 设太短,出事后想看三天前的数发现没了,生产建议按容量给 15 天到 30 天。
  • 告警发到没人看的地方(比如只发群公告),等于没做。接值班电话或工单,闭环才是关键。

qidao123.com企服评测-应用市场 编辑提示

本文按 Prometheus 加 Grafana 的技术栈,讲从容器化部署、应用暴露指标、抓取配置、告警规则到 Grafana 画图的完整链路。落地时重点盯 targets 是否为 UP、告警能否真正触达值班人员、标签数量是否失控。企业批量部署建议用配置管理统一 prometheus 规则模板,告警渠道接入工单系统形成闭环,避免监控建完就成了摆设。

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表