Настройка сбора и приёма логов в VictoriaLogs

Настройки необходимо выполнить как на сервере Визион, так и на узлах.

Настройка Визион.Сервер

Убедитесь, что в конфигурационном файле /opt/skala-r/etc/vision/server/victorialogs/environment.env для переменной ENV задано следующее значение:

-syslog.listenAddr.tcp=:29514
-syslog.tls=1
-syslog.tlsCertFile=/opt/skala-r/vision/cert/components_default.crt
-syslog.tlsKeyFile=/opt/skala-r/vision/cert/components_default.key
-syslog.tlsMinVersion=TLS12
-syslog.tlsCipherSuites 'TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256'
-syslog.tlsCipherSuites 'TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384'
-syslog.tlsCipherSuites 'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256'

Настройка узлов

Чтобы настроить rsyslog и LogWatcher на узлах, используйте плейбук rsyslog_config/deploy.yml, входящий в состав дистрибутива.

Подготовка

Чтобы выполнение плейбука прошло успешно, подготовьте узлы:

  • Убедитесь, что в репозиториях ОС доступны пакеты rsyslog и rsyslog-gnutls. В ALT Linux понадобится также rsyslog-journal.

    Если пакеты доступны, но не установлены, плейбук попытается их установить.

    Если репозитории недоступны, или указанных пакетов в них нет, установите необходимые пакеты вручную.

  • Версия пакета rsyslog должна быть не ниже значения, указанного в переменной rsyslog_min_version (по умолчанию — 8.1901). При необходимости обновите пакет вручную.

  • Убедитесь, что в конфигурационном файле /etc/rsyslog.conf присутствует команда, подключающая конфигурационные файлы из директории /etc/rsyslog.d/:

    include(file="/etc/rsyslog.d/*.conf" mode="optional")
  • Проверьте синтаксис конфигурационного файла /etc/rsyslog.d/30-vision-vlogs.conf:

    rsyslogd -N1 -f /etc/rsyslog.d/30-vision-vlogs.conf

    Если проверка не будет успешной, убедитесь в наличии модулей imfile, imjournal и прочих.

Запуск

Для запуска плейбука выполните следующие действия:

  1. В UI Визион сформируйте инвентори-файл.

  2. Убедитесь, что в инвентори-файле в разделе victorialogs переменной host присвоен IP-адрес Визион.Сервер.

  3. Перейдите в директорию дистрибутива.

  4. Запустите плейбук:

    ansible-playbook \
       --inventory /path/to/inventory rsyslog_config/deploy.yml \
       --limit <node1>,<node2>,<node3>,...

    Здесь:

    • /path/to/inventory — полный путь к инвентори-файлу;

    • <node1>, <node2>, <node3> — имена узлов, на которых нужно выполнить настройки. Все перечисленные узлы должны быть одного типа:

      • узлы балансировки, шлюзы, gateway;

      • узлы хранения, storage.

    Подробное описание параметров запуска утилиты ansible-playbook см. в документации Ansible.

  5. Выберите шаблон установки, соответствующий типу узлов, перечисленных в значении аргумента --limit.

Настройка rsyslog для отправки логов через vlagent

Чтобы настроить rsyslog на отправку логов в локальный vlagent, выполните следующие действия:

  1. В UI Визион на панели навигации выберите Объекты.

  2. На панели Контур выберите нужный ПАК.

  3. Выберите вкладку Агенты логов.

  4. Нажмите кнопку Конфигурировать агенты.

  5. Выберите расположение Proxy.

  6. В колонке Установка агента включите чекбоксы для узлов, на которые необходимо установить агенты логов.

  7. Нажмите кнопку Сохранить.

  8. На узлах в каталоге /etc/rsyslog.d/ создайте конфигурационный файл с расширением .conf, содержащий настройки отправки логов:

    module(
      load="imfile"
      mode="inotify"
    )
    
    global(
      DefaultNetstreamDriver="gtls"
      DefaultNetstreamDriverCAFile="/opt/skala-r/vision/cert/components_default.crt"
      DefaultNetstreamDriverCertFile="/opt/skala-r/vision/cert/components_default.crt" (1)
      DefaultNetstreamDriverKeyFile="/opt/skala-r/vision/cert/components_default.key" (2)
    )
    
    template(
      name="RFC5424WithSD"
      type="string"
      string="<%PRI%>1 %TIMESTAMP:::date-rfc3339% %HOSTNAME% %APP-NAME% %PROCID% %MSGID% [ filename=\"%$!metadata!filename%\" ] %msg%\n"
    )
    
    input( (3)
      type="imfile"
      File="/path/to/logs/*.log"
      Tag="vsn" (4)
      Facility="local0"
      PersistStateInterval="1"
      addMetadata="on"
      reopenOnTruncate="on"
      deleteStateOnFileDelete="on"
    )
    
    if $syslogtag startswith "vsn" then { (5)
      action(
        type="omfwd"
        Target="127.0.0.1"
        Port="29515"
        Protocol="tcp"
        StreamDriver="gtls"
        StreamDriverMode="1"
        StreamDriverAuthMode="x509/certvalid"
        #StreamDriverAuthMode="anon"
        Template="RFC5424WithSD"
        queue.type="linkedlist"
        queue.spoolDirectory="/var/spool/rsyslog"
        queue.fileName="remote_forward"
        queue.maxDiskSpace="1g"
        queue.saveOnShutdown="on"
        action.resumeRetryCount="-1"
        gnutlsPriorityString="SECURE128:-VERS-TLS-ALL:+VERS-TLS1.3" (6)
      )
      stop
    }

    Здесь:

    1 Путь к файлу сертификата.
    2 Путь к файлу ключа сертификата.
    3 Образец заполнения блока input.
    4 Тег.
    5 Образец заполнения блока action, срабатывающего только для input с тегом vsn (указан выше в примере заполнения блока input).
    6 Включение TLS 1.3.

    Создайте по одному блоку input для каждого шаблона имён файлов логов.

    Блоки action создавайте только в том случае, если теги в блоках input будут различаться.

  9. Проверьте корректность конфигурации rsyslog:

    rsyslogd -N1
  10. Перезапустите службу rsyslog:

    systemctl restart rsyslog.service
  11. Подключитесь к UI VictoriaLogs и убедитесь в наличии логов:

    https://<vision_ip>/vision/victorialogs/select/vmui

    Здесь <vision_ip> — IP-адрес сервера Визион.

Если логи не поступают в хранилище:

  • Проверьте логи rsyslog на наличие ошибок:

    journalctl -fu rsyslog
  • Проверьте логи агента и прокси vlagent на наличие ошибок:

    tail -f /opt/skala-r/var/log/vision/agent/vlagent_agent/vlagent.log
    tail -f /opt/skala-r/var/log/vision/proxy/vlagent_proxy/vlagent.log