文章目录

1. Prometheus 简介
Prometheus 是一款开源的系统与服务监控告警平台,2012 年诞生于 SoundCloud,由 Matt Proud 和 Julius Volz 在 Google 内部监控系统 Borgmon 的启发下用 Go 语言编写。2016 年 5 月成为云原生计算基金会(CNCF)最早一批项目之一,2018 年更成为继 Kubernetes 之后第二个从 CNCF 毕业的项目。如今 Prometheus 在 GitHub 上拥有约 6.5 万颗星标、1.7 万余位贡献者,是云原生监控领域的事实标准,几乎所有 Kubernetes 集群都在用它做指标采集与告警。
Prometheus 要解决的,是分布式环境中指标监控数据分散、查询困难的问题:传统监控工具要么依赖分布式存储、部署复杂,要么只能看曲线、难以按维度查询告警。而 Prometheus 用"拉取(pull)"模式定时抓取各目标暴露的指标,配合多维数据模型和 PromQL 查询语言,让运维能随时用一条查询看清任意维度的服务状态,并在条件满足时自动触发告警——单节点即可独立运行,无需外部存储依赖。
Prometheus 的核心特点:
- 多维数据模型:时间序列由指标名和一组键/值标签(label)定义,天然支持按维度切片与聚合
- PromQL 查询语言
- 单节点自治
- HTTP 拉取模型:按配置周期通过 HTTP 拉取目标指标,也支持通过 Pushgateway 接收批处理作业的推送
- 服务发现:支持 Kubernetes、Consul 等动态发现抓取目标,也支持静态配置
- 原生告警:内置告警规则评估,可对接 Alertmanager 统一告警分发
- 联邦扩展:支持层级与水平方向的联邦(federation),可横向扩展采集规模
2. v3.13.2 版本亮点
该版本汇集了 2 位贡献者 的 2 条 贡献。
v3.13.2 发布于 2026 年 7 月 29 日,是一个维护性补丁版本,重点包含安全升级与一处稳定性修复:
2.1 安全修复
- 升级
golang.org/x/text 至 v0.39.0,修复安全漏洞 CVE-2026-56852;升级 google.golang.org/grpc 至 v1.82.1,修复 GHSA-hrxh-6v49-42gf - 建议所有使用远程写入(Remote Write)或 OTLP 接收功能的用户尽快升级
2.2 缺陷修复
- PromQL 稳定性:预分配活跃查询跟踪器(active query tracker)文件,避免数据磁盘写满时出现 SIGBUS 崩溃
3. 获取安装包
如果访问 GitHub 不便,安装包及中文文档:https://hanshuixin.org/go/225F(内含 prometheus-3.13.2.linux-amd64.tar.gz、README 中英对照、发布说明中英对照和 LICENSE)。
适用于 Linux x86_64(amd64)。
Prometheus 其他版本:https://hanshuixin.org/resource/software_integrated_package/Linux/Prometheus
Linux安装prometheus-v3.13.2(prometheus-3.13.2.linux-amd64).zip├── prometheus-3.13.2.linux-amd64.tar.gz ← 解压后运行├── Linux安装prometheus-v3.13.2(prometheus-3.13.2.linux-amd64).pdf├── README/│ ├── README.md│ └── README-中文版.md├── 发布说明/│ ├── RELEASE-NOTES.md│ └── RELEASE-NOTES-中文版.md└── LICENSE
4. 安装
prometheus-3.13.2.linux-amd64.tar.gz 是 Prometheus 官方发布的 Linux x86_64 预编译二进制包,不绑定特定发行版,解压即可运行:
# 解压二进制包tar -xzf prometheus-3.13.2.linux-amd64.tar.gz# 进入解压目录(内含 prometheus 与 promtool 两个可执行文件)cd prometheus-3.13.2.linux-amd64# 启动 Prometheus(使用自带的默认配置)./prometheus --config.file=prometheus.yml
启动后访问 http://localhost:9090 即可打开 Prometheus 的 Web 界面。
4.1 生产环境配置(systemd 服务化)
实际生产部署中,建议将二进制部署到统一目录,创建无登录权限的专用运行用户,并以 systemd 服务托管,便于开机自启、崩溃自动拉起与统一管理:
# 将二进制部署到统一目录sudo mkdir -p /opt/prometheussudo cp prometheus promtool /opt/prometheus/# 创建专用用户(无登录权限)并授权sudo useradd --system --no-create-home --shell /sbin/nologin prometheussudo chown -R prometheus:prometheus /opt/prometheus
创建服务文件 /etc/systemd/system/prometheus.service:
[Unit]Description=Prometheus MonitoringDocumentation=https://prometheus.io/docs/introduction/overview/After=network.target[Service]Type=simpleUser=prometheusGroup=prometheusWorkingDirectory=/opt/prometheusExecStart=/opt/prometheus/prometheus \ --config.file=/opt/prometheus/prometheus.yml \ --web.listen-address=0.0.0.0:9090 \ --storage.tsdb.retention.time=1y \ --storage.tsdb.path=/opt/prometheus/dataExecReload=/bin/kill -HUP labels.xxx }} 引用标签生成可读描述。在 prometheus.yml 中引入规则文件:rule_files: - "rules.yml"rules.yml 按场景分组成组,常见的有基础设施、业务应用、站点可用性三类:groups: - name: infra-alerts rules: # 主机离线 - alert: 主机离线 expr: up{job="node"} == 0 for: 2m labels: severity: critical annotations: summary: 主机离线 description: "{{ labels.instance }} 磁盘剩余空间低于 5GB" - name: app-alerts rules: # 业务服务离线 - alert: 服务离线 expr: up{job="springboot"} == 0 for: 1m labels: severity: critical annotations: description: "{{ labels.instance }} JVM 堆内存使用率超过 90%" - name: site-alerts rules: # 官网首页不可访问(由 Blackbox 探测产生 probe_success 指标) - alert: 首页不可访问 expr: probe_success{instance=~".*example.com/labels.instance }} 探测失败"告警触发后,Prometheus 会将告警推送给 Alertmanager 做统一去重、分组、静默,再通过邮件、Webhook 等方式通知,形成完整告警链路。5.4 配置校验与热加载修改配置后,先用 promtool 校验再热加载,避免错误配置导致服务异常:# 校验配置./promtool check config prometheus.yml# 校验规则文件./promtool check rules rules.yml# 热加载(无需重启)sudo systemctl reload prometheus5.5 运行状态监控Web 界面的"状态"菜单提供了监控 Prometheus 自身的手段:Targets(抓取目标):查看每个抓取目标的健康状态、抓取耗时与最近错误Alerts(告警):查看所有告警规则当前状态(inactive / pending / firing)Status:查看配置哈希、启动时间、TSDB 运行信息等对外部站点探活类指标,也可在查询页用 probe_success == 0 快速排查不可访问的目标。