VER='v1.111.0' PLATFORM='linux-amd64' INTERNAL_REPO="https://nexus.example.org/repository/raw" REPO_FOLDER="monitoring/victoriametrics" TMPDIR=$(mktemp -d) && cd $TMPDIR curl -LO ${INTERNAL_REPO}/${REPO_FOLDER}/victoria-metrics-${PLATFORM}-${VER}-cluster.tar.gz curl -LO ${INTERNAL_REPO}/${REPO_FOLDER}/victoria-metrics-${PLATFORM}-${VER}-cluster_checksums.txt curl -LO ${INTERNAL_REPO}/${REPO_FOLDER}/vmutils-${PLATFORM}-${VER}.tar.gz curl -LO ${INTERNAL_REPO}/${REPO_FOLDER}/vmutils-${PLATFORM}-${VER}_checksums.txt
Установка VictoriaMetrics Cluster из бинарников в изолированной среде
1. Использованные материалы
2. Скачивание бинарников из локального репозитория на целевые хосты
-
На целевых нодах будущего кластера VictoriaMetrics выполните загрузку бинарников из локального NXRM:
-
Распакуйте скачанные файлы-архивы:
tar xvf victoria-metrics-${PLATFORM}-${VER}-cluster.tar.gz tar xvf vmutils-${PLATFORM}-${VER}.tar.gz
-
Проверьте целостность всех полученных файлов:
sha256sum -c \ victoria-metrics-${PLATFORM}-${VER}-cluster_checksums.txt \ vmutils-${PLATFORM}-${VER}_checksums.txt
Ожидаемый вывод:
victoria-metrics-linux-amd64-v1.111.0-cluster.tar.gz: OK vminsert-prod: OK vmselect-prod: OK vmstorage-prod: OK vmutils-linux-amd64-v1.111.0.tar.gz: OK vmagent-prod: OK vmalert-prod: OK vmalert-tool-prod: OK vmauth-prod: OK vmbackup-prod: OK vmrestore-prod: OK vmctl-prod: OK
-
Разместите бинарники в каталоге
/usr/local/bin
:rm -f *${VER}* install vm* /usr/local/bin/
-
Удалите временный каталог со скачанными файлами VictoriaMetrics:
rm -rf "${TMPDIR}"
3. Приведение hosts к единому виду
-
Отредактируйте файл
/etc/hosts
одинаковым образом на всех машинах будущего VictoriaMetrics-кластера:# # IP-Address Full-Qualified-Hostname Short-Hostname # 127.0.0.1 localhost # special IPv6 addresses ::1 localhost ipv6-localhost ipv6-loopback fe00::0 ipv6-localnet ff00::0 ipv6-mcastprefix ff02::1 ipv6-allnodes ff02::2 ipv6-allrouters ff02::3 ipv6-allhosts 10.0.0.15 mon-vmauth01p.example.org mon-vmauth01p 10.0.0.13 mon-vmauth02p.example.org mon-vmauth02p 10.0.0.7 mon-vminsert01p.example.org mon-vminsert01p 10.0.0.4 mon-vminsert02p.example.org mon-vminsert02p 10.0.0.12 mon-vmselect01p.example.org mon-vmselect01p 10.0.0.9 mon-vmselect02p.example.org mon-vmselect02p 10.0.0.3 mon-vmstorage01p.example.org mon-vmstorage01p vmstorage01 10.0.0.6 mon-vmstorage02p.example.org mon-vmstorage02p vmstorage02 10.0.0.1 mon-vmstorage03p.example.org mon-vmstorage03p vmstorage03 10.0.0.16 mon-vmstorage04p.example.org mon-vmstorage04p vmstorage04 10.0.0.2 mon-vmstorage05p.example.org mon-vmstorage05p vmstorage05 10.0.0.18 mon-ctl0617p.example.org mon-ctl0617p
4. Установка vmstorage
-
На хостах, выделенных для размещения vmstorage, создайте аккаунт, каталог для хранения данных, и разместите systemd-юнит в каталоге
/etc/systemd/system
:VMSTORAGE_DIR='/srv/vmstorage' groupadd -g 800 victoriametrics useradd -r -M -s /sbin/nologin -g victoriametrics vmstorage mkdir -p ${VMSTORAGE_DIR} && \ chown -R vmstorage:victoriametrics ${VMSTORAGE_DIR} chmod 750 ${VMSELECT_DIR}
Возможно нам пригодится одинаковый GID группы на всех vmstorage-нодах для целей бекапирования? -
Добавьте в systemd юнит
vmstorage.service
:cat << EOF >/etc/systemd/system/vmstorage.service [Unit] Description=vmstorage - stores the raw data and returns the queried data on the given time range for the given label filters # https://docs.victoriametrics.com/Cluster-VictoriaMetrics.html After=network.target [Service] Type=simple User=vmstorage Group=victoriametrics UMask=027 StartLimitBurst=5 StartLimitInterval=0 Restart=on-failure RestartSec=1 EnvironmentFile=/etc/sysconfig/vmstorage ExecStart=/usr/local/bin/vmstorage-prod -envflag.enable ExecStop=/bin/kill -s SIGTERM \$MAINPID ExecReload=/bin/kill -s HUP \$MAINPID # See docs https://docs.victoriametrics.com/Single-server-VictoriaMetrics.html#tuning LimitNOFILE=1048576 LimitNPROC=1048576 LimitCORE=infinity ReadWritePaths=${VMSTORAGE_DIR} PrivateTmp=yes ProtectHome=yes NoNewPrivileges=yes ProtectSystem=strict ProtectControlGroups=true ProtectKernelModules=true ProtectKernelTunables=yes [Install] WantedBy=multi-user.target EOF systemctl daemon-reload cat << EOF > /etc/sysconfig/vmstorage retentionPeriod=90d storageDataPath=${VMSTORAGE_DIR} EOF set +u systemctl enable --now vmstorage
-
Проверьте работоспособность сервиса. Например:
curl http://vminsert01:8482/-/healthy
Ожидаемый вывод:
VictoriaMetrics is Healthy.
5. Установка vminsert
-
На хостах, выделенных под vminsert-сервис, добавьте в systemd юнит
vminsert.service
:groupadd -r victoriametrics useradd -r -M -s /sbin/nologin -g victoriametrics vminsert set -u; cat << EOF >/etc/systemd/system/vminsert.service [Unit] Description=vminsert - accepts the ingested data and spreads it among vmstorage nodes according to consistent hashing over metric name and all its labels # https://docs.victoriametrics.com/Cluster-VictoriaMetrics.html After=network.target [Service] Type=simple User=vminsert Group=victoriametrics StartLimitBurst=5 StartLimitInterval=0 Restart=on-failure RestartSec=1 EnvironmentFile=/etc/sysconfig/vminsert ExecStart=/usr/local/bin/vminsert-prod -envflag.enable ExecStop=/bin/kill -s SIGTERM \$MAINPID ExecReload=/bin/kill -s HUP \$MAINPID # See docs https://docs.victoriametrics.com/Single-server-VictoriaMetrics.html#tuning LimitNOFILE=1048576 LimitNPROC=1048576 LimitCORE=infinity PrivateTmp=yes ProtectHome=yes NoNewPrivileges=yes ProtectSystem=strict ProtectControlGroups=true ProtectKernelModules=true ProtectKernelTunables=yes [Install] WantedBy=multi-user.target EOF systemctl daemon-reload cat << 'EOF' > vminsert #vminsertAddr=:8480 storageNode='\ vmstorage01,\ vmstorage02,\ vmstorage03,\ vmstorage04,\ vmstorage05' EOF set +u systemctl enable --now vminsert
-
Проверьте работоспособность сервиса:
curl http://mon-vminsert01p:8480/-/healthy
Ожидаемый вывод:
VictoriaMetrics is Healthy.
6. Установка vmselect
-
На хостах, выделенных для размещения vmselect, создайте непривилегированный аккаунт, под которым будет работать демон vmselect, каталог для буфера запросов, и добавьте в
/etc/systemd/system
systemd-юнит:VMSELECT_DIR='/srv/vmselect' groupadd -r victoriametrics useradd -r -M -s /sbin/nologin -g victoriametrics -d ${VMSELECT_DIR} vmselect mkdir -p ${VMSELECT_DIR} chown vmselect:victoriametrics ${VMSELECT_DIR} chmod 750 ${VMSELECT_DIR} set -u; cat << EOF >/etc/systemd/system/vmselect.service [Unit] Description=vmselect - performs incoming queries by fetching the needed data from all the configured vmstorage nodes # https://docs.victoriametrics.com/Cluster-VictoriaMetrics.html After=network.target [Service] Type=simple User=vmselect Group=victoriametrics UMask=027 StartLimitBurst=5 StartLimitInterval=0 Restart=on-failure RestartSec=1 EnvironmentFile=/etc/sysconfig/vmselect ExecStart=/usr/local/bin/vmselect-prod -envflag.enable ExecStop=/bin/kill -s SIGTERM \$MAINPID ExecReload=/bin/kill -s HUP \$MAINPID # See docs https://docs.victoriametrics.com/Single-server-VictoriaMetrics.html#tuning LimitNOFILE=1048576 LimitNPROC=1048576 LimitCORE=infinity ReadWritePaths=${VMSELECT_DIR} PrivateTmp=yes ProtectHome=yes NoNewPrivileges=yes ProtectSystem=strict ProtectControlGroups=true ProtectKernelModules=true ProtectKernelTunables=yes [Install] WantedBy=multi-user.target EOF systemctl daemon-reload cat << 'EOF' > /etc/sysconfig/vmselect storageNode='\ vmstorage01,\ vmstorage02,\ vmstorage03,\ vmstorage04,\ vmstorage05' EOF set +u systemctl enable --now vmselect
-
Проверьте работоспособность сервиса:
curl http://mon-vmselect01p:8481/-/healthy
Ожидаемый вывод:
VictoriaMetrics is Healthy.