关于 prometheus
这项 Prometheus 查询技能面向 Prometheus 和 Alertmanager 位于 OAuth2 Proxy 后方的 Kubernetes 环境,说明如何进入 Pod、设置端口转发,并用附带脚本执行即时和区间 PromQL 查询。
主要功能
- 01在 Pod 内查询 Prometheus
- 02通过端口转发访问 API
- 03执行即时 PromQL 查询
- 04按时间步长执行区间查询
- 05查看 CPU、内存和 Pod 常用查询
适用场景
- 01检查监控目标是否正常运行
- 02检查 CPU 和内存使用率
- 03查找状态异常的 Pod
- 04通过本地端口转发重复执行查询
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ ionfury/ homelab --skill prometheus安装后在 Claude Code 中输入/prometheus确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
tests.yamlreferences/queries.mdscripts/promql.sh详细介绍
Prometheus 查询
设置
Prometheus 和 Alertmanager 位于内部网关上的 OAuth2 Proxy 之后。DNS URL(https://prometheus.internal.tomnowak.work)会重定向到 OAuth 登录页面,因此无法通过 curl 用于 API 查询。
访问方式
方式 1:kubectl exec(快捷,无需设置)
# Query Prometheus API directly inside the pod
kubectl --context <cluster> exec -n monitoring prometheus-kube-prometheus-stack-0 -c prometheus -- \
wget -qO- 'http://localhost:9090/api/v1/query?query=up' | jq '.data.result'
# Query Alertmanager API
kubectl --context <cluster> exec -n monitoring alertmanager-kube-prometheus-stack-0 -c alertmanager -- \
wget -qO- 'http://localhost:9093/api/v2/alerts' | jq .
方式 2:端口转发(适用于脚本和重复查询)
kubectl --context <cluster> port-forward -n monitoring svc/prometheus-operated 9090:9090 &
export PROMETHEUS_URL=http://localhost:9090
promql.sh 脚本默认使用 http://localhost:9090,开箱即可配合端口转发使用。
快速查询
使用位于 .claude/skills/prometheus/scripts/promql.sh 的捆绑脚本:
# Start port-forward first (script defaults to http://localhost:9090)
kubectl --context <cluster> port-forward -n monitoring svc/prometheus-operated 9090:9090 &
# Instant query
./scripts/promql.sh query 'up'
# Range query (last hour, 15s resolution)
./scripts/promql.sh range 'node_cpu_seconds_total' --start 1h --step 15s
# Firing alerts only
./scripts/promql.sh alerts --firing
# All alert rules
./scripts/promql.sh rules
# Find metrics by label
./scripts/promql.sh series '{job="node-exporter"}'
# Health check
./scripts/promql.sh health
常见查询
# CPU usage %
./scripts/promql.sh query 'avg(1 - rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100'
# Memory usage %
./scripts/promql.sh query '(1 - sum(node_memory_MemAvailable_bytes) / sum(node_memory_MemTotal_bytes)) * 100'
# Problem pods
./scripts/promql.sh query 'kube_pod_status_phase{phase!~"Running|Succeeded"} == 1'
# Container restarts (last hour)
./scripts/promql.sh query 'increase(kube_pod_container_status_restarts_total[1h]) > 0'
# Firing alerts
./scripts/promql.sh alerts --firing
# Full alert details
./scripts/promql.sh alerts --verbose
创建监控资源
本技能涵盖 Prometheus 的查询。关于编写新的监控资源 (PrometheusRules、ServiceMonitors、PodMonitors、AlertmanagerConfig、记录规则), 请参阅 monitoring-authoring skill。
Prometheus 详情
| 属性 | 值 |
|---|---|
| Namespace | monitoring |
| Service | prometheus-operated:9090 |
| Retention | 14 days / 50GB |
| External label | prometheus_source: ${cluster_name} |
评论
支持 Markdown