关于 prometheus
prometheus 是介绍 Prometheus 指标工作流的技能,涵盖 PromQL、告警和记录规则。它面向查询或运维 Prometheus、Grafana 指标的用户,并提供常见分析与配置示例。
主要功能
- 01PromQL 选择器、速率与聚合
- 02常见指标分析模式
- 03告警规则和路由示例
- 04记录规则配置与验证
- 05Grafana Metrics Drilldown 指引
适用场景
- 01编写请求速率和错误率查询
- 02配置并验证 Prometheus 告警
- 03用记录规则预计算仪表板指标
- 04无需编写 PromQL 浏览指标
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ grafana/ skills --skill prometheus安装后在 Claude Code 中输入/prometheus确认已加载。
详细介绍
使用 Prometheus 和 Grafana 监控指标
文档:https://prometheus.io/docs/ | Grafana Cloud Metrics:https://grafana.com/docs/grafana-cloud/send-data/metrics/
PromQL 快速参考
即时向量选择器
# By metric name
http_requests_total
# Label filter
http_requests_total{job="api-server"}
# Multiple labels (AND)
http_requests_total{job="api-server", method="GET"}
# Regex
http_requests_total{job=~"api.*", status=~"5.."}
# Negative
http_requests_total{status!="200"}
范围向量和速率
# Per-second rate over 5 minutes
rate(http_requests_total[5m])
# Increase over interval
increase(http_requests_total[1h])
# Instant rate (last two samples)
irate(http_requests_total[5m])
# Offset (5 minutes ago)
rate(http_requests_total[5m] offset 5m)
聚合
# Sum by label
sum by (job) (rate(http_requests_total[5m]))
# Average
avg by (instance) (node_cpu_seconds_total)
# Top-K
topk(5, rate(http_requests_total[5m]))
# Histogram quantiles
histogram_quantile(0.99, rate(http_request_duration_seconds_bucket[5m]))
# Count distinct
count(up{job="api"})
常见模式
# Error rate percentage
sum(rate(http_requests_total{status=~"5.."}[5m]))
/ sum(rate(http_requests_total[5m])) * 100
# Saturation (CPU usage %)
100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
# Memory usage
node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes
# Predict disk full (linear extrapolation)
predict_linear(node_filesystem_free_bytes[6h], 24*3600) < 0
告警规则
Prometheus 告警规则
groups:
- name: api_alerts
rules:
- alert: HighErrorRate
expr: |
sum(rate(http_requests_total{status=~"5.."}[5m]))
/ sum(rate(http_requests_total[5m])) > 0.05
for: 5m
labels:
severity: critical
annotations:
summary: "High 5xx error rate ({{ $value | humanizePercentage }})"
Alertmanager 路由
# alertmanager.yml
route:
receiver: default
group_by: [alertname, job]
group_wait: 30s
group_interval: 5m
routes:
- match:
severity: critical
receiver: pagerduty
- match:
severity: warning
receiver: slack
receivers:
- name: pagerduty
pagerduty_configs:
- service_key: "<key>"
- name: slack
slack_configs:
- channel: "#alerts"
api_url: "<webhook_url>"
- name: default
email_configs:
- to: "[email protected]"
验证告警配置
promtool check rules rules.yml
amtool check-config alertmanager.yml
amtool config routes test --config.file=alertmanager.yml severity=critical
记录规则
预先计算开销较大的 PromQL,以提升仪表板性能:
groups:
- name: api_rules
interval: 1m
rules:
- record: job:http_requests:rate5m
expr: sum by (job) (rate(http_requests_total[5m]))
- record: job:http_request_duration_seconds:p99
expr: histogram_quantile(0.99, sum by (job, le) (rate(http_request_duration_seconds_bucket[5m])))
部署并验证记录规则
# 1. Validate rule syntax
promtool check rules rules/recording.yml
# 2. Reload Prometheus (after adding to rule_files in prometheus.yml)
curl -X POST http://localhost:9090/-/reload
# 3. Verify rules are active
curl -s http://localhost:9090/api/v1/rules | jq '.data.groups[].rules[] | {name, health}'
指标深入分析(Grafana 12+)
无需编写 PromQL 即可探索 Prometheus — 浏览指标。前往 Explore > Metrics Drilldown,或使用 <grafana-url>/a/grafana-metricsdrilldown-app。
提供指标搜索和标签细分、用于异常检测的智能分段、自动可视化,以及从指标切换到相关日志和追踪的遥测数据透视功能。
资源
评论
支持 Markdown