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

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

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

  • VictoriaLogs - база данных для хранения логов;
  • VLagent - компонент сбора логов на узле;
  • LogWatcher - компонент, обеспечивающий распаковку сжатых логов .zst формата.

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

  • rsyslog (версии 8.1901 или выше)
  • rsyslog-gnutls
  • rsyslog-journal (только Altlinux)

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

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

  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";
    • каждый шаблон оформите в виде отдельного input;
    • настройте действия для отправки логов локально по tcp с tls на порт 29515;

    vlagent по умолчанию работает с mtls и tls1.3, поэтому необходимо обязательно указывать файлы сертификата и ключа клиента, а также gnutlsPriorityString для работы rsyslog по tls1.3;

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

  9. После настройки проверьте корректность записанной конфигурации:

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

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

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

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

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

    journalctl -fu rsyslog
    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