Ядро мониторинга

В этой инструкции рассматривается развёртывание ядра мониторинга в отказоустойчивой конфигурации.

Предполагается, что:

  • Кластеры VictoriaLogs и VictoriaMetrics средствами платформы развёрнуты на одних и тех же узлах и доступны через VIP.

  • Секреты для доступа к VictoriaMetrics и VictoriaLogs хранятся в директории /victoria/playbooks/tmp/secrets/.

  • Кластер PostgreSQL развёрнут средствами платформы и доступен через VIP.

В качестве примера далее используются следующие IP-адреса:

IP-адрес Описание

192.168.0.14

VIP, указывающий на мастеры VictoriaMetrics и VictoriaLogs

192.168.0.24

VIP, указывающий на мастер PostgreSQL

192.168.0.31

Узлы для развёртывания ядра мониторинга

192.168.0.32

192.168.0.33

192.168.0.40

Узел управления подсистемой мониторинга

Виртуальное окружение

Для установки некоторых компонентов необходимы коллекции Ansible. Они входят в состав виртуального окружения, включённого в архив ansible-ha-victoria-cluster-<version>.tar.gz.

Если виртуальное окружение /opt/skala-r/vision/server/vision_venv/ не существует:

  1. Распакуйте архив:

    tar -xf ansible-ha-victoria-cluster-<version>.tar.gz
  2. Запустите скрипт создания и активации виртуального окружения:

    sh ansible-ha-victoria-cluster-<version>/venv/activate_venv.sh

    Этот скрипт создаст виртуальное окружение /opt/skala-r/vision/server/vision_venv/ и активирует его, о чём свидетельствует изменившееся приглашение интерпретатора командной строки, например:

    (vision_venv) [root@server /tmp]#

Подготовка к работе

Подготовьте управляющий узел к работе:

  1. Активируйте виртуальное окружение:

    source /opt/skala-r/vision/server/vision_venv/bin/activate
  2. Распакуйте архив с дистрибутивом:

    tar -xvf vision-distrib-1.11-<build>.tar.gz
  3. Перейдите в директорию с файлами дистрибутива. Далее имена файлов и директорий указываются относительно неё.

  4. Запустите скрипт setup.sh и выберите пункт Установить пакет из репозитория дистрибутива.

  5. В хранилище секретов укажите значение параметра vault.database.dsn, например:

    vault.database.dsn: "postgres//<username>:<password>@<VIP>:5432/vision_db"

    Здесь <VIP> — VIP, который указывает на мастер PostgreSQL.

    Пример заполнения
    vault.database.dsn: "postgresql://vision:vision@192.168.0.24:5432/vision_db"

Установка

Для запуска развёртывания:

  1. Перейдите в директорию ha/.

  2. Создайте файл инвентаря, например:

    all:
      hosts:
        core-1.example.com:
          ansible_host: 192.168.0.31
        core-2.example.com:
          ansible_host: 192.168.0.32
        core-3.example.com:
          ansible_host: 192.168.0.33
      vars:
        ansible_user: root
        ansible_ssh_pass: "<password>"
        ansible_become_user: "<become_user>"
        ansible_become_password: "<become_password>"
    Пример заполнения доступен в директории inventories/example/.
  3. Заполните конфигурационный файл playbooks/ha-core/group_vars/all/external_services.yml.

    Рассмотрим заполнение этого файла на примере.

    Для защиты подключений используются корневые сертификаты, сертификаты и ключи, созданные во время развёртывания кластеров VictoriaMetrics и VictoriaLogs и хранящиеся в директории /victoria/playbooks/tmp/secrets/.

    1. Чтобы включить защиту подключений с помощью TLS, присвойте параметру common_ca_enabled значение true:

      common_ca_enabled: true
    2. Добавьте пути к файлу корневого сертификата и его ключа:

      common_ca_cert_src_path: "/victoria/playbooks/tmp/secrets/CAVictoriaExternal.crt"
      common_ca_key_src_path: "/victoria/playbooks/tmp/secrets/CAVictoriaExternal.key"
    3. Проверьте содержимое файла /victoria/playbooks/tmp/secrets/192.169.0.14_vmauth_external_user_password. Он содержит пароль авторизации BasicAuth.

    4. Добавьте имена пользователей и пароли для подключения к vlagent и vmagent с авторизацией BasicAuth. В этом примере в обоих случаях используется имя пользователя vision и пароль, полученный на предыдущем шаге.

      victorialogs_basic_auth_username: "vision"
      victoriametrics_basic_auth_username: "vision"
      victorialogs_basic_auth_password: "IbnxwZ2p3WeNioDM"
      victoriametrics_basic_auth_password: "IbnxwZ2p3WeNioDM"
    5. Добавьте пути к файлам корневого сертификата, сертификата и приватного ключа VictoriaLogs и VictoriaMetrics:

      victorialogs_tls_ca_src_path: "/victoria/playbooks/tmp/secrets/CAVictoriaExternal.crt"
      victorialogs_tls_cert_src_path: "/victoria/playbooks/tmp/secrets/192.168.0.14_external_client.crt"
      victorialogs_tls_key_src_path: "/victoria/playbooks/tmp/secrets/192.168.0.14_external_client.key"
      
      victoriametrics_tls_ca_src_path: "/victoria/playbooks/tmp/secrets/CAVictoriaExternal.crt"
      victoriametrics_tls_cert_src_path: "/victoria/playbooks/tmp/secrets/192.168.0.14_external_client.crt"
      victoriametrics_tls_key_src_path: "/victoria/playbooks/tmp/secrets/192.168.0.14_external_client.key"
    6. Укажите URL, по которым доступны VictoriaMetrics и VictoriaLogs:

      victorialogs_url: "https://192.168.0.14:9427"
      victoriametrics_url: "https://192.168.0.14:8427"
    7. Добавьте параметры подключения к служебной БД:

      vision_db_dsn: "postgres://vision:vision@192.168.0.24:5432/vision_db"
    8. Укажите URL узла управления подсистемой мониторинга:

      vision_ui_url: https://192.168.0.40
    Финальный вид файла external_services.yml
    ---
    common_ca_enabled: true
    common_ca_cert_src_path: "/victoria/playbooks/tmp/secrets/CAVictoriaExternal.crt"
    common_ca_key_src_path: "/victoria/playbooks/tmp/secrets/CAVictoriaExternal.key"
    
    victorialogs_basic_auth_username: "vision"
    victoriametrics_basic_auth_username: "vision"
    victorialogs_basic_auth_password: "IbnxwZ2p3WeNioDM"
    victoriametrics_basic_auth_password: "IbnxwZ2p3WeNioDM"
    
    victorialogs_tls_ca_src_path: "/victoria/playbooks/tmp/secrets/CAVictoriaExternal.crt"
    victorialogs_tls_cert_src_path: "/victoria/playbooks/tmp/secrets/192.168.0.14_external_client.crt"
    victorialogs_tls_key_src_path: "/victoria/playbooks/tmp/secrets/192.168.0.14_external_client.key"
    
    victoriametrics_tls_ca_src_path: "/victoria/playbooks/tmp/secrets/CAVictoriaExternal.crt"
    victoriametrics_tls_cert_src_path: "/victoria/playbooks/tmp/secrets/192.168.0.14_external_client.crt"
    victoriametrics_tls_key_src_path: "/victoria/playbooks/tmp/secrets/192.168.0.14_external_client.key"
    
    victorialogs_url: "https://192.168.0.14:9427"
    victoriametrics_url: "https://192.168.0.14:8427"
    
    vision_db_dsn: "postgres://vision:vision@192.168.0.24:5432/vision_db"
    vision_ui_url: https://192.168.0.40
  4. Запустите плейбук:

    ansible-playbook \
       -i /path/to/inventory \
       playbooks/ha-core/deploy.yml
  5. Деактивируйте виртуальное окружение:

    deactivate

Переустановка etcd

Развёртывание etcd не поддерживает повторного запуска. Чтобы избежать ошибок при выполнении плейбука:

  1. Активируйте виртуальное окружение:

    source /opt/skala-r/vision/server/vision_venv/bin/activate
  2. Добавьте в параметры запуска переменную skip_etcd со значениемex true:

    ansible-playbook \
       -i /path/to/inventory \
       playbooks/ha-core/deploy.yml \
       -e "skip_etcd=true"
  3. Деактивируйте виртуальное окружение:

    deactivate