Установка Victoria Metrics Cluster из бинарников

2. Скачивание бинарников из локального репозитория на целевые хосты

  1. На целевых нодах будущего кластера Victoria Metrics выполните загрузку бинарников из локального NXRM:

    VER='v1.110.0'
    PLATFORM='linux-amd64'
    
    INTERNAL_REPO="https://nexus.example.org/repository/dud_evolut_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
  2. Распакуйте скачанные файлы-архивы:

    tar xvf victoria-metrics-${PLATFORM}-${VER}-cluster.tar.gz
    tar xvf vmutils-${PLATFORM}-${VER}.tar.gz
  3. Проверьте целостность всех полученных файлов:

    sha256sum -c \
      victoria-metrics-${PLATFORM}-${VER}-cluster_checksums.txt \
      vmutils-${PLATFORM}-${VER}_checksums.txt

    Ожидаемый вывод:

    victoria-metrics-linux-amd64-v1.106.0-cluster.tar.gz: OK
    vminsert-prod: OK
    vmselect-prod: OK
    vmstorage-prod: OK
    vmutils-linux-amd64-v1.106.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
  4. Разместите бинарники в каталоге /usr/local/bin:

    rm -f *${VER}*
    install vm* /usr/local/bin/
  5. Удалите временный каталог со скачанными файлами Victoria Metrics:

    rm -rf "${TMPDIR}"

3. Установка vmstorage

  1. На двух или более хостах, выделенных для размещения vmstorage, создайте каталог для хранения данных:

    VMSTORAGE_DIR='/srv/vmstorage'
    
    groupadd -r victoriametrics
    useradd -r -M -s /sbin/nologin -g victoriametrics -d ${VMSTORAGE_DIR} vmstorage
    
    mkdir -p ${VMSTORAGE_DIR} && \
    chown -R vmstorage:victoriametrics ${VMSTORAGE_DIR}
  2. Добавьте в systemd соответствующий service-модуль 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
    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
    WorkingDirectory=${VMSTORAGE_DIR}
    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
    
    systemctl enable --now vmstorage
  3. Проверьте работоспособность сервиса:

    curl http://<ip-address>:8482/-/healthy

    Ожидаемый вывод:

    VictoriaMetrics is Healthy.

4. Установка vminsert

  1. На тех же хостах с установленными vmstorage, или же отдельных, добавьте в systemd соответствующий service-модуль vminsert.service:

    VMSTORAGE_ADDRESSES='10.15.160.1,10.15.160.2,10.15.160.3,10.15.160.4,10.15.160.5'
    
    groupadd -r victoriametrics
    useradd -r -M -s sbin/nologin -g victoriametrics vminsert
    
    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 > /etc/sysconfig/vminsert
    storageNode=${VMSTORAGE_ADDRESSES}
    EOF
    
    systemctl enable --now vminsert
  2. Проверьте работоспособность сервиса:

    curl http://<ip-address>:8480/-/healthy

    Ожидаемый вывод:

    VictoriaMetrics is Healthy.

5. Установка vmselect

  1. На двух или более хостах, выделенных для размещения vmstorage, создайте каталог для хранения данных:

    VMSELECT_DIR='/srv/vmselect'
    VMSTORAGE_ADDRESSES='10.15.160.1,10.15.160.2,10.15.160.3,10.15.160.4,10.15.160.5'
    
    groupadd -r victoriametrics
    useradd -r -M -s /usr/sbin/nologin -g victoriametrics -d ${VMSELECT_DIR} vmselect
    
    mkdir -p ${VMSELECT_DIR} && \
    chown -R vmselect:victoriametrics ${VMSELECT_DIR}
    
    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
    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
    WorkingDirectory=${VMSELECT_DIR}
    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=${VMSTORAGE_ADDRESSES}
    EOF
    
    systemctl enable --now vmselect
  2. Проверьте работоспособность сервиса:

    curl http://<ip-address>:8481/-/healthy

    Ожидаемый вывод:

    VictoriaMetrics is Healthy.