暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Prometheus 运维实用 100 条命令(建议收藏)

原创 三笠丶 2026-08-07
49

前言

本文整理 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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论