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

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

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

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

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

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

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

  1. Необходимо в интерфейсе Визиона перейти во вкладку “Объекты”, выбрать ПАК и перейти на вкладку “Агенты логов”;

  1. На вкладке “Агенты логов” нажать на кнопку “Конфигурировать агенты”;

  1. Выбрать расположение Прокси, а также при помощи чекбоксов выбрать узлы, на которые необходимо установить агенты логов. Нажать на кнопку “Сохранить”;

  2. На узлах необходимо сконфигурировать rsyslog для передачи логов в vlagent. Конфигурация для отправки логов в 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
}
  1. Дополнительно необходимо настроить:
  • шаблоны имен файлов для сбора логов по примеру 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.

  1. После настройки необходимо проверить корректность записанной конфигурации с помощью команды: rsyslogd -N1. При отсутствии ошибок необходимо перезапустить rsyslog для применения изменений.

  2. После перезапуска можно проверить поступление логов в VictoriaLogs: <vision-ip>/vision/victorialogs/select/vmui, где <vision-ip> - это адрес установленного экземпляра Визион.

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

  • 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