该技能用于搭建和运维基于 Prometheus 与 Grafana 的指标监控体系,覆盖从采集、查询、告警到可视化的完整环节。
用途与适用场景 适合在以下场景使用:搭建指标采集基础设施;创建监控仪表盘;编写 PromQL 查询做分析;配置告警规则;监控 Kubernetes 集群。前置条件包括:用 Docker 或 Kubernetes 部署、能通过网络访问被监控目标、对指标概念有基本理解。
部署方式 Docker 部署给出 docker-compose 示例,包含 prometheus(prom/prometheus:v2.48.0)与 grafana(grafana/grafana:10.2.0)两个服务,并挂载配置、规则和数据卷,保留期设置为 15d,端口绑定到 127.0.0.1。Grafana 管理员密码通过环境变量注入,并要求设置唯一密钥。Kubernetes 部署使用 Helm 安装 kube-prometheus-stack,并引用预先审查的 values 文件和已创建的密码 Secret。示例还展示了 ServiceMonitor 的写法,其中需要 operator 选择器和名为 metrics 的 Service 端口。
配置与查询 Prometheus 配置示例包含全局抓取与评估间隔、alerting、rule_files 及 static_configs 抓取任务(prometheus、node、applications)。PromQL 部分给出 CPU 忙碌百分比、HTTP 请求速率、平均响应时间、内存使用率等基础查询,以及按状态码求和、按实例平均、topk、P95 延迟等聚合查询和基于时间的查询。
告警与通知 告警规则示例包含高错误率、服务宕机、高内存使用、磁盘空间不足,并配置 for 持续时间、severity 标签与注解。Alertmanager 示例包含路由、分组、Slack 与 PagerDuty 接收器;通知需要显式授权;标签应使用路由模板,而不是原始 req.path 或用户 ID,以控制基数。
可视化与规则管理 Grafana 部分给出仪表盘 JSON 结构(graph、gauge 面板及 targets、gridPos)、仪表盘 provisioning 配置、Prometheus 数据源 provisioning 配置,以及记录规则示例(按 job 求请求速率、按实例求 CPU 平均速率、P95 延迟)。
应用埋点 提供 Go 应用(client_golang 的 CounterVec 与 promhttp)和 Node.js 应用(prom-client 的 Counter、中间件与 /metrics 暴露)的埋点示例。
注意事项与限制 文档强调:固定受支持的 chart/镜像版本,并在上线前用匹配工具校验配置与规则;Docker 示例省略了 alertmanager、node-exporter、apps 及 provisioning 挂载,只应添加经批准的服务与配置,不要假设这些目标存在;限制指标与管理员端点、密钥的访问;查询标签与单位应与实际埋点一致,明确无流量/零分母行为,区分 up==0 与业务健康,缺失 up 序列需单独的缺失告警;记录规则能降低查询成本,但本身不降低源指标基数与存储。常见问题包括目标未被发现、内存占用高、查询缓慢、数据点缺失,并给出对应排查方向。最佳实践包括常用查询使用记录规则、限制标签基数、按存储容量设置保留期、延迟使用直方图指标、合理设置告警阈值、仪表盘以代码方式纳入版本控制、大规模部署使用 federation、定期清理无用指标。
安全边界 该技能针对真实环境执行:应用任何内容前需确认目标、影响范围与回滚方案;未经明确批准不得部署到生产。本次为纯文档导入,上游脚本与模板未随附。示例中的 git status && git diff --stat、kubectl diff -f manifest.yaml 用于变更前检查。相关技能包括 alerting-oncall、loki-logging、kubernetes-ops。Grafana 具体版本能力、各镜像的完整支持矩阵、收费与价格信息暂未提供。