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

На узле Визион.Сервера приведите содержимое конфигурационного файла /opt/skala-r/etc/vision/server/victorialogs/environment.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.

В состав дистрибутива входит директория rsyslog_config/, которая содержит плейбуки настройки узлов для сбора и отправки логов в VictoriaLogs для ПАК МХД.О.

Плейбук deploy.yml#

Этот плейбук используется для установки и настройки rsyslog. Он изменяет параметры rsyslog и устанавливает компонент LogWatcher для работы с ZST-логами.

Выполнение настроек происходит в несколько этапов:

  1. Проверка наличия пакетов rsyslog и rsyslog-gnutls.

    • При отсутствии пакетов плейбук попытается установить их из репозиториев ОС.

    • Если репозиторий недоступен, или необходимых пакетов в нём нет, выполнение плейбука остановится. В этом случае установите пакеты rsyslog и rsyslog-gnutls вручную.

  2. Проверка версии rsyslog.

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

    В этом случае обновите rsyslog вручную.

  3. Проверка конфигурационного файла /etc/rsyslog.conf на наличие директивы подключения конфигураций из директории /etc/rsyslog.d/*.conf.

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

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

    rsyslogd -N1 -f /etc/rsyslog.d/<...>.conf
    

    При неудачной проверке выполнение плейбука остановится. В этом случае убедитесь:

    • в наличии модулей imfile, imjournal и прочих;

    • в корректности синтаксиса шаблонов .conf.j2 в директории rsyslog_config/roles/rsyslog/templates/.

    Для отключения проверки в файле rsyslog_config/roles/rsyslog/tasks/deploy.yml закомментируйте строку с ключом validate.

Плейбук remove.yml#

Этот плейбук используется для удаления rsyslog.

Формирования инвентори-файла#

Для использования плейбуков требуется инвентори-файл.

  1. Сформируйте инвентори-файл, следуя инструкции .

  2. Убедитесь, что в секции victorialogs в значении поля host указан IP-адрес Визион.Сервера.

  3. Удалите или закомментируйте описания узлов, на которых не требуется настраивать rsyslog.

Запуск плейбуков#

Когда инвентори-файл будет сформирован и заполнен, приступайте к запуску плейбуков:

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

  2. Запустите соответствующий плейбук:

    • Установка и настройка rsyslog

      ansible-playbook -i /path/to/inventory.yml ./rsyslog_config/deploy.yml
      
    • Удаление rsyslog

      ansible-playbook -i /path/to/inventory.yml ./rsyslog_config/remove.yml
      

    Вместо /path/to/inventory.yml укажите путь к заполненному инвентори-файлу.

Удаление инвентори-файла#

После успешного выполнения плейбука удалите инвентори-файл. Это позволит избежать компрометации учётных данных, позволяющих подключаться к узлам и выполнять команды с повышенными привилегиями.

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

Для работы мониторинга логов необходимо настроить конфигурацию rsyslog для отправки логов в локальный vlagent.

Фрагмент архитектурной схемы в разрезе потока логов с узла до хранилища логов VictoriaLogs:

Дистрибутив предоставляет следующие компоненты, реализующие сбор логов и формирование оповещений на их основе:

  • VictoriaLogs — база данных для хранения логов.

    Также возможно использование внешнего кластера VictoriaLogs.

  • VLagent — сбор логов на узле.

  • LogWatcher — распаковка сжатых логов в формате .zst.

В качестве коллектора логов используется rsyslog. На целевых системах должны присутствовать следующие пакеты:

  • rsyslog версии 8.1901 или выше;

  • rsyslog-gnutls;

  • rsyslog-journal (только в ALT Linux).

В данной инструкции описано конфигурирование rsyslog для отправки в локально установленный vlagent.

  1. В интерфейсе Визион выберите раздел menu:Объекты[].

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

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

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

  5. Выберите расположение Прокси и узлы, на которые необходимо установить агенты логов.

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

  7. На узлах сконфигурируйте rsyslog для передачи журналов в vlagent. Для этого в директории /etc/rsyslog.d/ создайте файл со следующим содержимым:

    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"   # Путь к сертификату клиента (rsyslog)
      DefaultNetstreamDriverKeyFile="/opt/skala-r/vision/cert/components_default.key"    # Путь к приватному ключу клиента (rsyslog)
    )
    
    template(
      name="RFC5424WithSD"
      type="string"
      string="<%PRI%>1 %TIMESTAMP:::date-rfc3339% %HOSTNAME% %APP-NAME% %PROCID% %MSGID% [ filename=\"%$!metadata!filename%\" ] %msg%\n"
    )
    
    input(
      type="imfile"
      File="/path/to/logs/*.log"
      Tag="vsn"
      Facility="local0"
      PersistStateInterval="1"
      addMetadata="on"
      reopenOnTruncate="on"
      deleteStateOnFileDelete="on"
    )
    
    if $syslogtag startswith "vsn" then {
      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" # работа с tls1.3
      )
      stop
    }
    
  8. Исправьте шаблоны имён файлов для сбора логов по образцу:

    File="/path/to/logs/*.log"
    
  9. Каждый шаблон оформите в виде отдельного input.

  10. Настройте действия для отправки логов локально по tcp с tls на порт 29515.

  11. Укажите параметры работы с TLS.

    vlagent по умолчанию работает с MTLS и TLS 1.3.

    Для корректной работы MTLS укажите пути к файлам сертификата и ключа клиента.

    Для корректной работы TLS 1.3 укажите пути к файлам сертификата и ключа клиента, а также значение параметра gnutlsPriorityString.

    Корневой сертификат для vlagent настраивается в конфигурационном файле Визион config.yml в секции remote_components.log_agent.tls_ca_file.

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

    rsyslogd -N1
    
  13. При отсутствии ошибок перезапустите rsyslog для применения изменений:

    systemctl restart rsyslog
    
  14. Проверьте поступление логов в VictoriaLogs:

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

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

  15. В случае отсутствия логов в хранилище проверьте журналы компонентов на наличие ошибок.