Skip to content

Github地址:https://github.com/VictoriaMetrics/VictoriaMetrics

官网地址:https://docs.victoriametrics.com/Single-server-VictoriaMetrics.html

1. prometheus远端存储VictoriaMetrics

1.1 组件介绍

组件名字描述
vminsert写入组件,vminsert负责接收数据写入并根据对度量名称及其所有标签的一致hash结果将数据分散写入不同的后端vmstorage节点之间,vminsert默认端口8480
vmstorage存储原始数据并返回给定时间范围内给定标签过滤器的查询数据,默认端口8482
vmselect查询组件,连接vmstorage,默认端口8481
vmagent-可选一个很小但功能很强大的代理,它可以从node_exporter各种来源收集度量数据,并将它们存储在VictoriaMetrics或任何其他支持远程写协议的与prometheus兼容的存储系统中,有点prometheus server的意向
vmalert-可选替换prometheus server,以VictoriaMetrics为数据源,基于兼容prometheus的告警规则,判断数据是否异常,并将产生的通知发送给alertmanager
vmgateway-可选读写VictoriaMetrics数据的代理网关,可实现限速和访问控制等功能,目前为企业版组件
vmctl-可选VictoriaMetrics的命令行工具,目前主要用于将prometheus、opentsdb等数据源的数据迁移到VictoriaMetrics

2.部署VictoriaMetrics集群

2.1 环境介绍

软件描述
prometheus10.103.236.199,prometheus-server
vm110.103.236.20,vminsert、vmstorage、vmselect
vm210.103.236.21,vminsert、vmstorage、vmselect
vm310.103.236.22,vminsert、vmstorage、vmselect
node110.103.236.203,node_export

无标题-2024-05-29-0943.excalidraw

2.2 下载

bash
wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.111.0/victoria-metrics-linux-amd64-v1.111.0-cluster.tar.gz

wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.111.0/vmutils-linux-amd64-v1.111.0.tar.gz

wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.111.0/victoria-metrics-linux-amd64-v1.111.0.tar.gz
wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.111.0/victoria-metrics-linux-amd64-v1.111.0-cluster.tar.gz

wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.111.0/vmutils-linux-amd64-v1.111.0.tar.gz

wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.111.0/victoria-metrics-linux-amd64-v1.111.0.tar.gz

2.3 部署

采用二进制部署

部署vmstorage-prod组件

  • 解压(所有节点执行)
bash
tar zxvf victoria-metrics-linux-amd64-v1.111.0-cluster.tar.gz -C /usr/local/bin
tar zxvf victoria-metrics-linux-amd64-v1.111.0-cluster.tar.gz -C /usr/local/bin
  • 创建数据目录和配置目录(所有节点执行)
bash
mkdir -p /data/VictoriaMetrics
mkdir -p /etc/VictoriaMetrics
mkdir -p /data/VictoriaMetrics
mkdir -p /etc/VictoriaMetrics
  • 配置systemd
bash
cat > /etc/systemd/system/vmstorage.service <<EOF
[Unit]
Description=Vmstorage Server
After=network.target
 
[Service]
Restart=on-failure
WorkingDirectory=/tmp
ExecStart=/usr/local/bin/vmstorage-prod -retentionPeriod=15d -loggerTimezone Asia/Shanghai -dedup.minScrapeInterval=30s -loggerLevel INFO -storageDataPath /data/VictoriaMetrics -httpListenAddr :8482 -vminsertAddr :8400 -vmselectAddr :8401
Restart=always
[Install]
WantedBy=multi-user.target
EOF
cat > /etc/systemd/system/vmstorage.service <<EOF
[Unit]
Description=Vmstorage Server
After=network.target
 
[Service]
Restart=on-failure
WorkingDirectory=/tmp
ExecStart=/usr/local/bin/vmstorage-prod -retentionPeriod=15d -loggerTimezone Asia/Shanghai -dedup.minScrapeInterval=30s -loggerLevel INFO -storageDataPath /data/VictoriaMetrics -httpListenAddr :8482 -vminsertAddr :8400 -vmselectAddr :8401
Restart=always
[Install]
WantedBy=multi-user.target
EOF
  • 启动
bash
systemctl daemon-reload
systemctl enable vmstorage.service --now
systemctl daemon-reload
systemctl enable vmstorage.service --now
  • 查看
bash
[root@Rocky ~]# ss -ntlp| grep -E "8482|8400|8401"
LISTEN 0      2048         0.0.0.0:8400       0.0.0.0:*    users:(("vmstorage-prod",pid=4045,fd=6))
LISTEN 0      2048         0.0.0.0:8401       0.0.0.0:*    users:(("vmstorage-prod",pid=4045,fd=7))
LISTEN 0      2048         0.0.0.0:8482       0.0.0.0:*    users:(("vmstorage-prod",pid=4045,fd=8))
[root@Rocky ~]# ss -ntlp| grep -E "8482|8400|8401"
LISTEN 0      2048         0.0.0.0:8400       0.0.0.0:*    users:(("vmstorage-prod",pid=4045,fd=6))
LISTEN 0      2048         0.0.0.0:8401       0.0.0.0:*    users:(("vmstorage-prod",pid=4045,fd=7))
LISTEN 0      2048         0.0.0.0:8482       0.0.0.0:*    users:(("vmstorage-prod",pid=4045,fd=8))

部署vminsert-prod组件

  • systemd
bash
cat > /etc/systemd/system/vminsert.service <<EOF
[Unit]
Description=Vmsinsert Server
After=network.target
 
[Service]
Restart=on-failure
WorkingDirectory=/tmp
ExecStart=/usr/local/bin/vminsert-prod -httpListenAddr=:8480 -storageNode=10.103.236.20:8400,10.103.236.21:8400,10.103.236.22:8400
 
[Install]
WantedBy=multi-user.target
EOF
cat > /etc/systemd/system/vminsert.service <<EOF
[Unit]
Description=Vmsinsert Server
After=network.target
 
[Service]
Restart=on-failure
WorkingDirectory=/tmp
ExecStart=/usr/local/bin/vminsert-prod -httpListenAddr=:8480 -storageNode=10.103.236.20:8400,10.103.236.21:8400,10.103.236.22:8400
 
[Install]
WantedBy=multi-user.target
EOF
  • 启动
bash
systemctl daemon-reload
systemctl enable vminsert.service --now
systemctl daemon-reload
systemctl enable vminsert.service --now
  • 查看
bash
[root@k8s-master01 ~]# ss -tnlp | grep 8480
LISTEN     0      16384        *:8480                     *:*                   users:(("vminsert-prod",pid=3219,fd=3))
[root@k8s-master01 ~]# ss -tnlp | grep 8480
LISTEN     0      16384        *:8480                     *:*                   users:(("vminsert-prod",pid=3219,fd=3))

部署vmselect-prod组件

  • systemd
bash
cat > /etc/systemd/system/vmselect.service <<EOF
[Unit]
Description=Vmselect Server
After=network.target
 
[Service]
Restart=on-failure
WorkingDirectory=/tmp
ExecStart=/usr/local/bin/vmselect-prod -httpListenAddr :8481 -storageNode=10.103.236.20:8401,10.103.236.21:8401,10.103.236.22:8401  -dedup.minScrapeInterval=30s -loggerTimezone "Asia/Shanghai" -loggerLevel INFO
 
[Install]
WantedBy=multi-user.target
EOF
cat > /etc/systemd/system/vmselect.service <<EOF
[Unit]
Description=Vmselect Server
After=network.target
 
[Service]
Restart=on-failure
WorkingDirectory=/tmp
ExecStart=/usr/local/bin/vmselect-prod -httpListenAddr :8481 -storageNode=10.103.236.20:8401,10.103.236.21:8401,10.103.236.22:8401  -dedup.minScrapeInterval=30s -loggerTimezone "Asia/Shanghai" -loggerLevel INFO
 
[Install]
WantedBy=multi-user.target
EOF
  • 启动
bash
systemctl daemon-reload
systemctl enable vmselect.service --now
systemctl daemon-reload
systemctl enable vmselect.service --now
  • 查看
bash
[root@k8s-node01 ~]# ss -tnlp | grep 8481
LISTEN     0      16384        *:8481                     *:*                   users:(("vmselect-prod",pid=4277,fd=3))
[root@k8s-node01 ~]# ss -tnlp | grep 8481
LISTEN     0      16384        *:8481                     *:*                   users:(("vmselect-prod",pid=4277,fd=3))

验证服务

bash
curl http://10.103.236.199:8480/metrics
curl http://10.103.236.199:8481/metrics
curl http://10.103.236.199:8482/metrics
-- 有返回数据则证明成功
curl http://10.103.236.199:8480/metrics
curl http://10.103.236.199:8481/metrics
curl http://10.103.236.199:8482/metrics
-- 有返回数据则证明成功

2.4 配置prometheus

yml
############ vm ###################
remote_write:
- url: http://192.168.2.10:8480/insert/0/prometheus/api/v1/write
  queue_config:
    capacity: 50000
    max_shards: 1000
    min_shards: 100
    max_samples_per_send: 1000
    batch_send_deadline: 180s
    min_backoff: 3s
    max_backoff: 30s
############ vm ###################
remote_write:
- url: http://192.168.2.10:8480/insert/0/prometheus/api/v1/write
  queue_config:
    capacity: 50000
    max_shards: 1000
    min_shards: 100
    max_samples_per_send: 1000
    batch_send_deadline: 180s
    min_backoff: 3s
    max_backoff: 30s

2.5 配置grafana

  • 添加数据

image-20250218180457842

  • 填写vmselect地址,这里填写slb

image-20250218180545660

http://10.103.236.21:8481/select/0/prometheus
http://10.103.236.21:8481/select/0/prometheus

保存

  • 导入node-exporter模板

16098