Prometheus 监控实战系列 03:从零落地:多环境安装部署与核心配置快速上手
本篇将聚焦Prometheus的落地实操——覆盖Linux、Windows、Mac OS X等多环境的安装部署方式,拆解核心配置文件,手把手教你启动Prometheus并上手PromQL查询,让你快速掌握Prometheus的基础运行与使用逻辑。
一、多环境安装Prometheus
Prometheus提供跨平台的独立二进制文件,支持Linux、Windows、Mac OS X、FreeBSD等主流系统,我们重点讲解最常用的三类系统安装方式,同时补充Docker、配置管理工具、K8s等生产级部署方式。
1.1 Linux(64位)安装
Linux是Prometheus的主流运行环境,步骤如下:
步骤1:下载二进制包
cd /tmp
wget https://github.com/prometheus/prometheus/releases/download/v2.3.2/prometheus-2.3.2-linux-amd64.tar.gz步骤2:解压并安装二进制文件
tar -xzf prometheus-2.3.2-linux-amd64.tar.gz
sudo cp prometheus-2.3.2-linux-amd64/prometheus /usr/local/bin/
sudo cp prometheus-2.3.2-linux-amd64/promtool /usr/local/bin/步骤3:验证安装
prometheus --version输出示例:
prometheus, version 2.3.2 (branch: HEAD, revision: 3569eef8b1bc062bb5df43181b938277818f365b)
build user: root@bd4857492255
build date: 20171006-22:16:15
go version: go1.9.11.2 Windows安装
Windows环境下需下载专属可执行文件,步骤如下:
步骤1:创建安装目录
C:\> MKDIR prometheus
C:\> CD prometheus步骤2:下载安装包
步骤3:解压并配置环境变量
用7-Zip解压文件到C:\prometheus,通过PowerShell添加环境变量:
$env:Path += ";C:\prometheus"步骤4:验证安装
C:\> prometheus.exe --version(输出与Linux类似,核心版本信息一致)
补充:也可通过Chocolatey包管理器快速安装:
C:\>choco install prometheus
1.3 Mac OS X安装
Mac推荐使用Homebrew一键安装:
brew install prometheus验证安装:
prometheus --version1.4 扩展部署方式(生产级)
如果是生产环境或规模化部署,推荐以下方式:
Docker快速运行: 基础运行(默认配置):
docker run -p 9090:9090 prom/prometheus挂载自定义配置:
docker run -p 9090:9090 -v /tmp/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus配置管理工具:推荐使用Puppet模块、Chef cookbook、Ansible role、SaltStack formula(标准化部署,适配大规模集群);
Kubernetes部署:可基于自定义配置文件打包成服务,或使用CoreOS的Prometheus Operator(K8s生态首选)。
二、Prometheus核心配置解析
Prometheus通过YAML文件配置,默认配置文件为prometheus.yml,核心包含4个配置块,先看默认配置精简版:
global:
scrape_interval: 15s
evaluation_interval: 15s
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
rule_files:
# - "first/rules.yml"
# - "second/rules.yml"
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']2.1 global:全局配置
控制Prometheus服务器核心行为:
scrape_interval:抓取指标的时间间隔(默认15s),建议保持全局统一,避免时间序列颗粒度不一致导致查询异常;evaluation_interval:评估“记录规则/警报规则”的频率(默认15s),规则会在后续章节详细配置。
2.2 alerting:警报配置
用于对接Alertmanager(Prometheus的独立警报管理工具),默认仅注释了示例地址,可通过静态配置/服务发现指定Alertmanager列表,后续章节会完成完整配置。
2.3 rule_files:规则文件
指定包含“记录规则(预计算复杂指标)”“警报规则(定义告警条件)”的文件列表,是Prometheus扩展能力的核心配置。
2.4 scrape_configs:抓取配置
定义Prometheus的监控目标,核心概念:
- 作业(job):一组监控目标的集合(如“监控所有服务器”“监控所有容器”);
- 实例(instance):作业中唯一标识的单个监控目标;
- static_configs:静态配置(手动指定目标,区别于自动服务发现)。
默认配置中,job_name: 'prometheus' 表示监控Prometheus自身,从localhost:9090/metrics抓取指标(默认路径可通过配置覆盖)。
三、启动Prometheus
3.1 常规启动(Linux/Mac)
步骤1:迁移配置文件到规范目录
sudo mkdir -p /etc/prometheus
sudo cp prometheus.yml /etc/prometheus/步骤2:启动服务器
prometheus --config.file "/etc/prometheus/prometheus.yml"启动成功会输出Starting prometheus相关日志,无报错即代表启动完成。
步骤3:配置校验(异常排查)
若启动失败,使用promtool校验配置文件语法:
promtool check config prometheus.yml输出SUCCEED: 0 rule files found表示配置无语法问题。
3.2 Docker启动(快速验证)
适合快速测试,无需配置本地环境:
# 基础启动(默认配置)
docker run -p 9090:9090 prom/prometheus
# 挂载自定义配置
docker run -p 9090:9090 -v /tmp/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus四、第一个指标与表达式浏览器
启动后,Prometheus已开始抓取自身指标,我们通过两种方式查看,并上手PromQL(Prometheus查询语言)。
4.1 查看原始指标
直接访问http://localhost:9090/metrics,可看到原生格式的指标,例如:
# HELP go_gc_durationSeconds A summary of the GC invocation durations.
# TYPE go_gc_durationSeconds summary
go_gc_durationSeconds{quantile="0"} 1.6166e-05
go_gc_durationSeconds{quantile="0.25"} 3.8655e-05
go_gc_durationSeconds{quantile="0.5"} 5.3416e-05指标格式:指标名{标签=值} 数值,例如go_gc_durationSeconds{quantile="0.5"} 5.3416e-05,标签用于维度区分,数值是指标的具体值。
4.2 表达式浏览器(可视化查询)
访问http://localhost:9090/graph打开表达式浏览器(Prometheus内置的查询工具),这是日常操作Prometheus的核心入口。
4.2.1 基础查询(即时向量)
PromQL的核心数据类型之一是即时向量(一组共享时间戳的时间序列样本),示例:
- 查询第50百分位的GC耗时:
go_gc_durationSeconds{quantile="0.5"} - 排除第75百分位的GC耗时:
go_gc_durationSeconds{quantile!="0.75"}(支持正则/运算符过滤标签)
图3-1 Prometheus表达式浏览器
示例:查询prometheus_build_info(包含Prometheus构建信息),返回结果如下:
prometheus_build_info{branch="HEAD",goversion="go1.9.1",instance="localhost:9090",job="prometheus",revision="5ab8834befbd92241a88976c790ace7543edcd59",version="2.3.2"} 1这类指标常以值=1为载体,通过标签传递元信息(版本、构建环境等),是Prometheus的常见设计模式。
图3-3 查询百分位数
4.2.2 聚合查询(进阶)
以promhttp_metric_handler_requests_total(Prometheus HTTP请求总数)为例,演示聚合与速率计算:
求和所有请求(无维度):
sum(promhttp_metric_handler_requests_total)按job维度求和:
sum(promhttp_metric_handler_requests_total) by (job)计算5分钟内每秒请求速率(生产环境更实用):
sum(rate(promhttp_metric_handler_requests_total[5m])) by (job)
关键概念解析:
rate():计算时间序列的每秒平均增长率(仅用于计数器),可适配计数器重置、数据抓取间隔异常;irate():计算瞬时增长率(适合快速增长的计数器,如接口QPS);- 范围向量:
[5m]表示5分钟时间范围(单位:s/秒、m/分、h/时、d/天、w/周),是PromQL另一核心数据类型。
🔍 小贴士:点击表达式浏览器的
Graph标签,可将查询结果可视化成时序图表,直观观察指标变化。
五、容量规划(生产环境必看)
Prometheus的性能主要依赖内存和磁盘,需提前规划,避免性能瓶颈。
5.1 内存
Prometheus在内存中处理时间序列、查询、规则,经验公式: 内存占用 ≈ 每秒样本数 × 单样本大小(1-2字节) × 运行时长
查看样本采集率(实时监控):
rate(prometheus_tsdb_head_samples_appended_total[1m])查看当前指标总数:
sum(count by (name)({name=~".+"}))示例:每秒采集10万样本,按2字节/样本、运行12小时计算,内存≈100000×2×43200=8.64GB(需额外预留查询/规则的内存,建议多留30%余量)。
5.2 磁盘
磁盘占用取决于时间序列数量和保留时间(默认15天),经验公式: 磁盘占用 ≈ 每秒样本数 × 单样本大小(1-2字节) × 保留时长
关键配置:
--storage.tsdb.path:指定TSDB数据目录(默认当前目录);--storage.tsdb.retention:指定指标保留时间(默认15d,可按需调整);- 硬件建议:推荐使用SSD存储TSDB(提升读写性能,适配时序数据高频写入特性)。
示例:每秒10万样本、2字节/样本、保留15天,磁盘≈100000×2×1296000=259GB。
六、小结
本章我们完成了Prometheus在Linux、Windows、Mac多环境的安装部署,拆解了核心配置文件的4大模块(global/alerting/rule_files/scrape_configs),成功启动Prometheus并抓取首个目标(自身)的指标,通过表达式浏览器上手了PromQL基础查询与聚合分析,同时梳理了生产环境的容量规划要点。
