При установке SoftWLC на ОС Astra Linux 1.7.4 использовать rsyslog нельзя, т.к. производитель ОС отказался от его использования. Официальная информация.
Таким образом вместо rsyslog потребуется установить и сконфигурировать пакет syslog-ng. При выполнении установки скриптом установщиком данное действие производиться автоматически с учетом типа ОС. При многохостовой или ручной установке потребуется выполнить установку и настройку сервиса вручную.
Способ запуска/остановки
Действие | Команда | Ответ |
---|---|---|
Проверка состояния | systemctl status syslog-ng | Сервис запущен Active: active (running) Сервис не запущен Active: inactive (dead) |
Остановка сервиса | systemctl stop syslog-ng | Сервис успешно остановлен Active: inactive (dead) |
Запуск сервиса | systemctl start syslog-ng | Сервис успешно запущен Active: active (running) |
Перезапуск сервиса | systemctl restart syslog-ng | Сервис успешно перезапущен Active: active (running) |
Конфигурация
Для работы требуются пакеты пакеты syslog-ng и syslog-ng-mod-sql. При однохостовой инсталяции устанавливаются скриптом хэлпером.
При многохостовой требуется установить самостоятельно. В многохостовой инсталяции как правило устанавливается на сервер с EMS, но при необходимости может быть расположен на любом сервере.
Установка пакетов
sudo apt update sudo apt install syslog-ng syslog-ng-mod-sql
Создание файла конфигурации
Файл конфигурации /etc/syslog-ng/conf.d/10-mysql.conf необходимо создать, разрешить прием сообщений от точек доступа и настроить правило приема и обработки сообщений:
### Configuration file for syslog-ng-mod-sql ### Changes are preserved source src_rem { udp(port(514)); tcp(port(514)); }; destination d_mysql { program("/usr/bin/mysql --user=javauser --password='javapassword' --host=127.0.0.1 --port=6033 Syslog < /var/log/mysql.pipe"); pipe ("/var/log/mysql.pipe" template("insert into SystemEvents (Message, Facility,FromHost, FromHostIp, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values ('$MSGONLY', $FACILITY_NUM, '$HOST_FROM', INET_ATON('$SOURCEIP'), $PRI, '$S_YEAR-$S_MONTH-$S_DAY $S_HOUR:$S_MIN:$S_SEC', '$R_YEAR-$R_MONTH-$R_DAY $R_HOUR:$R_MIN:$R_SEC', 1, '$TAGS');") template-escape(yes)); }; log { source(src_rem); destination(d_mysql); };
Создание файла конфигурации systemd
При взаимодействии с БД MySQL сервисом создается файл /var/log/mysql.pipe . Данный файл создается только после отправки хотя бы одного сообщения в БД mysql, до этого сервис будет спамить в лог сообщениями об ошибке из-за отсутствия данного файла. Поэтому в конфигурацию сервиса необходимо добавить отправку хотя бы одного сообщения после перезапуска сервиса, что выполняется средствами systemd.
Создать папку и файл конфигурации /etc/systemd/system/syslog-ng.service.d/99-syslog-ng.conf
[Service] ExecStartPost=logger --server 127.0.0.1 "Start logger"
Перезапуск сервиса
Выполнить команду
sudo systemctl daemon-reload
Перезапустить сервис
sudo systemctl restart syslog-ng
Проверка работы
Передать в лог информацию от "локального" пользователя:
logger "user log local 5"
Информация должны быть зафиксирована в файле журнала /var/log/syslog и не зафиксирована в таблице Syslog.SystemEvents.
Передать лог с удаленного сервера:
logger --server "<IP-адрес сервера приемника>" "user log remote 4"
Информация должны быть зафиксирована в таблице Syslog.SystemEvents и отсутствовать файлах syslog.
Докеризация
Имеется возможность запустить сервис syslog-ng в Docker-контейнере. Для этого необходимо создать файл с настройками docker-compose.yml и .env следующего содержания:
version: "3" services: eltex-syslog-ng: container_name: eltex-syslog-ng image: ${ELTEX_HUB}/eltex-syslog-ng:${SWLC_VERSION} restart: unless-stopped ports: - "514:514/tcp" - "514:514/udp" env_file: - environment/eltex-syslog-ng.env
ELTEX_HUB=hub.eltex-co.ru/softwlc TZ=Europe/Moscow DB_USER=${MYSQL_USER} DB_PASSWORD=${MYSQL_PASSWORD} DB_HOST=eltex-mysql