Prometheus 安装部署实战:Docker 方式与监控配置可视化流程

Prometheus 安装部署实战:Docker 方式与监控配置可视化流程
28.7的博客Prometheus 安装部署实战:Docker 方式与监控配置可视化流程
类似项目-zabbix
- Prometheus:采用 “时序数据库 + Pull 模式” 架构,核心组件包括 Prometheus Server(拉取 / 存储指标)、Exporters(暴露指标)、Alertmanager(处理告警)。通过 HTTP 主动从目标拉取指标,天然支持动态服务发现(如 K8s 容器),适合频繁变化的云原生环境。
- Zabbix:采用 “Server-Agent 推拉结合” 架构,核心是 Zabbix Server(核心)、Zabbix Agent(部署在目标节点,被动 / 主动推送指标)。默认以 Agent 被动采集为主,更适合静态环境(如物理机、固定虚拟机),动态扩展需额外配置。
介绍
Prometheus 是一款开源的时序数据监控与告警工具,由 SoundCloud 于 2015 年开源,2016 年加入 CNCF(云原生计算基金会),2018 年成为 CNCF 毕业项目,目前是云原生环境中最主流的监控方案之一。
一、核心功能与特点
Prometheus 专注于时序数据(按时间序列存储的指标数据,如服务器 CPU 使用率、接口响应时间等)的采集、存储、查询和告警,核心特点包括:
- 时序数据优先:专为时序数据设计,存储高效,支持高基数标签(如多实例、多环境的指标区分)。
- Pull 模式采集:主动从目标(如服务器、应用)拉取指标(默认 HTTP 协议),无需目标主动推送,适合动态环境(如 Kubernetes pods 频繁启停)。
- 灵活的查询语言(PromQL):支持复杂的指标计算、聚合和过滤,可快速生成监控视图或告警条件。
- 内置告警机制:通过规则定义告警条件,结合 Alertmanager 实现告警的分组、抑制、路由(如邮件、Slack 通知)。
- 动态服务发现:支持多种服务发现机制(如 Kubernetes、Consul、DNS),自动识别新增的监控目标。
- 无依赖存储:默认使用本地时序数据库存储数据,也可集成远程存储(如 Thanos、Cortex)扩展容量。
二、架构组成
Prometheus 生态由多个组件构成,核心架构如下:
1 | [Exporters/Pushgateway] → [Prometheus Server] → [Alertmanager] → [通知渠道] |
Prometheus Server:核心组件,负责:
- 从目标(Exporters 或 Pushgateway)拉取指标;
- 将指标存储到本地时序数据库;
- 执行 PromQL 查询和告警规则。
Exporters:指标暴露工具,将非 Prometheus 格式的指标(如服务器硬件信息、数据库性能)转换为 Prometheus 可识别的格式,并通过 HTTP 接口暴露。常见 Exporters:
- Node Exporter:监控服务器 CPU、内存、磁盘、网络等;
- MySQL Exporter:监控 MySQL 数据库性能;
- Blackbox Exporter:监控 HTTP 接口、ICMP 连通性等。
Pushgateway:用于短生命周期任务(如定时脚本)的指标推送。这类任务存活时间短,Prometheus 可能来不及拉取,因此先推送到 Pushgateway,再由 Prometheus 从 Pushgateway 拉取。
Alertmanager:处理 Prometheus Server 发送的告警,支持:
- 分组(将同一服务的多个告警合并);
- 抑制(避免级联告警,如服务器宕机时不告警依赖它的应用);
- 路由(按告警级别发送到不同渠道,如邮件、企业微信)。
可视化工具:Prometheus 自带简单的 Web UI,更常用 Grafana 集成,通过丰富的仪表盘展示监控数据。
三、基本使用步骤
以下以“监控服务器指标”为例,介绍 Prometheus 的核心使用流程。
1. 安装 Prometheus Server
推荐通过 Docker 快速部署(二进制安装见后续章节):
1 | # 拉取镜像 |
2. 安装 Grafana
Grafana 是一个跨平台开源的度量分析和可视化工具,可以通过将采集的数据查询后可视化展示,并支持及时通知。
默认账户密码:admin/admin
1 | # 拉取镜像 |
3. 安装 Node Exporter
Prometheus 本身不具备监控功能,需通过对应的 Exporter 收集数据。Node Exporter 用于收集服务器硬件指标(CPU、内存等)。
1 | # 拉取镜像 |
容器创建成功后,可通过 http://服务器IP:9100/metrics
查看收集的监控数据:
4. 验证基础服务启动
启动后,访问 http://服务器IP:9090
可打开 Prometheus Web UI:
5. 配置监控目标(prometheus.yml)
Prometheus 通过配置文件定义“要监控的目标”,步骤如下:
复制容器内默认配置文件到本地:
1
docker cp prometheus:/etc/prometheus/prometheus.yml $PWD
编辑配置文件:
1
vim prometheus.yml
修改内容如下(添加 Node Exporter 监控目标):
1
2
3
4
5
6
7
8
9
10
11
12
13
14scrape_configs:
# 监控 Prometheus 自身
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"]
labels:
app: "prometheus"
# 监控 Node Exporter(替换为实际服务器IP)
- job_name: "node-promo"
static_configs:
- targets: ["192.168.87.250:9100"] # Node Exporter 所在服务器的IP:端口
labels:
app: "node-promo"将修改后的配置文件复制回容器并重启:
1
2docker cp $PWD/prometheus.yml prometheus:/etc/prometheus/prometheus.yml
docker restart prometheus
6. 在被监控节点安装 Node Exporter(如需监控多节点)
若需监控其他服务器,在目标节点重复执行以下命令安装 Node Exporter:
1 | # 拉取镜像 |
7. 验证监控目标配置
在 Prometheus Web UI 中查看监控目标状态:
- 访问
http://服务器IP:9090
,点击菜单栏 Status → Targets。 - 确认
node-promo
任务的状态为UP
(表示监控正常)。
8. Grafana 集成 Prometheus
- 访问 Grafana(
http://服务器IP:3000
),使用默认账号admin/admin
登录(首次登录需修改密码)。 - 点击左侧菜单 Configuration → Data Sources,选择 Add data source,搜索并选择 Prometheus。
- 在配置页填写 Prometheus 地址(如
http://localhost:9090
,若 Grafana 与 Prometheus 不在同一主机,需填写实际 IP),点击 Save & test。
8.1 Grafana 数据可视化
访问 Grafana 官网仪表盘库,选择合适的仪表盘(如服务器监控相关)。
记录目标仪表盘的 ID(如示例中 ID 为
1860
)。下载仪表盘的 JSON 配置文件(可选,也可直接通过 ID 导入)。
回到 Grafana 控制台,通过 + → Import 导入仪表盘,输入 ID 或上传 JSON 文件,完成配置。
完成后可查看监控可视化效果: