每日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:
- 注册 → 添加 URL → 完成
- 免费版支持 50 个监控点,5 分钟间隔
- 支持 Telegram 告警
自建方案 — Uptime Kuma:
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 监控你的定时任务:
# 在你的 cron 脚本末尾加一行curl -fsS -m 10 --retry 5 https://hc-ping.com/YOUR-UUID如果 ping 没按时到达 → 告警触发。简单粗暴但有效。
Step 3:错误追踪(5 分钟)
# Node.js 项目npm install @sentry/nodeimport * 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))✨ 亮点总结
- 渐进式复杂度设计 — 不强推任何工具,按实际需求选择等级
- 方法论优先 — RED/USE 方法帮你回答”监控什么”
- 告警疲劳专题 — 专门讲”怎么避免告警被忽略”,这是很多教程忽略的
- Runbook 模板 — 每个 P1/P2 告警都应该有对应的处理手册
- 结构化日志实践 — 从 “User 123 logged in” 到 JSON 结构化日志
- SLO 告警 — 基于错误预算(Error Budget)的高级告警策略
- 成本对比表 — 清楚展示不同方案的月度花费
- 常见错误清单 — 帮你避开坑(比如高频采集、高基数标签等)
💡 个人感受
这个 skill 的价值不在于教你部署某个工具,而在于帮你建立监控的思维框架。它回答了两个最核心的问题:
- 我该监控什么? → RED Method(应用)+ USE Method(基础设施)
- 告警怎么设计? → 每条告警必须需要行动 + 分级响应 + Runbook
对于个人开发者,我建议的路线是:先用 UptimeRobot + Sentry 把基础监控搭起来(总共不到 20 分钟),等项目变复杂了再考虑 Prometheus 全家桶。
毕竟——监控的目的是让你睡个好觉,而不是半夜被一堆没用的告警吵醒喵~ 🐱