Prometheus Victoriametrics-单机远程存储、集群部署【十一】

一、Victoriametrics单机版部署

#https://github.com/VictoriaMetrics/VictoriaMetrics

#https://docs.victoriametrics.com/Single-server-VictoriaMetrics.html

#单机版
wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.81.2/victoria-metrics-linux-amd64-v1.81.2.tar.gz
#集群版
wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.81.2/victoria-metrics-linux-amd64-v1.81.2-cluster.tar.gz


[root@xianchaomaster1 src]# ll
total 28696
-rw-r--r-- 1 root root 19865319 May  1 09:16 victoria-metrics-linux-amd64-v1.81.2-cluster.tar.gz
-rw-r--r-- 1 root root  9516628 May  1 09:16 victoria-metrics-linux-amd64-v1.81.2.tar.gz
[root@xianchaomaster1 src]# tar zxvf victoria-metrics-linux-amd64-v1.81.2.tar.gz
victoria-metrics-prod
[root@xianchaomaster1 src]# ll
total 46840
-rw-r--r-- 1 root          root          19865319 May  1 09:16 victoria-metrics-linux-amd64-v1.81.2-cluster.tar.gz
-rw-r--r-- 1 root          root           9516628 May  1 09:16 victoria-metrics-linux-amd64-v1.81.2.tar.gz
-rwxr-xr-x 1 elasticsearch elasticsearch 18576496 Sep  8  2022 victoria-metrics-prod
[root@xianchaomaster1 src]# cp victoria-metrics-prod /usr/local/bin/
[root@xianchaomaster1 src]# 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

[root@xianchaomaster1 src]# systemctl daemon-reload && systemctl restart victoria-metrics-prod && systemctl enable victoria-metrics-prod
Created symlink from /etc/systemd/system/multi-user.target.wants/victoria-metrics-prod.service to /etc/systemd/system/victoria-metrics-prod.service.
[root@xianchaomaster1 src]# netstat -nltp | grep 8428
tcp        0      0 0.0.0.0:8428            0.0.0.0:*               LISTEN      23009/victoria-metr
#默认会自动创建数据目录
[root@xianchaomaster1 victoria]# pwd
/data/victoria
[root@xianchaomaster1 victoria]# ll
total 0
drwxr-xr-x 4 root root 48 May  1 09:20 data
-rw-r--r-- 1 root root  0 May  1 09:20 flock.lock
drwxr-xr-x 5 root root 71 May  1 09:20 indexdb
drwxr-xr-x 2 root root 43 May  1 09:20 metadata
drwxr-xr-x 2 root root  6 May  1 09:20 snapshots
drwxr-xr-x 3 root root 27 May  1 09:20 tmp

#访问地址
http://192.168.40.180:8428/

#配置Prometheus文件
[root@xianchaomaster1 victoria]# vim /apps/prometheus/prometheus.yml
# my global config
global:

remote_write:
  - url: http://192.168.122.24:8428/api/v1/write

[root@xianchaomaster1 victoria]# systemctl restart prometheus

#访问VMUI

#配置Grafana以Victoriametrics作为数据源 8919

二、docker-compose文件

https://github.com/VictoriaMetrics/VictoriaMetrics/tree/cluster/deployment/docker

[root@xianchaomaster1 docker]# git clone https://github.com/VictoriaMetrics/VictoriaMetrics.git
[root@xianchaomaster1 docker]# pwd
/data/victoria/VictoriaMetrics/deployment/docker

-rw-r--r-- 1 root root   60 May  2 09:22 alertmanager.yml
-rw-r--r-- 1 root root 9489 May  2 09:22 alerts-cluster.yml
-rw-r--r-- 1 root root 3847 May  2 09:22 alerts-health.yml
-rw-r--r-- 1 root root 7436 May  2 09:22 alerts-vmagent.yml
-rw-r--r-- 1 root root 3758 May  2 09:22 alerts-vmalert.yml
-rw-r--r-- 1 root root 7471 May  2 09:22 alerts.yml
drwxr-xr-x 2 root root   24 May  2 09:22 base
drwxr-xr-x 2 root root   24 May  2 09:22 builder
-rw-r--r-- 1 root root 3568 May  2 09:22 docker-compose-cluster.yml
-rw-r--r-- 1 root root 3052 May  2 09:22 docker-compose.yml
-rw-r--r-- 1 root root 6519 May  2 09:22 Makefile
-rw-r--r-- 1 root root  467 May  2 09:22 prometheus-cluster.yml
-rw-r--r-- 1 root root  298 May  2 09:22 prometheus.yml
drwxr-xr-x 4 root root   43 May  2 09:22 provisioning
-rw-r--r-- 1 root root 4494 May  2 09:22 README.md

docker-compose up

三、Victoriametrics集群版部署

组件介绍

#vminsert:写入组件(写),vminsert负责接收数据写入并根据对度量名称及其所有标签的一致哈希结果将数据分散写入不同的后端虚拟存储节点之间,默认端口8480
#vmstroage:存储原始数据并返回给定时间范围内给定标签过滤器的查询数据,默认端口8482
#vmstorage:会监听3个端口,8482是自身API端口;8400提供给vminsert,负责处理数据写入;8401提供给vmselect,负责数据读取。

#vmselect:查询组件(读),连接vmstorage,默认端口:8481
其它可选组件:
#vmagent #是一个很小但功能强大的代理,它可以从node exporter 各种来源收集度量数据,
         #并将它们存储在 VictoriaMetrics 或任何其他支持远程写入协议的与 prometheus 兼容的存储系统中,有替代prometheus server 的意向。

实验网络拓扑:

 实验环境

192.168.40.180 vm-node-01 vmstroage=>8482、8400、8401  vminsert=>8480 vmselect=>8481
192.168.40.181 vm-node-02 vmstroage=>8482、8400、8401  vminsert=>8480 vmselect=>8481
192.168.40.182 vm-node-03 vmstroage=>8482、8400、8401  vminsert=>8480 vmselect=>8481

192.168.40.188 haproxy vminsert=>18480 vmselect=>18481

192.168.40.180 Prometheus联邦节点
192.168.40.181 Prometheus Server
192.168.40.182 Prometheus Server

实验部署

#【192.168.40.180 vm-node-01 vmstroage=>8482、8400、8401  vminsert=>8480 vmselect=>8481】
#1、下载二进制 - 解压 - 运行
wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.87.2/victoria-metrics-linux-amd64-v1.87.2-cluster.tar.gz
tar xf victoria-metrics-linux-amd64-v1.87.2-cluster.tar.gz
mv vminsert-prod vmselect-prod vmstorage-prod /usr/bin/
vmstorage-prod -h	#查看运行参数
#2、准备vmstorage.service service文件
# cat /lib/systemd/system/vmstorage.service
[Unit]
Description=Vmstorage Server
After=network.target

[Service]
Restart=on-failure
WorkingDirectory=/tmp
ExecStart=/usr/bin/vmstorage-prod -loggerTimezone Asia/Shanghai -storageDataPath /data/vmstorage-data -httpListenAddr :8482 -vminsertAddr :8400 -vmselectAddr :8401

[Install]
WantedBy=multi-user.targe

#vmstorage会监听3个端口,8482是自身API端口;8400提供给vminsert,负责处理数据写入;8401提供给vmselect,负责数据读取。
#3、启动vmstorage服务
mkdir --p /data/vmstorage-data
systemctl daemon-reload
systemctl start vmstorage.service
systemctl status vmstorage.service
systemctl enable vmstorage.service

#4、部署vmselect 准备service文件 、vmselect自身监听8481端口对外读提供服务,-storageNode用于指定vmstorage地址
cat /lib/systemd/system/vmselect.service
[root@xianchaomaster1 system]# cat vmselect.service
[Unit]
Description=Vmselect Server
After=network.target

[Service]
Restart=on-failure
WorkingDirectory=/tmp
ExecStart=/usr/bin/vmselect-prod -httpListenAddr :8481 -storageNode=192.168.40.180:8401,192.168.40.181:8401,192.168.40.182:8401

[Install]
WantedBy=multi-user.target

#5、启动vmstorage服务
systemctl daemon-reload
systemctl start vmselect.service
systemctl status vmselect.service
systemctl enable vmselect.service

#6、部署vminsert、准备service文件、vminsert自身监听8480端口对外写提供服务,-storageNode用于指定vmstorage地址
cat /lib/systemd/system/vminsert.service
[Unit]
Description=Vminsert Server
After=network.target

[Service]
Restart=on-failure
WorkingDirectory=/tmp
ExecStart=/usr/bin/vminsert-prod -httpListenAddr :8480 -storageNode=192.168.40.180:8400,192.168.40.181:8400,192.168.40.182:8400

[Install]
WantedBy=multi-user.target

#7、启动服务vminsert.servic
systemctl daemon-reload
systemctl start vminsert.service
systemctl status vminsert.service
systemctl enable vminsert.service

#8、检验是否端口都开启
[root@xianchaomaster1 system]# netstat -nltp | grep vmselect
tcp        0      0 0.0.0.0:8481            0.0.0.0:*               LISTEN      86030/vmselect-prod
[root@xianchaomaster1 system]# netstat -nltp | grep vminsert
tcp        0      0 0.0.0.0:8480            0.0.0.0:*               LISTEN      88130/vminsert-prod
[root@xianchaomaster1 system]# netstat -nltp | grep vmstorage
tcp        0      0 0.0.0.0:8400            0.0.0.0:*               LISTEN      83634/vmstorage-pro
tcp        0      0 0.0.0.0:8401            0.0.0.0:*               LISTEN      83634/vmstorage-pro
tcp        0      0 0.0.0.0:8482            0.0.0.0:*               LISTEN      83634/vmstorage-pro

192.168.40.180
curl http://192.168.40.180:8480/metrics
curl http://192.168.40.180:8481/metrics
curl http://192.168.40.180:8482/metrics

192.168.40.181
curl http://192.168.40.181:8480/metrics
curl http://192.168.40.181:8481/metrics
curl http://192.168.40.181:8482/metrics

192.168.40.182
curl http://192.168.40.182:8480/metrics
curl http://192.168.40.182:8481/metrics
curl http://192.168.40.182:8482/metrics

#【192.168.40.181 vm-node-02 vmstroage=>8482、8400、8401  vminsert=>8480 vmselect=>8481】
重复上述1-8步骤
#【192.168.40.182 vm-node-03 vmstroage=>8482、8400、8401  vminsert=>8480 vmselect=>8481】
重复上述1-8步骤



#9、配置Prometheus使用vminsert、修改Prometheus配置,添加remote_write配置
remote_write:
  #- url: http://192.168.40.180:8428/api/v1/write
  #1、单个配置3条
  #- url: http://192.168.40.180:8480/insert/0/prometheus
  #- url: http://192.168.40.181:8480/insert/0/prometheus
  #- url: http://192.168.40.182:8480/insert/0/prometheus
  #2、配置 Haproxy 负载地址
  - url: http://192.168.40.188:18480/insert/0/prometheus

#10、配置修改完成后重启Prometheus
systemctl restart prometheus

#11.1、增加子接口
[root@xianchaomaster1 network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@xianchaomaster1 network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0
[root@xianchaomaster1 network-scripts]# vim ifcfg-ens33:0
#改为DEVICE="ens33:0"
#改为IPADDR="192.168.40.188"
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="bf49051d-b011-4318-9fe9-4c422eb27294"
DEVICE="ens33:0"
ONBOOT="yes"
IPADDR="192.168.40.188"
PREFIX="24"
GATEWAY="192.168.40.2"
DNS1="192.168.40.2"
IPV6_PRIVACY="no"

[root@xianchaomaster1 network-scripts]# systemctl restart network

[root@xianchaomaster1 network-scripts]# ifconfig
ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.40.188  netmask 255.255.255.0  broadcast 192.168.40.255
        ether 00:0c:29:14:c8:37  txqueuelen 1000  (Ethernet)

#11.2、配置Haproxy 192.168.40.188 haproxy vminsert=>18480 vmselect=>18481
[root@xianchaomaster1 system]# cat /etc/haproxy/haproxy.cfg
listen stats
  bind :9999
  stats enable
  stats uri /haproxy-status
  stats realm HAPorxy Stats\ Page
  stats auth haadmin:123456
  stats auth admin:123456

listen vmselect-8481
       bind :18481
       option  tcplog
       mode tcp
       balance source
       server vmselect-node1 192.168.40.180:8481 check inter 2000 fall 3 rise 5
       server vmselect-node2 192.168.40.181:8481 check inter 2000 fall 3 rise 5
       server vmselect-node3 192.168.40.182:8481 check inter 2000 fall 3 rise 5


listen vminsert-8480
       bind :18480
       option  tcplog
       mode tcp
       balance source
       server vminsert-node1 192.168.40.180:8480 check inter 2000 fall 3 rise 5
       server vminsert-node2 192.168.40.181:8480 check inter 2000 fall 3 rise 5
       server vminsert-node3 192.168.40.182:8480 check inter 2000 fall 3 rise 5


#12、配置Grafana以vmselect为数据源、Grafana添加数据源 - 导入模板查看数据,模板ID 11074
#Data Source
Name:Prometheus-victoriametrics-haproxy-vmselect
url:http://192.168.40.188:18481/select/0/prometheus
#Dashboard ID
11074

如上图所示,模板正常显示数据,表示可以从vmselect读取数据

四、开启数据复制

默认情况下,数据被vmselect组件基于hash算法分别写入到不同的vmstorage节点,数据只保存一份,如果有vmstorage节点宕机会造成部分数据丢失。可以启用vminsert组件的-replicationFactor=N参数启用复制功能,将数据分别在N个节点上都写入一份以实现数据的高可用。
但复制功能会增加vmselect和vminsert组件的资源使用率,因为vminsert需要写入多份数据,vmselect从多个vmstorage读取数据之后需要执行去重操作。官方建议还是将数据的高可用交给vmstorage数据存储路径的磁盘(例如使用ceph rbd),并定期备份数据
 
更多介绍可以参考官方文档: https://docs.victoriametrics.com/Cluster-VictoriaMetrics.html#replication-and-data-safety
 
[root@xianchaomaster1 system]# vminsert-prod --help | grep replicationFactor
  -replicationFactor int
        Replication factor for the ingested data, i.e. how many copies to make among distinct -storageNode instances. Note that vmselect must run with -dedup.minScrapeInterval=1ms for data de-duplication when replicationFactor is greater than 1. Higher values for -dedup.minScrapeInterval at vmselect is OK (default 1)
 
posted @ 2023-05-02 09:03  しみずよしだ  阅读(1296)  评论(1)    收藏  举报