Monitoring Expert 是一个面向监控、可观测性与告警的专家级技能,指导用户使用 Prometheus、Grafana、日志系统与分布式追踪构建完整的可观测性体系。
用途 该技能在用户涉及可观测性(observability)、Prometheus、Grafana、日志、告警、分布式追踪等主题时提供专家级指导,帮助设计、配置和维护监控与告警方案。
核心概念 可观测性三大支柱:指标(Metrics,随时间变化的数值测量,使用 Prometheus)、日志(Logs,离散事件,使用 ELK、Loki)、追踪(Traces,请求在分布式系统中的流转,使用 Jaeger、Tempo)。 监控基础方法包括:Golden Signals(延迟、流量、错误、饱和度)、RED 方法(Rate、Errors、Duration)、USE 方法(Utilization、Saturation、Errors),以及 SLI(服务级指标)、SLO(服务级目标)、SLA(服务级协议)。
关键组件 指标采集(exporters、agents)、时序数据库、可视化(仪表盘)、告警(规则、接收器)、日志聚合、分布式追踪、Alertmanager。
配置示例 资料提供了可复用的配置:
- Alertmanager(alertmanager.yml):包含全局设置、路由(按 severity 分流到 PagerDuty、Slack、数据库团队)、接收器(email、slack、pagerduty)、抑制规则(critical 告警触发时抑制 warning)。
- Grafana:仪表盘 JSON 示例(请求速率、P95 延迟、错误率面板),以及数据源 Provisioning 配置(Prometheus、Loki)。
- Loki 与 Promtail:Loki 配置(server、ingester、schema_config、storage_config、limits_config)、Promtail 配置(采集应用日志、Docker 日志、Kubernetes 日志)。
- LogQL 查询:按 job 查询、按级别过滤、JSON 解析、错误率、按 pod 计数、从日志生成指标等。
- 分布式追踪:Jaeger 的 docker-compose 部署(多端口、Zipkin 兼容),以及 Node.js 应用埋点示例(jaeger-client + opentracing,追踪 HTTP 请求、数据库查询、外部 API 调用)。
最佳实践
- 指标命名:使用描述性名称(如 http_requests_total)、在名称中包含单位(duration_seconds、bytes_total)、计数器用 _total 后缀、直方图用 _bucket 后缀、保持标签名一致。
- 基数控制:避免高基数标签(用户 ID、邮箱),使用有界标签值,尽量聚合,监控指标数量。
- 告警设计:针对症状而非原因告警,设置合适阈值,包含可操作的注释,对相关告警分组,使用抑制规则。
- 仪表盘设计:每个仪表盘单一用途,使用一致时间范围,包含 SLO/SLI,用注释补充上下文,选择合适的可视化类型。
需避免的反模式 无 SLO、告警疲劳(过多不可操作的告警)、高基数标签、关键路径缺少埋点、缺少 runbook、忽略趋势、日志无结构、缺少上下文。
参考文档 详细材料随技能提供,按需读取,涵盖 Prometheus(Docker 安装、配置、告警规则、PromQL 查询)和应用埋点(Node.js/Express、Python/Flask、Go)。
外部资源 Prometheus:https://prometheus.io/docs/ ;Grafana:https://grafana.com/docs/ ;Loki:https://grafana.com/docs/loki/ ;Jaeger:https://www.jaegertracing.io/docs/ ;OpenTelemetry:https://opentelemetry.io/docs/ ;SRE Book:https://sre.google/books/ 。
适用场景 适用于需要搭建或优化监控告警体系、配置 Prometheus/Grafana、设计日志聚合与查询、实现分布式追踪的工程场景,尤其是用户提到可观测性、Prometheus、Grafana 等关键词时。
限制 资料未提供该技能的具体收费、价格、平台或安装方式信息,相关内容暂未提供。