Настройка rsyslog для ПАК МХД.О

Эта инструкция описывает настройку rsyslog на отправку логов в сервер VictoriaLogs, развёрнутый на одном узле. Если используется отказоустойчивый кластер VictoriaLogs:

  1. Разверните rsyslog и LogWatcher, следуя этой инструкции.

  2. Вручную измените настройки rsyslog, следуя инструкции Настройка rsyslog на ПАК, отличающихся от МХД.О.

Настройка узлов выполняется с помощью плейбуков Ansible, входящих в состав дистрибутива и размещённых в директории rsyslog_config/. Далее все пути к файлам и директориям указываются относительно этой директории, если явно не указано иное.

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

Помимо rsyslog на целевые узлы устанавливается LogWatcher — компонент для работы с логами в формате ZST.

Системные требования

На целевых узлах должны быть установлены или доступны для установки из репозиториев ОС следующие пакеты:

  • rsyslog версии 8.1901 или новее;

  • rsyslog-gnutls;

  • rsyslog-journal (только Альт Сервер).

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

Особенности использования плейбуков

Поставляемые в дистрибутиве плейбуки имеют ряд особенностей.

deploy.yml

Плейбук deploy.yml выполняет следующие задачи:

  • установка rsyslog и LogWatcher;

  • настройка rsyslog на передачу логов в VictoriaLogs.

Плейбук содержит ряд задач, которые могут завершиться ошибкой:

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

  • Проверка версии пакета rsyslog.

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

    Если директива отсутствует, добавьте в файл /etc/rsyslog.conf строку:

    include(file="/etc/rsyslog.d/*.conf" mode="optional")
  • Проверка конфигурационного файла /etc/rsyslog.conf на присваивание значения переменной workDirectory.

    Если нужная строка отсутствует, добавьте её:

    global(workDirectory="/var/lib/rsyslog")
  • Проверка конфигурационного файла /etc/rsyslog.conf на наличие директивы загрузки модуля imjournal.

    Если нужная строка отсутствует, добавьте её:

    module(load="imjournal" UsePid="system" FileCreateMode="0600" StateFile="imjournal.state")
  • Проверка корректности конфигурационного файла /etc/rsyslog.d/30-vision-vlogs.conf.

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

    • Убедитесь, что установленная версия rsyslog содержит библиотеки imfile, imjournal и другие. Путь к директории с библиотеками зависит от используемого дистрибутива Linux:

      Дистрибутив Директория

      РЕД ОС

      /usr/lib/64/rsyslog/

      Альт Сервер c10f1

      /lib64/rsyslog/

      Astra Linux Special Edition 1.7.3

      /usr/lib/x86_64-linux-gnu/rsyslog/

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

remove.yml

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

Создание инвентарей

Для использования плейбуков требуется инвентарь Ansible. Из-за того, что узлы ПАК МХД.О могут выполнять роль шлюза (Gateway) или сервера хранения (Storage), понадобятся два инвентаря.

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

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

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

  4. Укажите учётные данные для подключения к узлам и повышения привилегий.

  5. Скопируйте созданный инвентарь в файл inventory-gateway.yml и оставьте в нём только узлы, выполняющие роль шлюзов.

  6. Скопируйте созданный инвентарь в файл inventory-storage.yml и оставьте в нём только узлы, выполняющие роль серверов хранения.

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

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

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

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

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

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

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

  7. Если сервер 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 находятся в директории roles/rsyslog/templates/ и её субдиректориях:

  • main.conf.j2 — основные настройки rsyslog;

  • mhdo/mhdo_gateway_v1.8_imfile.j2 — настройки, специфичные для шлюзов;

  • mhdo/mhdo_storage_v1.8_imfile.j2 — настройки, специфичные для серверов хранения.

Шаблоны шлюзов и серверов хранения

Рекомендуется использовать шаблоны mhdo_gateway_v1.8_imfile.j2 и mhdo_storage_v1.8_imfile.j2 в том виде, в каком они поставляются в составе дистрибутива. Если их всё же нужно изменить, сначала создайте их резервную копию.

Шаблон основных настроек

Этот шаг обязателен при использовании отказоустойчивого кластера VictoriaLogs. В противном случае делать описанные настройки не обязательно.

Приведите содержимое файла roles/rsyslog/templates/main.conf.j2 к следующему виду:

{% include "roles/common/templates/warn_header.j2" %}

#module(load="lmnsd_gtls")  # auto-load

global(
  DefaultNetstreamDriver="gtls"
  DefaultNetstreamDriverCertFile="/opt/skala-r/vision/cert/components_default.crt"
  DefaultNetstreamDriverKeyFile="/opt/skala-r/vision/cert/components_default.key"
  DefaultNetstreamDriverCAFile="{{ vision_home_path }}/cert/victorialogs_ca_file.crt"
)

template(
  name="RFC5424WithSD"
  type="string"
  string="<%PRI%>1 %TIMESTAMP:::date-rfc3339% %HOSTNAME% %APP-NAME% %PROCID% %MSGID% [ filename=\"%$!metadata!filename%\" ] %msg%\n"
)

ruleset(name="forward_to_vision") {
  action(
    type="omfwd"
    Target="127.0.0.1"
    Port="29515"
    Protocol="tcp"
    StreamDriver="gtls"
    StreamDriverMode="1"
    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"
  )
  stop
}

{% include mhdo_role_template %}

{% for tpl_path in rsyslog.extra_templates %}

{% include tpl_path %}

{% endfor %}

Если для подключения к VictoriaLogs будут использоваться собственные сертификаты, в значениях параметров DefaultNetstreamDriverCertFile и DefaultNetstreamDriverKeyFile укажите пути к файлам сертификата и его ключа соответственно.

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

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

  2. Запустите плейбук deploy.yml с инвентарём, содержащим описания шлюзов:

    ansible-playbook \
       -i /path/to/inventory-gateway.yml \
       deploy.yml
  3. Выберите шаблон для шлюзов.

  4. Запустите плейбук deploy.yml с инвентарём, содержащим описания серверов хранения:

    ansible-playbook \
       -i /path/to/inventory-storage.yml \
       deploy.yml
  5. Выберите шаблон для серверов хранения.

Удаление инвентаря

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