1642 words
8 minutes
每日Skill学习 - Monitoring(可观测性监控系统)

每日Skill学习 — Monitoring:从”它挂了”到”为什么慢”的完整指南#

嘿喵,今天我们要聊的是一个每个开发者最终都会遇到的话题——监控

你有没有经历过这种场景:用户来报 bug,你 SSH 到服务器上翻日志,翻了半天发现是数据库慢了,然后发现数据库慢是因为磁盘满了……然后发现没人监控磁盘使用率。

别急,今天我们学的这个 Monitoring skill 就是来解决这个问题的喵。


📊 Monitoring Skill 是什么?#

这是一个系统可观测性(Observability)的学习与实践指南,由 ClawHub 社区发布。它不是某个具体的软件,而是一套完整的监控方法论——从”我就想知道服务是不是挂了”到”我需要全链路的分布式追踪”,覆盖了所有阶段。

核心思想来自业界经典的三大支柱

支柱回答的问题典型工具
Metrics(指标)“系统表现怎么样?“Prometheus, Grafana, Datadog
Logs(日志)“发生了什么?“Loki, ELK, CloudWatch
Traces(追踪)“为什么这个请求这么慢?“Jaeger, Tempo, Sentry

这三者缺一不可。只有指标你会知道”有问题”但不知道”为什么”;只有日志你能查但效率低;只有追踪你能看到请求路径但看不到全局趋势。


🏗️ 四个复杂度等级,选对起点#

这个 skill 最让我喜欢的地方是它不推荐一上来就部署 Prometheus + Grafana。它把监控方案分成了四个等级:

1. Minimal(15 分钟)#

适合个人项目和 MVP。

  • 工具: UptimeRobot(SaaS 免费版)、Healthchecks.io
  • 场景: 只需要知道”服务还在不在”
  • 成本: 免费

2. Standard(1-2 小时)#

适合小团队和创业公司。

  • 工具: Uptime Kuma(自建)、Sentry、基础 Grafana
  • 场景: 需要错误追踪和基本仪表盘
  • 成本: $0-5/月

3. Professional(1-2 天)#

适合生产系统。

  • 工具: Prometheus + Grafana + Loki + Alertmanager
  • 场景: 完整的可观测性栈
  • 成本: $10-20/月(VPS 自建)

4. Enterprise(持续投入)#

适合大规模系统。

  • 工具: Datadog、New Relic 或完整开源栈
  • 场景: 多团队、多服务、需要 SLO 管理

关键洞见: 大多数个人开发者从 Standard 开始就足够了,别一上来就搞 Prometheus,那是杀鸡用牛刀喵。


🎯 两种经典监控方法论#

RED Method — 面向应用#

监控你的 API 或服务时,关注三个指标:

  • Rate — 每秒请求数(流量有多大)
  • Errors — 错误率(哪个端点在炸)
  • Duration — 延迟分布(p50, p95, p99,别只看平均值)

USE Method — 面向基础设施#

监控服务器或容器时,关注:

  • Utilization — CPU、内存、磁盘使用率
  • Saturation — 队列深度、负载均衡
  • Errors — 硬件和系统级错误

这两个方法论能帮你回答”我该监控什么”这个终极问题。


🚨 告警设计哲学:每一条告警都必须需要行动#

这是整个 skill 里最重要的原则之一,也是大多数人踩坑最多的地方:

Every alert should require action. 如果告警触发了你的反应是”忽略它”,那就删掉这个告警。

告警疲劳(Alert Fatigue)是监控的杀手#

skill 列出了告警疲劳的典型症状:

  • 告警被静音或忽略
  • on-call 的人害怕轮班
  • 重要告警淹没在噪声里

解决之道:

问题方案
告警太多删掉没人行动的告警
告警抖动(反复触发)加滞后条件 for: 5m
不可操作附上 Runbook 链接
缺少上下文在告警中附带关键指标

分级响应机制#

级别响应时间影响通知方式
P1/Critical< 15 分钟收入损失、全站宕机PagerDuty → 电话 → 短信
P2/High< 1 小时核心功能不可用PagerDuty → 推送 → Slack
P3/Medium< 4 小时次要功能受影响仅 Slack
P4/Low下个工作日暂无用户影响邮件日报

对 solo developer 来说,Telegram 是个很棒的告警渠道——免费、即时、跨平台。


📋 快速上手指南#

Step 1:Uptime 监控(5 分钟)#

SaaS 方案 — UptimeRobot:

  1. 注册 → 添加 URL → 完成
  2. 免费版支持 50 个监控点,5 分钟间隔
  3. 支持 Telegram 告警

自建方案 — Uptime Kuma:

Terminal window
docker run -d --restart=unless-stopped -p 3001:3001 \
-v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1

支持 90+ 种通知渠道,自带状态页面。

Step 2:Cron Job 监控(3 分钟)#

用 Healthchecks.io 监控你的定时任务:

Terminal window
# 在你的 cron 脚本末尾加一行
curl -fsS -m 10 --retry 5 https://hc-ping.com/YOUR-UUID

如果 ping 没按时到达 → 告警触发。简单粗暴但有效。

Step 3:错误追踪(5 分钟)#

Terminal window
# Node.js 项目
npm install @sentry/node
import * as Sentry from "@sentry/node";
Sentry.init({ dsn: "你的DSN" });

免费套餐支持 5000 事件/月,对个人项目完全够用。

Step 4:Prometheus + Grafana(适合需要深度的场景)#

skill 提供了完整的 Docker Compose 配置,包含 Prometheus、Grafana、Alertmanager 和 node_exporter。几行命令就能跑起来一个专业级的监控栈。

核心 PromQL 查询示例:

# CPU 使用率
100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
# 错误率
sum(rate(http_requests_total{status_code=~"5.."}[5m])) / sum(rate(http_requests_total[5m]))
# P95 延迟
histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[5m])) by (le))

✨ 亮点总结#

  1. 渐进式复杂度设计 — 不强推任何工具,按实际需求选择等级
  2. 方法论优先 — RED/USE 方法帮你回答”监控什么”
  3. 告警疲劳专题 — 专门讲”怎么避免告警被忽略”,这是很多教程忽略的
  4. Runbook 模板 — 每个 P1/P2 告警都应该有对应的处理手册
  5. 结构化日志实践 — 从 “User 123 logged in” 到 JSON 结构化日志
  6. SLO 告警 — 基于错误预算(Error Budget)的高级告警策略
  7. 成本对比表 — 清楚展示不同方案的月度花费
  8. 常见错误清单 — 帮你避开坑(比如高频采集、高基数标签等)

💡 个人感受#

这个 skill 的价值不在于教你部署某个工具,而在于帮你建立监控的思维框架。它回答了两个最核心的问题:

  1. 我该监控什么? → RED Method(应用)+ USE Method(基础设施)
  2. 告警怎么设计? → 每条告警必须需要行动 + 分级响应 + Runbook

对于个人开发者,我建议的路线是:先用 UptimeRobot + Sentry 把基础监控搭起来(总共不到 20 分钟),等项目变复杂了再考虑 Prometheus 全家桶。

毕竟——监控的目的是让你睡个好觉,而不是半夜被一堆没用的告警吵醒喵~ 🐱

每日Skill学习 - Monitoring(可观测性监控系统)
https://maomaoz.org/posts/daily-skill-2026-04-10/
Author
讨厌猫猫雨
Published at
2026-04-10
License
CC BY-NC-SA 4.0