Prometheus victoria-metrics 存储
Prometheus victoria-metrics 存储
Prometheus 本地存储
默认情况下,prometheus 将采集到的数据存储在本地的 TSDB 数据库中,路径默认为 prometheus 安装目录的 data 目录,数据写入过程为先把数据写入 wal 日志并放在内存,然后 2 小时后将内存数据保存至一个新的 block 块,同时再把新采集的数据写入内存并在 2 小时后再保存至一个新的 block 块,以此类推
每个 block 为一个 data 目录中以 01 开头的存储目录,比如说:
[root@yuan ~]# ls -l /apps/prometheus/data/
total 20
drwxr-xr-x 3 root root 68 May 8 13:00 01G2H0KYPSE8MZATVBBG9KPJME
drwxr-xr-x 3 root root 68 May 10 16:08 01G2PG73ZNQ0G1ZGD0EGDV2VMD
drwxr-xr-x 3 root root 68 May 10 16:08 01G2PG740MHR9JC7V772CYARAR
drwxr-xr-x 3 root root 68 May 10 16:08 01G2PG742VRGMXC2Z784YNKW29
block 的特征
block 会压缩、合并历史数据块,以及删除过期的块,随着压缩、合并,block 的数量会减少,在压缩过程中会发生三件事:
- 定期执行压缩
- 合并小的 block 到大的 block
- 清理过期的块
每个块有 4 部分组成
[root@yuan ~]# tree /apps/prometheus/data/01G2H0KYPSE8MZATVBBG9KPJME/
/apps/prometheus/data/01G2H0KYPSE8MZATVBBG9KPJME/
├── chunks
│ └── 000001 #数据目录,每个大小为 512MB 超过会被切分为多个
├── index #索引文件,记录存储的数据的索引信息,通过文件内的几个表来查找时序数据
├── meta.json #block 元数据信息,包含了样本数、采集数据数据的起始时间、压缩历史
└── tombstones #逻辑数据,主要记载删除记录和标记要删除的内容,删除标记,可在查询块时排除样本
本地存储配置参数
--config.file="prometheus.yml" #指定配置文件
--web.listen-address="0.0.0.0:9090" #指定监听地址
--storage.tsdb.path="data/" #指定数据存储目录
--storage.tsdb.retention.size=B,KB,MB,TB,PB,EB #指定 chunk 大小,默认 512MB
--storage.tsdb.retention.time= #数据保存时长,默认15天
--query.timeout=2m #最大查询超时时间
--query.max-concurrency=20 #最大查询并发量
--web.read-timeout=5m #最大空闲超时时间
--web.max-connections=512 #最大并发连接数
--web.enable-lifecycle #启用 API 动态加载配置功能
远端存储 victoriametrics
https://github.com/VictoriaMetrics/VictoriaMetrics
https://docs.victoriametrics.com/Single-server-VictoriaMetrics.html
单机版部署
# 下载安装包
wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.71.0/victoria-metrics-arm-v1.71.0.tar.gz
tar xvf victoria-metrics-arm-v1.71.0.tar.gz
参数:
-httpListenAddr=0.0.0.0:8428 #监听地址及端口
-storageDataPath #VictoriaMetrics 将所有数据存储在此目录中,默认为执行启动 victoria 的当前目录下的 victoria-metrics-data 目录中
-retentionPeriod #存储数据的保留,较旧的数据会自动删除,默认保留期为 1 个月,默认单位为m(月),支持的单位有 h(hour), d(day), w(week), y(year)
设置 service 启动文件
mv victoria-metrics-prod /usr/local/bin
cat /etc/systemd/system/victoria-metrics-prod.service
[Unit]
Description=For Victoria-metrics-prod Service
After=network.target
[Service]
ExecStart=/usr/local/bin/victoria-metrics-prod -httpListenAddr=0.0.0.0:8428 -storageDataPath=/data/victoria -retentionPeriod=3
[Install]
WantedBy=multi-user.target
启动并设置开机自启
systemctl daemon-reload
systemctl restart victoria-metrics-prod.service
systemctl enable victoria-metrics-prod.service
验证页面 : 192.168.15.100:8428 查看数据
Prometheus 设置
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
remote_write:
- url: http://192.168.15.100:8428/api/v1/write
重启 prometheus,再次验证 192.168.15.100:8428 查看数据
grafana 配置
添加数据源:
类型为 prometheus ,地址及端口为 VictoriaMetrics: http://192.168.15.100:8428
导入指定模版
8919
官方 docker-compose
https://github.com/VictoriaMetrics/VictoriaMetrics/tree/cluster/deployment/docker
git clone https://github.com/VictoriaMetrics/VictoriaMetrics.git
cd VictoriaMetrics/deployment/docker
[root@yuan docker]# ls -l
total 44
-rw-r--r-- 1 root root 61 May 10 19:32 alertmanager.yml
-rw-r--r-- 1 root root 17025 May 10 19:32 alerts.yml
drwxr-xr-x 2 root root 24 May 10 19:32 base
drwxr-xr-x 2 root root 24 May 10 19:32 builder
-rw-r--r-- 1 root root 2843 May 10 19:32 docker-compose.yml
-rw-r--r-- 1 root root 6280 May 10 19:32 Makefile
-rw-r--r-- 1 root root 298 May 10 19:32 prometheus.yml
drwxr-xr-x 4 root root 43 May 10 19:32 provisioning
-rw-r--r-- 1 root root 1495 May 10 19:32 README.md
docker-compose up -d
# 验证 web 界面
192.168.15.100:8428