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

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

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

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

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

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

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

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

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

postgres=# GRANT CREATE ON SCHEMA public TO fluentd;
postgres=# GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO fluentd;

Если таблица была ранее создана для Termidesk версии младше 6.0, то ее следует изменить:

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

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

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

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

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

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

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

Если файл /etc/fluent/fluentd.conf был ранее создан для Termidesk версии младше 6.0, то его следует изменить в части column_mapping:

column_mapping "time:time,source:source,fqdn:fqdn,sourceType:sourceType,loglevel:loglevel,module:module,message:message"
<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>
    table logs
    column_mapping "time:time,source:source,fqdn:fqdn,sourceType:sourceType,loglevel:loglevel,module:module,message:message"
  </table>
</match>

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

Параметры конфигурирования файла 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,fqdn:fqdn,

sourceType:sourceType,loglevel:loglevel,

module:module,message:message"

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