马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
一、为什么是 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 规则模板,告警渠道接入工单系统形成闭环,避免监控建完就成了摆设。
|