Victoria Metrics是一个高速的,低能耗,可扩展的时间序列数据库。它可以作为Prometheus的长期远程存储。
当接收速率高于每秒100万个数据点时,建议使用集群版本。集群版在性能与空间存储可完美地扩展,不过配置和操作相对复杂。
VictoriaMetrics程序的集群版与单机版最大区别,实现了读写分离。读与写由不同的组件完成。
组件 | 作用 |
---|---|
vminsert | 写入组件,负责接收数据写入并根据对度量名称及其所有标签的一致 hash 结果将数据分散写入不同的后端 vmstorage |
vmstorage | 存储组件,存储原始数据并返回给定时间范围内给定标签过滤器的查询数据 |
vmselect | 读取组件,连接 vmstorage,获取查询数据 |
图中出现了5台服务器,1台Prometheus服务器,3台VictoriaMetrics服务器(每台同时安装3个组件),1台Grafana服务器。端口如下:
组件 | 端口 | 作用 |
---|---|---|
Prometheus | 9090 | Prometheus 网页端口 |
vminsert | 8480 | http端口,接收Prometheus的写入数据,并在/metrics显示状态 |
vmstorage | 8400 | 接收vminsert数据,存入硬盘。注意:任意一台vminsert数据都能接收 |
vmstorage | 8482 | http端口,存储组件使用,并在/metrics显示状态 |
vmstorage | 8401 | 响应vmselect查询请求 |
vmselect | 8481 | http端口,响应Grafana的读取数据,并在/metrics显示状态 |
Grafana | 3000 | Grafana 网页端口 |
3个主机同时部署VictoriaMetrics程序,每个组件需创建一个服务。
# 下载集群版二进制文件
wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.82.1/victoria-metrics-linux-amd64-v1.82.1-cluster.tar.gz
# 解压缩,得到3个组件的可执行文件
tar zxvf victoria-metrics-linux-amd64-v1.82.1-cluster.tar.gz
# 移动到环境变量目录
mv vminsert-prod vmselect-prod vmstorage-prod /usr/local/bin
vmstorage服务,指定时区,存储目录,3个端口:
vim /etc/systemd/system/vmstorage.service
[Unit]
Description=Vmstorage Server
After=network.target
[Service]
Restart=on-failure
WorkingDirectory=/tmp
ExecStart=/usr/local/bin/vmstorage-prod \
-loggerTimezone Asia/Shanghai \
-storageDataPath /data/vmstorage-data \
-httpListenAddr :8482 \
-vminsertAddr :8400 \
-vmselectAddr :8401
[Install]
WantedBy=multi-user.target
启动vmstorage服务和端口,8482可查看指标数据:
systemctl enable --now vmstorage.service
systemctl status vmstorage.service
netstat -lntp | grep vmstorage
tcp 0 0 0.0.0.0:8400 0.0.0.0:* LISTEN 2391/vmstorage-prod
tcp 0 0 0.0.0.0:8401 0.0.0.0:* LISTEN 2391/vmstorage-prod
tcp 0 0 0.0.0.0:8482 0.0.0.0:* LISTEN 2391/vmstorage-prod
curl 192.168.100.194:8482/metrics
vminsert服务,指定监听端口,3个下行端口:
vim /etc/systemd/system/vminsert.service
[Unit]
Description=Vminsert Server
After=network.target
[Service]
Restart=on-failure
WorkingDirectory=/tmp
ExecStart=/usr/local/bin/vminsert-prod \
-httpListenAddr :8480 \
-storageNode=192.168.100.194:8400,192.168.100.195:8400,192.168.100.196:8400
[Install]
WantedBy=multi-user.target
启动vminsert服务和端口,8480可查看指标数据:
systemctl enable --now vminsert.service
systemctl status vminsert.service
netstat -lntp | grep vminsert
tcp 0 0 0.0.0.0:8480 0.0.0.0:* LISTEN 2551/vminsert-prod
curl 192.168.100.194:8480/metrics
vmselect服务,指定监听端口,3个上行端口:
vim /etc/systemd/system/vmselect.service
[Unit]
Description=Vminsert Server
After=network.target
[Service]
Restart=on-failure
WorkingDirectory=/tmp
ExecStart=/usr/local/bin/vmselect-prod \
-httpListenAddr :8481 \
-storageNode=192.168.100.194:8401,192.168.100.195:8401,192.168.100.196:8401
[Install]
WantedBy=multi-user.target
启动vmselect服务和端口,8481可查看指标数据:
systemctl enable --now vmselect.service
systemctl status vmselect.service
netstat -lntp | grep vmselect
tcp 0 0 0.0.0.0:8481 0.0.0.0:* LISTEN 2706/vmselect-prod
curl 192.168.100.194:8481/metrics
在prometheus服务器修改配置,关联到3个vminsert组件:
vim /apps/prometheus/prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
# 单机版
# remote_write:
# - url: http://192.168.100.197:8428/api/v1/write
# 集群版
remote_write:
- url: http://192.168.100.194:8480/insert/0/prometheus
- url: http://192.168.100.195:8480/insert/0/prometheus
- url: http://192.168.100.196:8480/insert/0/prometheus
重启prometheus服务
systemctl restart prometheus.service
第一,在Grafana服务器添加数据源,数据源为vmselect组件或者负载均衡。
数据源
http://192.168.100.194:8481/select/0/prometheus
第二,导入模板,推荐模板ID为13824
第三,模板关联到刚创建的数据源
第四,打开显示页面,监控VictoriaMetrics状态