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

📅 2026/8/7 15:39:13
Prometheus 运维实用 100 条命令(建议收藏)
本文整理 Prometheus 3.x 常用的 100 条启动、配置校验、PromQL、HTTP API、规则、TSDB 和部署排障命令。示例服务地址为http://127.0.0.1:9090配置目录为/etc/prometheus。执行 TSDB 删除、快照、配置热加载或生产查询前应确认认证、保留策略和资源影响。PromQL 中的指标名与标签需替换为实际环境值。一、版本、启动与帮助1. 查看 Prometheus 版本prometheus --version2. 查看启动参数prometheus --help3. 使用指定配置启动prometheus --config.file/etc/prometheus/prometheus.yml4. 指定 TSDB 路径prometheus --storage.tsdb.path/data/prometheus5. 设置数据保留时间prometheus --storage.tsdb.retention.time30d6. 设置数据保留大小prometheus --storage.tsdb.retention.size200GB7. 修改监听地址prometheus --web.listen-address0.0.0.0:90908. 指定外部访问 URLprometheus --web.external-urlhttps://prom.example.com/9. 启用生命周期 APIprometheus --web.enable-lifecycle10. 设置日志级别prometheus --log.leveldebug二、配置与规则校验11. 查看 promtool 版本promtool --version12. 校验主配置promtool check config /etc/prometheus/prometheus.yml13. 只校验配置语法promtool check config --syntax-only /etc/prometheus/prometheus.yml14. 将 lint 问题视为失败promtool check config --lint-fatal /etc/prometheus/prometheus.yml15. 校验规则文件promtool check rules /etc/prometheus/rules/*.yml16. 校验 Web 配置promtool check web-config /etc/prometheus/web.yml17. 调试服务发现promtool check service-discovery --timeout30s /etc/prometheus/prometheus.yml node18. 测试告警规则promtool test rules tests/rules_test.yml19. 格式化 PromQLpromtool promql format sum(rate(http_requests_total[5m])) by (job)20. 为表达式添加标签匹配器promtool promql label-matchers set up{jobnode} clusterprod三、健康检查与运行状态21. 检查健康状态promtool check healthy --urlhttp://127.0.0.1:909022. 检查就绪状态promtool check ready --urlhttp://127.0.0.1:909023. 使用 HTTP 健康接口curl -fsS http://127.0.0.1:9090/-/healthy24. 使用 HTTP 就绪接口curl -fsS http://127.0.0.1:9090/-/ready25. 查看运行时信息curl -s http://127.0.0.1:9090/api/v1/status/runtimeinfo | jq26. 查看构建信息curl -s http://127.0.0.1:9090/api/v1/status/buildinfo | jq27. 查看配置curl -s http://127.0.0.1:9090/api/v1/status/config | jq -r .data.yaml28. 查看启动参数curl -s http://127.0.0.1:9090/api/v1/status/flags | jq29. 查看 TSDB 状态curl -s http://127.0.0.1:9090/api/v1/status/tsdb | jq30. 热加载配置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?stateactive | jq32. 查看失败目标curl -s http://127.0.0.1:9090/api/v1/targets?stateactive | jq .data.activeTargets[] | select(.health!up)33. 查看已删除目标curl -s http://127.0.0.1:9090/api/v1/targets/metadata | jq34. 查看服务发现结果curl -s http://127.0.0.1:9090/api/v1/targets | jq .data.activeTargets[].discoveredLabels35. 查看指定指标元数据curl -s http://127.0.0.1:9090/api/v1/metadata?metricup | jq36. 查看所有标签名curl -s http://127.0.0.1:9090/api/v1/labels | jq37. 查看 job 标签值curl -s http://127.0.0.1:9090/api/v1/label/job/values | jq38. 查询匹配序列curl -sG http://127.0.0.1:9090/api/v1/series --data-urlencode match[]up{jobnode} | jq39. 查看抓取耗时scrape_duration_seconds40. 查看每个目标采集样本数scrape_samples_scraped五、即时查询41. 查询 up 指标promtool query instant http://127.0.0.1:9090 up42. 查询指定 jobpromtool query instant http://127.0.0.1:9090 up{jobnode}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{modeidle}[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 API51. 范围查询promtool query range --start2026-07-27T00:00:00Z --end2026-07-27T01:00:00Z --step1m http://127.0.0.1:9090 up52. HTTP 即时查询curl -sG http://127.0.0.1:9090/api/v1/query --data-urlencode querysum(up) | jq53. 指定查询时间curl -sG http://127.0.0.1:9090/api/v1/query --data-urlencode queryup --data-urlencode time2026-07-27T00:00:00Z | jq54. HTTP 范围查询curl -sG http://127.0.0.1:9090/api/v1/query_range --data-urlencode queryup --data-urlencode start2026-07-27T00:00:00Z --data-urlencode end2026-07-27T01:00:00Z --data-urlencode step60s | jq55. 查询预测值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{jobnode})七、规则与告警61. 查看规则组curl -s http://127.0.0.1:9090/api/v1/rules | jq62. 只看告警规则curl -s http://127.0.0.1:9090/api/v1/rules?typealert | jq63. 只看记录规则curl -s http://127.0.0.1:9090/api/v1/rules?typerecord | jq64. 查看当前告警curl -s http://127.0.0.1:9090/api/v1/alerts | jq65. 查看 firing 告警curl -s http://127.0.0.1:9090/api/v1/alerts | jq .data.alerts[] | select(.statefiring)66. 调试记录规则promtool debug all --hosthttp://127.0.0.1:909067. 生成规则测试模板promtool test rules --help68. 查询规则计算错误prometheus_rule_evaluation_failures_total69. 查询规则计算耗时prometheus_rule_group_last_duration_seconds70. 查询待发送告警prometheus_notifications_alertmanagers_discovered八、TSDB 与数据维护71. 分析 TSDBpromtool tsdb analyze /data/prometheus72. 分析指定 Blockpromtool tsdb analyze /data/prometheus 01JXXXXXXXXXXXX73. 列出 TSDB Blockpromtool tsdb list /data/prometheus74. 创建 TSDB Blockpromtool tsdb create-blocks-from openmetrics metrics.txt /data/import75. 从规则回填数据promtool tsdb create-blocks-from rules --start2026-07-26T00:00:00Z --end2026-07-27T00:00:00Z http://127.0.0.1:9090 rules.yml76. 创建快照curl -fsS -X POST http://127.0.0.1:9090/api/v1/admin/tsdb/snapshot?skip_headfalse | jq77. 删除匹配序列curl -fsS -X POST -G http://127.0.0.1:9090/api/v1/admin/tsdb/delete_series --data-urlencode match[]{jobtest}78. 清理墓碑curl -fsS -X POST http://127.0.0.1:9090/api/v1/admin/tsdb/clean_tombstones79. 查看 Head 序列数量prometheus_tsdb_head_series80. 查看 WAL 异常journalctl -u prometheus | grep -Ei wal|corrupt|repair九、服务与容器运维81. 查看 systemd 状态systemctl status prometheus --no-pager82. 查看服务日志journalctl -u prometheus -n 200 --no-pager83. 重启 Prometheussudo systemctl restart prometheus84. 查看进程参数pgrep -af prometheus85. 查看监听端口ss -lntp ( sport :9090 )86. Docker 启动 Prometheusdocker run -d --name prometheus -p 9090:9090 -v $PWD/prometheus.yml:/etc/prometheus/prometheus.yml:ro prom/prometheus87. 查看容器日志docker logs --tail 200 prometheus88. 查看 Kubernetes Podkubectl -n monitoring get pods -l app.kubernetes.io/nameprometheus -o wide89. 转发 Prometheus 端口kubectl -n monitoring port-forward svc/prometheus 9090:909090. 查看 Pod 日志kubectl -n monitoring logs -l app.kubernetes.io/nameprometheus --tail200十、自监控与排障91. 查看配置热加载结果prometheus_config_last_reload_successful92. 查看最近重载时间prometheus_config_last_reload_success_timestamp_seconds93. 查看查询并发prometheus_engine_queries94. 查看查询队列prometheus_engine_queries_concurrent_max95. 查看抓取失败increase(prometheus_target_scrapes_exceeded_sample_limit_total[1h])96. 查看样本写入率rate(prometheus_tsdb_head_samples_appended_total[5m])97. 查看进程内存process_resident_memory_bytes{jobprometheus}98. 查看 Go 协程数go_goroutines{jobprometheus}99. 查看 HTTP 请求延迟histogram_quantile(0.99, sum by (le) (rate(prometheus_http_request_duration_seconds_bucket[5m])))100. 一键生成诊断包promtool debug all --hosthttp://127.0.0.1:9090 --outputprometheus-debug.tar.gz总结Prometheus 运维应围绕配置校验、目标健康、规则正确性、查询成本和 TSDB 容量展开。管理 API 默认不应暴露到公网删除序列和清理墓碑必须先备份并确认匹配范围。