Настройка узла «Ретранслятора»

Для централизованного сбора событий в «Хранилище журналов» необходимо настроить отдельный узел с установленным ПО Fluentd и СУБД PostgreSQL, выступающей в качестве «Хранилища журналов» (в общем случае данные компоненты могут устанавливаться на отдельный узел, но в рамках настоящей процедуры этот вариант не рассматривается). Для этого на узле «Ретранслятора» нужно создать и настроить БД «Хранилища журналов»:

  • переключиться на пользователя postgres:
sudo su postgres
BASH
  • запустить терминальный клиент СУБД PostgreSQL:
psql
BASH

Если после выполнения команды отображается ошибка «could not change directory to "/home/": Отказано в доступе» и не появляется приглашение командной строки postgres=#, необходимо вместо «su postgres» использовать конструкцию «su - postgres».  Если приглашение postgres=# появилось, то сообщение об ошибке можно проингорировать.

  • используя интерактивный интерфейс терминального клиента СУБД, создать БД fluentd_logs_db (символ ; в конце строки при работе с интерактивным интерфейсом обязателен):
postgres=# CREATE DATABASE fluentd_logs_db;
BASH
  • создать пользователя fluentd с паролем tufotukur для дальнейшего подключения к БД:
postgres=# CREATE USER fluentd WITH PASSWORD 'tufotukur';
BASH

В приведенной команде имя пользователя и пароль используются в качестве примера. Имя пользователя и пароль должны задаваться в соответствии с внутренними стандартами организации по применению парольной защиты. Для задания пароля разрешено использовать только латинские буквы A-Z, a-z, цифры 0-9 и символы $!@%^&#_-=+~`;:.,?()*{}[]\|/.

  • назначить права по использованию БД fluentd_logs_db созданному пользователю fluentd:
postgres=# GRANT ALL PRIVILEGES ON DATABASE fluentd_logs_db TO fluentd;
BASH
  • подключиться к БД fluentd_logs_db:
postgres=# \c fluentd_logs_db
BASH
  • создать таблицу logs:

При использовании СУБД PostgreSQL версии выше 11 могут понадобиться дополнительные права для схемы public. Для предоставления прав нужно выполнить:

postgres=# GRANT CREATE ON SCHEMA public TO fluentd;
postgres=# GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO fluentd;
BASH
fluentd_logs_db=# CREATE TABLE logs (
    id SERIAL PRIMARY KEY,
    time timestamp with time zone NOT NULL,
    source VARCHAR(255) NOT NULL,
    "sourceType" VARCHAR(255) NOT NULL,
    loglevel VARCHAR(255) NOT NULL,
    module VARCHAR(255) NOT NULL,
    message TEXT NOT NULL
);
BASH
  • назначить права по использованию таблицы пользователю fluentd:
fluentd_logs_db=# GRANT ALL PRIVILEGES ON TABLE logs TO fluentd;
BASH
  • выйти из интерактивного интерфейса терминального клиента СУБД:

postgres=# \q
BASH
  • выйти из сеанса пользователя postgres:
exit
BASH

После создания БД нужно создать и настроить «Ретранслятор»:

  • установить ПО Fluentd на узел «Ретранслятора» согласно документации https://docs.fluentd.org/;
  • установить плагины fluent-plugin-sql и pg, доступ по ссылке

    https://github.com/fluent/fluent-plugin-sql

    ;
  • отредактировать файл /etc/fluent/fluentd.conf:

Здесь и далее примеры IP-адресов приведены в соответствии с RFC 5737. Указанные IP-адреса должны быть заменены на актуальные, используемые согласно схеме адресации, принятой в инфраструктуре организации.

<source>
  @type forward
  port 24224
  bind 0.0.0.0
</source>

<system>
  log_level debug
</system>

<match termidesk.*>
  @type sql
  host 192.0.2.33
  port 5433
  database fluentd_logs_db
  adapter postgresql
  username fluentd
  password tufotukur

  <table>
    logs
    column_mapping "time:time,source:source,sourceType:sourceType,loglevel:loglevel,module:module,message:message"
  </table>
</match>
BASH

Перечень параметров, задающихся через файл, приведен в таблице.

Параметры конфигурирования файла fluentd.conf

ПараметрЗначение по умолчаниюОписание

Секция source

@typeforward

Параметр менять не рекомендуется

port24224

Порт прослушивания входящих событий

bind0.0.0.0

IP-адрес прослушивания входящих событий

Секция system

log_leveldebug

Категория служебных сообщений для журналирования событий ПО Fluentd.

Возможные значения:

  • debug;
  • info;
  • warn;
  • error

Секция match

@typesql

Параметр менять не рекомендуется

host192.0.2.33

IP-адрес или полное доменное имя БД для сохранения событий

port5433

Порт подключения к БД для сохранения событий

databasefluentd_logs_db

Наименование БД для сохранения событий

adapterpostgresql

Параметр изменять не рекомендуется

usernamefluentd

Имя пользователя БД для подключения к ней

passwordtufotukur

Пароль для подключения к БД

Секция table

logsне задано

Наименование таблицы БД для сохранения событий

column_mapping"time:time, source:source, sourceType:sourceType, loglevel:loglevel, module:module, message:message"

Параметр распределяет значения событий, полученных от фермы Termidesk в поля таблицы «logs»