Отправка событий аудита во внешние системы¶
Для настройки централизованного сбора логов используется скрипт log-aggregation-setup.sh. Он запрашивает параметры подключения к OpenSearch и syslog, после чего автоматически генерирует конфигурацию и запускает Fluentd.
Скрипт обеспечивает сбор и отправку событий аудита действий пользователей из компонентов платформы LCM — GitLab и NetBox — на единый сервер логирования с возможностью однозначной идентификации инициатора каждого события.
Источники логов¶
Fluentd собирает логи из следующих источников:
GitLab Rails — файлы
/var/log/gitlab/gitlab-rails/audit_json.logи/var/log/gitlab/gitlab-rails/production_json.log, тег:gitlab.rails;NetBox — приём логов через HTTP (порт 9880), тег:
netbox.tag.
В syslog отправляются все события, полученные из лог-файлов GitLab.
Отправка в OpenSearch осуществляется по следующим маршрутам:
Источник |
Тег Fluentd |
Индекс OpenSearch |
|---|---|---|
GitLab |
|
|
NetBox |
|
|
Режимы подключения к OpenSearch¶
Скрипт поддерживает следующие режимы подключения к OpenSearch:
обычное HTTP-подключение;
TLS (HTTPS);
TLS без проверки сертификата;
mTLS (клиентские сертификаты);
Basic Authentication.
Настройка отправки логов на внешние серверы¶
Зайдите на LCM-узел по SSH.
Перейдите в каталог
installer/и запустите скрипт выполнив команды:cd installer ./log-aggregation-setup.sh
Скрипт задаст вопросы для настройки подключения к OpenSearch и syslog. Параметры, которые запрашивает скрипт:
Включение OpenSearch:
Enable sending logs to OpenSearch? (y/n) [y]:y— логи будут отправляться в OpenSearch;n— OpenSearch не используется.
Узел и порт OpenSearch:
Enter OpenSearch host (IP or domain): [opensearch]:Укажите доменное имя или IP-адрес сервера OpenSearch, например:
opensearch.example.com.Enter OpenSearch port: [9200]:Укажите порт, на котором доступен OpenSearch.
Включение TLS:
Enable TLS for OpenSearch? (y/n) [n]:n— использовать HTTP;y— включить HTTPS.
Проверка TLS-сертификата сервера:
Verify TLS server certificate? (y/n) [y]:y— Fluentd проверяет сертификат OpenSearch;n— сертификат не проверяется.
Режим
nиспользуйте в следующих случаях:применяется самоподписанный сертификат;
OpenSearch находится за локальным reverse-proxy;
отсутствует корректный CA-файл.
Путь к CA-сертификату:
Path to CA certificate (empty = skip):Укажите путь к Root CA, который подписал сертификат OpenSearch, например:
/installer/data/ca/root/ca.crt.Включение mTLS:
Enable mTLS? (y/n) [n]:n— только TLS (серверный);y— включить клиентские сертификаты.
При выборе
yукажите пути к клиентским сертификатам:Path to client certificate: Path to client key:
Fluentd использует эти файлы для аутентификации, например:
/installer/data/certs/client.crt /installer/data/certs/client.key
Базовая аутентификация:
Enable Basic Auth for OpenSearch? (y/n) [n]:При включении укажите логин и пароль для базовой аутентификации:
OpenSearch username: OpenSearch password:
Включение отправки логов в syslog:
Enable sending logs to rsyslog (syslog)? (y/n) [y]:y— логи будут отправляться в syslog;n— syslog не используется.
Узел, порт и протокол syslog:
Enter rsyslog host: [rsyslog]:Укажите доменное имя или IP-адрес syslog-сервера.
Enter rsyslog port: [514]:Укажите порт, на котором доступен syslog-сервер.
Enter syslog protocol (udp/tcp): [udp]:Укажите протокол, по которому доступен syslog-сервер.
Facility и имя узла:
Enter syslog facility: [local0]:Укажите предпочитаемый параметр
facility.Enter syslog hostname:Укажите имя узла. По умолчанию подставляется hostname узла, на котором запущен скрипт.
Результат выполнения скрипта¶
После ответа на все вопросы скрипт выполняет следующие действия:
Генерирует
fluentd.confс учётом всех выбранных параметров: узел и порт, HTTP/HTTPS, проверка сертификата, CA-файл, клиентские сертификаты, логин и пароль.Создаёт каталог
$INSTALL_HOME/data/fluentd/.При включённом TLS или mTLS копирует все указанные сертификаты в каталог
$INSTALL_HOME/data/fluentd/certs/и монтирует его в контейнер Fluentd.Запускает Fluentd через Docker Compose: контейнер начинает приём логов и автоматически подключается к OpenSearch и/или rsyslog.
Настраивает NetBox для логирования событий: создаёт webhook и event rule, включает отправку событий в Fluentd по адресу
http://fluentd:9880/netbox.tag.
Проверка отправки событий на внешний сервер логирования¶
Для проверки отправки событий на внешний сервер логирования на примере GitLab, выполните следующее действия:
Зайдите на LCM-узел по SSH.
Запустите сниффер сетевого трафика:
sudo tcpdump -eni any port 514 -AvОткройте веб-интерфейс GitLab.
Откройте проект project_k / deployments / <имя региона>.
Отредактируйте любой файл и создайте Merge request с изменениями.
Проверьте вывод сниффера сетевого трафика. Убедитесь, что в выводе
tcpdumpпоявились пакеты на порт 514 — это подтверждает, что Fluentd отправляет syslog-события от GitLab.