前言
本文整理 Prometheus 3.x 常用的 100 条启动、配置校验、PromQL、HTTP API、规则、TSDB 和部署排障命令。示例服务地址为 http://127.0.0.1:9090,配置目录为 /etc/prometheus。
执行 TSDB 删除、快照、配置热加载或生产查询前,应确认认证、保留策略和资源影响。PromQL 中的指标名与标签需替换为实际环境值。
一、版本、启动与帮助
1. 查看 Prometheus 版本
prometheus --version
2. 查看启动参数
prometheus --help
3. 使用指定配置启动
prometheus --config.file=/etc/prometheus/prometheus.yml
4. 指定 TSDB 路径
prometheus --storage.tsdb.path=/data/prometheus
5. 设置数据保留时间
prometheus --storage.tsdb.retention.time=30d
6. 设置数据保留大小
prometheus --storage.tsdb.retention.size=200GB
7. 修改监听地址
prometheus --web.listen-address=0.0.0.0:9090
8. 指定外部访问 URL
prometheus --web.external-url=https://prom.example.com/
9. 启用生命周期 API
prometheus --web.enable-lifecycle
10. 设置日志级别
prometheus --log.level=debug
二、配置与规则校验
11. 查看 promtool 版本
promtool --version
12. 校验主配置
promtool check config /etc/prometheus/prometheus.yml
13. 只校验配置语法
promtool check config --syntax-only /etc/prometheus/prometheus.yml
14. 将 lint 问题视为失败
promtool check config --lint-fatal /etc/prometheus/prometheus.yml
15. 校验规则文件
promtool check rules /etc/prometheus/rules/*.yml
16. 校验 Web 配置
promtool check web-config /etc/prometheus/web.yml
17. 调试服务发现
promtool check service-discovery --timeout=30s /etc/prometheus/prometheus.yml node
18. 测试告警规则
promtool test rules tests/rules_test.yml
19. 格式化 PromQL
promtool promql format 'sum(rate(http_requests_total[5m])) by (job)'
20. 为表达式添加标签匹配器
promtool promql label-matchers set 'up{job="node"}' 'cluster="prod"'
三、健康检查与运行状态
21. 检查健康状态
promtool check healthy --url=http://127.0.0.1:9090
22. 检查就绪状态
promtool check ready --url=http://127.0.0.1:9090
23. 使用 HTTP 健康接口
curl -fsS http://127.0.0.1:9090/-/healthy
24. 使用 HTTP 就绪接口
curl -fsS http://127.0.0.1:9090/-/ready
25. 查看运行时信息
curl -s http://127.0.0.1:9090/api/v1/status/runtimeinfo | jq
26. 查看构建信息
curl -s http://127.0.0.1:9090/api/v1/status/buildinfo | jq
27. 查看配置
curl -s http://127.0.0.1:9090/api/v1/status/config | jq -r '.data.yaml'
28. 查看启动参数
curl -s http://127.0.0.1:9090/api/v1/status/flags | jq
29. 查看 TSDB 状态
curl -s http://127.0.0.1:9090/api/v1/status/tsdb | jq
30. 热加载配置
curl -fsS -X POST http://127.0.0.1:9090/-/reload
仅在启用 --web.enable-lifecycle 后可用。
四、目标与服务发现
31. 查看活动抓取目标
curl -s 'http://127.0.0.1:9090/api/v1/targets?state=active' | jq
32. 查看失败目标
curl -s 'http://127.0.0.1:9090/api/v1/targets?state=active' | jq '.data.activeTargets[] | select(.health!="up")'
33. 查看已删除目标
curl -s http://127.0.0.1:9090/api/v1/targets/metadata | jq
34. 查看服务发现结果
curl -s http://127.0.0.1:9090/api/v1/targets | jq '.data.activeTargets[].discoveredLabels'
35. 查看指定指标元数据
curl -s 'http://127.0.0.1:9090/api/v1/metadata?metric=up' | jq
36. 查看所有标签名
curl -s http://127.0.0.1:9090/api/v1/labels | jq
37. 查看 job 标签值
curl -s http://127.0.0.1:9090/api/v1/label/job/values | jq
38. 查询匹配序列
curl -sG http://127.0.0.1:9090/api/v1/series --data-urlencode 'match[]=up{job="node"}' | jq
39. 查看抓取耗时
scrape_duration_seconds
40. 查看每个目标采集样本数
scrape_samples_scraped
五、即时查询
41. 查询 up 指标
promtool query instant http://127.0.0.1:9090 'up'
42. 查询指定 job
promtool query instant http://127.0.0.1:9090 'up{job="node"}'
43. 统计在线目标
sum(up)
44. 按 job 统计离线目标
sum by (job) (up == 0)
45. 计算请求速率
sum by (job) (rate(http_requests_total[5m]))
46. 计算错误率
sum(rate(http_requests_total{status=~"5.."}[5m])) / sum(rate(http_requests_total[5m]))
47. 计算 CPU 使用率
100 * (1 - avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])))
48. 计算内存使用率
100 * (1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)
49. 计算磁盘使用率
100 * (1 - node_filesystem_avail_bytes{fstype!~"tmpfs|overlay"} / node_filesystem_size_bytes)
50. 查看指标前十
topk(10, rate(http_requests_total[5m]))
六、范围查询与 HTTP API
51. 范围查询
promtool query range --start='2026-07-27T00:00:00Z' --end='2026-07-27T01:00:00Z' --step=1m http://127.0.0.1:9090 'up'
52. HTTP 即时查询
curl -sG http://127.0.0.1:9090/api/v1/query --data-urlencode 'query=sum(up)' | jq
53. 指定查询时间
curl -sG http://127.0.0.1:9090/api/v1/query --data-urlencode 'query=up' --data-urlencode 'time=2026-07-27T00:00:00Z' | jq
54. HTTP 范围查询
curl -sG http://127.0.0.1:9090/api/v1/query_range --data-urlencode 'query=up' --data-urlencode 'start=2026-07-27T00:00:00Z' --data-urlencode 'end=2026-07-27T01:00:00Z' --data-urlencode 'step=60s' | jq
55. 查询预测值
predict_linear(node_filesystem_avail_bytes[6h], 24 * 3600)
56. 查询 95 分位延迟
histogram_quantile(0.95, sum by (le) (rate(http_request_duration_seconds_bucket[5m])))
57. 查询一小时增量
increase(http_requests_total[1h])
58. 查询变化次数
changes(process_start_time_seconds[1h])
59. 查询最近值
last_over_time(up[10m])
60. 检查指标是否缺失
absent(up{job="node"})
七、规则与告警
61. 查看规则组
curl -s http://127.0.0.1:9090/api/v1/rules | jq
62. 只看告警规则
curl -s 'http://127.0.0.1:9090/api/v1/rules?type=alert' | jq
63. 只看记录规则
curl -s 'http://127.0.0.1:9090/api/v1/rules?type=record' | jq
64. 查看当前告警
curl -s http://127.0.0.1:9090/api/v1/alerts | jq
65. 查看 firing 告警
curl -s http://127.0.0.1:9090/api/v1/alerts | jq '.data.alerts[] | select(.state=="firing")'
66. 调试记录规则
promtool debug all --host=http://127.0.0.1:9090
67. 生成规则测试模板
promtool test rules --help
68. 查询规则计算错误
prometheus_rule_evaluation_failures_total
69. 查询规则计算耗时
prometheus_rule_group_last_duration_seconds
70. 查询待发送告警
prometheus_notifications_alertmanagers_discovered
八、TSDB 与数据维护
71. 分析 TSDB
promtool tsdb analyze /data/prometheus
72. 分析指定 Block
promtool tsdb analyze /data/prometheus 01JXXXXXXXXXXXX
73. 列出 TSDB Block
promtool tsdb list /data/prometheus
74. 创建 TSDB Block
promtool tsdb create-blocks-from openmetrics metrics.txt /data/import
75. 从规则回填数据
promtool tsdb create-blocks-from rules --start=2026-07-26T00:00:00Z --end=2026-07-27T00:00:00Z http://127.0.0.1:9090 rules.yml
76. 创建快照
curl -fsS -X POST 'http://127.0.0.1:9090/api/v1/admin/tsdb/snapshot?skip_head=false' | jq
77. 删除匹配序列
curl -fsS -X POST -G http://127.0.0.1:9090/api/v1/admin/tsdb/delete_series --data-urlencode 'match[]={job="test"}'
78. 清理墓碑
curl -fsS -X POST http://127.0.0.1:9090/api/v1/admin/tsdb/clean_tombstones
79. 查看 Head 序列数量
prometheus_tsdb_head_series
80. 查看 WAL 异常
journalctl -u prometheus | grep -Ei 'wal|corrupt|repair'
九、服务与容器运维
81. 查看 systemd 状态
systemctl status prometheus --no-pager
82. 查看服务日志
journalctl -u prometheus -n 200 --no-pager
83. 重启 Prometheus
sudo systemctl restart prometheus
84. 查看进程参数
pgrep -af prometheus
85. 查看监听端口
ss -lntp '( sport = :9090 )'
86. Docker 启动 Prometheus
docker run -d --name prometheus -p 9090:9090 -v "$PWD/prometheus.yml:/etc/prometheus/prometheus.yml:ro" prom/prometheus
87. 查看容器日志
docker logs --tail 200 prometheus
88. 查看 Kubernetes Pod
kubectl -n monitoring get pods -l app.kubernetes.io/name=prometheus -o wide
89. 转发 Prometheus 端口
kubectl -n monitoring port-forward svc/prometheus 9090:9090
90. 查看 Pod 日志
kubectl -n monitoring logs -l app.kubernetes.io/name=prometheus --tail=200
十、自监控与排障
91. 查看配置热加载结果
prometheus_config_last_reload_successful
92. 查看最近重载时间
prometheus_config_last_reload_success_timestamp_seconds
93. 查看查询并发
prometheus_engine_queries
94. 查看查询队列
prometheus_engine_queries_concurrent_max
95. 查看抓取失败
increase(prometheus_target_scrapes_exceeded_sample_limit_total[1h])
96. 查看样本写入率
rate(prometheus_tsdb_head_samples_appended_total[5m])
97. 查看进程内存
process_resident_memory_bytes{job="prometheus"}
98. 查看 Go 协程数
go_goroutines{job="prometheus"}
99. 查看 HTTP 请求延迟
histogram_quantile(0.99, sum by (le) (rate(prometheus_http_request_duration_seconds_bucket[5m])))
100. 一键生成诊断包
promtool debug all --host=http://127.0.0.1:9090 --output=prometheus-debug.tar.gz
总结
Prometheus 运维应围绕配置校验、目标健康、规则正确性、查询成本和 TSDB 容量展开。管理 API 默认不应暴露到公网,删除序列和清理墓碑必须先备份并确认匹配范围。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




