一、Prometheus简介
1.1、Prometheus核心特性
Prometheus是一套基于Go语言开发的开源监控、告警与时间序列数据库组合,最初由SoundCloud公司在2012年构建并开源。作为云原生监控领域的标杆,它在容器与微服务架构中得到了广泛应用。
其主要优势包括:
- 多维度数据模型:采用键值对格式存储数据,支持从多个维度(如实例、应用、端口)进行灵活查询。
- 高效的时序数据库:内置TSDB作为存储引擎,在保证高性能的同时,降低了数据存储成本。
- 强大的可视化集成:原生提供基础的Web UI,并支持接入如Grafana等第三方仪表盘,实现更丰富的图形化展示。
- 模块化架构:核心组件如Prometheus Server、Exporter、Alertmanager彼此独立,便于部署和维护。
- 存储灵活:不依赖外部存储,数据可持久化保存在本地磁盘,也支持远程存储方案。
- 出色的性能:单个数据采样点仅占用约3.5字节,一个Prometheus Server实例有能力处理数百万级别的监控指标。
- 灵活的服务发现:既支持静态配置文件管理监控目标,也支持基于Consul、Kubernetes等的动态服务发现机制。
- 强大的查询语言:提供了功能丰富的PromQL(Prometheus Query Language),并开放HTTP API供外部调用。
- 支持数据运算:可以直接在查询层对时间序列数据进行算术运算和聚合。
- 易于扩展:架构设计上便于横向扩展,以应对大规模监控场景。
- 丰富的生态:拥有众多官方和社区维护的Exporter,可用于采集各种中间件、数据库及应用自身的指标。
1.2、Prometheus监控原理
Prometheus的监控流程遵循典型的拉取(Pull)模型,其核心工作原理如下图所示:

具体流程如下:
- 数据采集:Prometheus Server根据服务发现或静态配置,定期从配置好的监控目标(Target)上拉取(Scrape)指标数据。这些目标上运行着对应的Exporter,用于暴露标准格式的指标。
- 数据存储与告警:采集到的指标数据通过TSDB存储到本地硬盘。用户可以通过PromQL查询数据,并配置报警规则。触发的告警会发送至独立的Alertmanager组件进行处理。
- 推送网关:对于生命周期短暂的作业(如批处理任务),由于其存活时间不足以被Server抓取,可以采用推送(Push)模式,先将指标数据推送到Pushgateway,再由Prometheus Server从Pushgateway抓取。
- 告警通知与可视化:Alertmanager负责对告警进行去重、分组、静默,并通过配置的接收方(如邮件、钉钉、企业微信)发送告警通知。同时,Grafana等可视化工具可以接入Prometheus作为数据源,将监控数据图形化展示。
二、Prometheus二进制部署实战
以下是通过二进制包在Linux系统上部署Prometheus Server的详细步骤,这是一种在物理机或虚拟机环境中常见的运维部署方式。
2.1 下载安装包
访问Prometheus官方GitHub仓库,下载对应系统架构的二进制压缩包。以下以amd64架构的v2.47.0版本为例:
wget https://github.com/prometheus/prometheus/releases/download/v2.47.0/prometheus-2.47.0-rc.0.linux-amd64.tar.gz
2.2 解压与重命名
将下载的压缩包解压,并为其创建一个简洁的目录名以便管理。
tar xf prometheus-2.47.0-rc.0.linux-amd64.tar.gz
mv prometheus-2.47.0-rc.0.linux-amd64 /data/prometheus

2.3 创建Systemd服务文件
为了方便管理服务的启动、停止和状态查看,我们将其配置为Systemd服务。请注意根据你的实际安装路径修改 ExecStart 中的相关路径。
cat <<-"EOF" > /etc/systemd/system/prometheus.service
[Unit]
Description="prometheus"
Documentation=https://prometheus.io/
After=network.target
[Service]
Type=simple
ExecStart=/data/prometheus/prometheus \
--config.file=/data/prometheus/prometheus.yml \
--storage.tsdb.path=/data/prometheus/data \
--web.enable-lifecycle
Restart=on-failure
RestartSecs=5s
SuccessExitStatus=0
LimitNOFILE=655360
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=prometheus
[Install]
WantedBy=multi-user.target
EOF
2.4 启动并验证服务
创建好服务文件后,重载Systemd配置并启动Prometheus服务。
# 重新加载systemd配置,使新的服务文件生效
systemctl daemon-reload
# 启动Prometheus服务
systemctl start prometheus.service
# 设置开机自启(可选)
systemctl enable prometheus.service
# 检查服务运行状态
systemctl status prometheus.service

2.5 访问Web界面
服务启动成功后,默认会监听9090端口。在浏览器中访问 http://<服务器IP>:9090,如果能看到Prometheus的原生Web UI界面(包含Graph、Status等菜单),则说明Server部署成功。

至此,一个基础的Prometheus监控服务器已经部署完成。接下来,你可以开始配置prometheus.yml文件,添加需要监控的目标,并探索其强大的Go语言生态所提供的各类Exporter,以构建完整的监控体系。
|