提示:本文原创作品,良心制作,干货为主,简洁清晰,一看就会
文章目录
- 前言
- 一、Prometheus联邦(Federation)
-
- 1.1 什么是Prometheus联邦
- 1.2 Prometheus联邦实战
-
- 联邦节点配置
- 配置prometheus主节点
- 二、Prometheus数据存储
-
- 2.1 存储原理
- 2.2 本地存储
- 2.3 远程存储
-
- 实验环境
- 安装VictoriaMetrics
- 配置Prometheus
前言
为解决多节点监控数据聚合汇总问题,Prometheus提供联邦集群架构,可实现多Prometheus节点数据统一采集、集中管理,适配分布式监控场景。同时,Prometheus原生本地存储存在容量受限,通过部署VictoriaMetrics高性能时序数据库,完成Prometheus远程持久化存储改造,解决传统监控系统的数据存储痛点,搭建一套聚合能力强、存储时效久、性能稳定的监控架构。
一、Prometheus联邦(Federation)
1.1 什么是Prometheus联邦
Prometheus联邦采用分层架构,下级Prometheus分片采集各类节点监控指标,上级总Prometheus统一拉取汇总,既能分散采集压力、避免单实例负载过高,实现多机房、多集群运维隔离,还可适配网络隔离环境、按需分层筛选指标,减轻顶层存储与查询开销,适合大规模多集群监控场景
1.2 Prometheus联邦实战
| prometheus-master | 192.168.13.141 | 联邦顶层主节点,汇总拉取所有子联邦节点指标,统一查询与告警 |
| prometheus-federation1 | 192.168.13.138 | 联邦子节点 1,采集 ubuntu1 的 Node Exporter 指标并向上汇聚 |
| prometheus-federation2 | 192.168.13.139 | 联邦子节点 2,采集 ubuntu2 的 Node Exporter 指标并向上汇聚 |
| ubuntu1 | 192.168.13.140 | 被监控业务主机,运行 Node Exporter 暴露系统指标 |
| ubuntu2 | 192.168.13.142 | 被监控业务主机,运行 Node Exporter 暴露系统指标 |
我已经在 prometheus-master、prometheus-federation1、prometheus-federation2 节点部署 Prometheus 服务;并在各被监控主机部署了 Exporter(本次采用 node-exporter)。部署步骤可参考这篇文章,本文重点讲解 Prometheus 联邦集群搭建流程 Prometheus,node exporter安装:https://blog.csdn.net/m0_63756214/article/details/161196428
联邦节点配置
root@prometheus–federation1:~# vim /opt/prometheus/prometheus/prometheus.yml
scrape_configs:
……
– job_name: "node-exporter"
static_configs:
– targets: ["192.168.13.140:9100"]
labels:
instance: "ubuntu1"
root@prometheus–federation1:~# curl -X POST http://localhost:9090/-/reload

浏览器访问prometheus-federation1 ip:9090 
root@prometheus–federation2:~# vim /opt/prometheus/prometheus/prometheus.yml
scrape_configs:
……
– job_name: "node-exporter"
static_configs:
– targets: ["192.168.13.142:9100"]
labels:
instance: "ubuntu2"
root@prometheus–federation2:~# curl -X POST http://localhost:9090/-/reload
浏览器访问prometheus-federation2 ip:9090 
配置prometheus主节点
配置prometheus主节点管理prometheus 联邦节点
scrape_configs:
……
– job_name: 'federate'
scrape_interval: 15s
honor_labels: true
metrics_path: '/federate' # 指定采集端点路径,默认为/federate
static_configs:
– targets: ['192.168.13.138:9090'] # 指定联邦节点Prometheus节点地址,如果在k8s集群内,需要指定k8s的svc nodeport
– targets: ['192.168.13.139:9090']
params:
'match[]':
– '{job=~"prometheus|node-exporter"}' # 指定采集联邦节点的job名称,如果不匹配则不会采集
浏览器访问192.168.13.141:9090 
查询指标,可以看到收集了两个联邦节点的数据
当前 Prometheus 联邦集群基础架构已部署完成!
如果发现 Master 依然因为数据量过大而卡顿,应该在联邦节点(138/139)上做“预聚合”,而不是在 Master 上直接拉原始数据 在 138 和 139 的 Prometheus 中配置 Recording Rules(记录规则),将 5 分钟的 CPU、内存等高频指标聚合成每分钟的均值。然后 Master 的 match[] 只拉取这些聚合后的新指标(如 job=“aggregated”)。此时 Master 的数据量将减少 90% 以上,这才是真正的压力卸载
二、Prometheus数据存储
2.1 存储原理
prometheus TSDB 写入存储原理
核心组件分工
- M-map:内存映射,只存文件引用,按需把磁盘chunk载入内存,节省内存
- WAL预写日志:保证写入可靠
WAL预写日志机制
完整写入流程 指标样本 → Head内存(同步写WAL防丢失)→ 留存2小时后刷盘生成Block → 老Block持续合并,过期删除
2.2 本地存储
我的prometheus是下载的tar包,然后安装在/opt/prometheus/下
root@prometheus:~# ls /opt/prometheus/prometheus/
alert.yml data LICENSE NOTICE prometheus prometheus.yml promtool
root@prometheus:~# ls /opt/prometheus/prometheus/data/
01KYHCV0DA2906BJWNS5M05Z1Y 01KZ5J98CPMFDRNRMG2J4R373Q chunks_head queries.active
01KZ5C14G4REHBGBYCBRM8ANBA 01KZ5J98PVVEQVZ71T8DZ3X899 lock wal
Prometheus TSDB本地数据默认存放于./data,在./data/目录下类似如01KYHCV0DA2…形式的目录为 2小时块Block目录 Block目录内包含4类核心文件:
- chunks:存放时序原始数据,单个chunk上限512MB;
- index:索引,根据指标名、标签定位时序数据;
- tombstones:软删除标记,不直接清理数据,查询时过滤已删内容;
- meta.json:Block元数据,支撑块合并、删除管理
如下图 
2.3 远程存储
Prometheus本地存储存在单点故障、性能瓶颈,可通过远程存储解决。VictoriaMetrics(VM)是 Go 语言开发的高性能时序数据库,主打 Prometheus 远程长期存储,专为海量监控时序数据设计
VictoriaMetrics核心优势 1,兼容PromQL、Prometheus/Graphite API,可直接替代Prometheus、Graphite做Grafana数据源, 2,高性能:读写吞吐远超InfluxDB、TimescaleDB,适配云低IO/HDD存储 3,易扩展部署:单节点可替代中小型监控集群,提供开源集群版,适配K8s、工业、物联网等海量时序场景
实验环境
| prometheus | 192.168.13.141 | 监控采集服务,定时抓取被监控主机系统指标;通过remote_write将采集到的指标远程推送至VictoriaMetrics做长期持久化存储 |
| victoriametrics | 192.168.13.139 | 接收Prometheus远程上报的监控指标并长期存储;提供Prometheus兼容API,可对接Grafana可视化 |
| ubuntu1 | 192.168.13.140 | 被监控业务主机,部署Node Exporter |
| ubuntu2 | 192.168.13.142 | 被监控业务主机,部署Node Exporter |
这是我目前Prometheus所监控的设备 
安装VictoriaMetrics
Github下载VictoriaMetrics:https://github.com/VictoriaMetrics/VictoriaMetrics/releases
注意:不要下载enterpise版本,此版本需要授权许可 我这里演示的是单机模式,victoriametrics还有集群模式,后期会出教程
## 1. 下载tar包
root@victoriametrics:~# wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.145.0/victoria-metrics-linux-amd64-v1.145.0.tar.gz
root@victoriametrics:~# ls
victoria–metrics–linux–amd64–v1.145.0.tar.gz
root@victoriametrics:~# tar xf victoria-metrics-linux-amd64-v1.145.0.tar.gz
root@victoriametrics:~# mv victoria-metrics-prod /usr/local/bin/
## 2. 创建系统后台用户
root@victoriametrics:~# useradd -r -s /sbin/nologin victoriametrics
## 3. 创建数据持久化目录
root@victoriametrics:~# mkdir -p /data/victoriametrics
root@victoriametrics:~# chown victoriametrics:victoriametrics /data/victoriametrics
## 4. 创建service文件
root@victoriametrics:~# cat > /lib/systemd/system/victoriametrics.service <<EOF
[Unit]
Description=VictoriaMetrics
Documentation=https://docs.victoriametrics.com/Single–server–VictoriaMetrics.html
After=network.target
[Service]
Restart=on–failure
User=victoriametrics
Group=victoriametrics
ExecStart=/usr/local/bin/victoria–metrics–prod –httpListenAddr=0.0.0.0:8428 –storageDataPath=/data/victoriametrics –retentionPeriod=12
#ExecReload=/bin/kill -HUP \\$MAINPID
LimitNOFILE=65535
[Install]
WantedBy=multi–user.target
EOF
root@victoriametrics:~# systemctl daemon-reload
root@victoriametrics:~# systemctl enable –now victoriametrics.service
-httpListenAddr=0.0.0.0:8428:VM 对外监听端口8428,允许任意IP访问 -storageDataPath=/data/victoriametrics:指标数据持久化存储目录 -retentionPeriod=12:数据保留时长12个月 LimitNOFILE=65535:调高进程最大文件句柄数,适配海量时序采集场景
root@victoriametrics:~# ls /data/victoriametrics/
data flock.lock metadata snapshots tmp
root@victoriametrics:~# tree /data/victoriametrics/
配置Prometheus
root@prometheus:~# vim /opt/prometheus/prometheus/prometheus.yml
global:
……
remote_write:
– url: http://192.168.13.139:8428/api/v1/write
……
scrape_configs:
……
– job_name: "victoriametrics"
static_configs:
– targets: ["192.168.13.139:8428"]
root@prometheus:~# curl -X POST http://localhost:9090/-/reload
浏览器访问可视化 Web 管理控制台http://192.168.13.139:8428/vmui可以查看监控指标 
登录grafana,添加victoriametrics数据源

添加dashboard,可以看到数据从victoriametrics中来 
到此Prometheus远程存储数据就部署好了!
注: 文中若有疏漏,欢迎大家指正赐教。 本文为100%原创,转载请务必标注原创作者,尊重劳动成果。 求赞、求关注、求评论!你的支持是我更新的最大动力,评论区等你~
网硕互联帮助中心







评论前必须登录!
注册