Настройка узла «Ретранслятора» с ПО 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>
Перечень параметров, задающихся через файл, приведен в таблице.
| Параметр | Значение по умолчанию | Описание | |
|---|---|---|---|
Секция | |||
@type | forward | Параметр менять не рекомендуется | |
port | 24224 | Порт прослушивания входящих событий | |
bind | 0.0.0.0 | IP-адрес прослушивания входящих событий | |
Секция | |||
log_level | debug | Категория служебных сообщений для журналирования событий ПО Fluentd. Возможные значения:
| |
Секция | |||
@type | sql | Параметр менять не рекомендуется | |
host | 192.0.2.33 | IP-адрес или полное доменное имя БД для сохранения событий | |
port | 5433 | Порт подключения к БД для сохранения событий | |
database | fluentd_logs_db | Наименование БД для сохранения событий | |
adapter | postgresql | Параметр изменять не рекомендуется | |
username | fluentd | Имя пользователя БД для подключения к ней | |
password | tufotukur | Пароль для подключения к БД | |
Секция | |||
logs | не задано | Наименование таблицы БД для сохранения событий | |
column_mapping |
| Параметр распределяет значения событий, полученных от фермы Termidesk в поля таблицы «logs» | |