Данная статья применима к:
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7)
- Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
- Astra Linux Special Edition РУСБ.10015-16 исп. 1 и исп. 2
- Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1)
- Astra Linux Common Edition 2.12
Службы управления журналами
syslog-ng - служба управления журналами syslog-ng по умолчанию используется в Astra Linux Special Edition x.7, доступна в репозиториях более ранних очередных обновлений;
rsyslog - служба управления журналами rsyslog по умолчанию используется в Astra Linux Common Edition и Astra Linux Special Edition ранее очередного обновления x.7, доступна в основном репозитории Astra Linux Special Edition x.7;
- syslog (sysklogd) - в настоящее время не используется.
Основные возможности служб:
- Получение и передача сообщение по сетевым протоколам TCP/UDP/... с возможностью настройки IP-портов и IP-адресов;
- Загрузка внешних модулей;
- Фильтрация и перенаправление сообщений по имени программы, источнику, номеру процесса и т.д.;
- Удаление ненужных сообщений;
Конфигурация syslog-ng
Расположение файлов конфигурации
- основной файл: /etc/syslog-ng/syslog-ng.conf;
- дополнительные файлы .conf в каталоге /etc/syslog-ng/conf.d.
Базовые принципы функционирования
Служба syslog-ng получает системные сообщения и перенаправляет их в указанные приемники. Сообщения могут приниматься из файлов, удаленных хостов и других источников. Сообщения поступают через один из определенных в конфигурации источников, и пересылаются в один или несколько приемников. Источники и приемники являются независимыми объектами, соединяемые путями передачи (далее - путь). Путь состоит из одного или нескольких источников одного или нескольких приемников. Дополнительно определение пути может содержать:
- фильтры - правила, применяемые для селекции сообщений;
- анализаторы (parsers) - правила для анализа и разбора сообщений;
- модификаторы (rewriting rules) - правила для модификации сообщений.
Базовые принципы конфигурации
Конфигурационный файл состоит из определений объектов. Базовый синтаксис определения объекта:
<тип_объекта> <идентификатор_объекта> { <параметр>(<опция> ...), ...) ...; ... };
где:
- тип объекта - один из типов:
- source - источник;
- destination - приемник;
- log - путь;
- filter - фильтр;
- parser - анализатор;
- rewrite rule - модификатор;
- template - шаблон;
- Идентификатор объекта - уникальное имя, определяющее объект. Имена регистр-зависимые. Имена, совпадающие с зарезервированными словами должны заключаться в кавычки. Рекомендуется использовать имена с префиксами, указывающими на тип объекта, например, префикс s_ для источников, префикс d_ для приемников и т.д. Повторное определение объектов не допускается если не задан параметр @define allow-config-dups 1;
- Параметр - список параметров объекта, заключенный в фигурные скобки. Опции разделяются символом "точка с запятой".
- Опция - модификаторы параметров;
Определение объекта завершается символом "точка с запятой".
Пример: определение объекта типа источник и именем s_internal:
source s_internal { internal(); };
Пример: определение объекта типа приемник:
destination d_net { tcp("127.0.0.1" port(1000) log_fifo_size(1000)); };
Далее на определенные объекты можно ссылаться по его идентификатору, например в определении объекта "путь":
log { source(s_internal); destination(d_net); };
Параметры объектов могут иметь обязательные и необязательные опции. Обязательные опции являются позиционными и должны быть указаны в заданном порядке. Необязательные опции имеют формат
<имя>(<значение>) и могут указываться в любом порядке.
Пример: Источник s_demo_stream имеет один параметр - драйвер источника unix-stream(), который имеет одну обязательную опцию - имя сокета, и необязательные опции - max_connection и group:
source s_demo_stream1 { unix-stream("<path-to-socket>" max-connections(10) group(log)); };
- Объекты могут использоваться до их определения;
- Объекты могут определяться при их использовании (inline), что полезно при однократном применении, например, фильтров;
- Строки, начинающиеся с символа "#" считаются комментариями и игнорируются;
Синтаксис определения пути:
log { source(s1); source(s2); ... optional_element(filter1|parser1|rewrite1); optional_element(filter2|parser2|rewrite2); ... destination(d1); destination(d2); ... flags(flag1[, flag2...]); };
Пример простого пути:
source s_localhost { network(ip(127.0.0.1) port(1999)); }; destination d_tcp { network("10.1.2.3" port(1999) localport(999)); }; log { source(s_localhost); destination(d_tcp); };
В конфигурации syslog-ng поддерживаются глобальные опции для управления использование DNS, форматами временных отметок и других общих параметров. Синтаксис определения опций:
options { option1(params); option2(params); ... };
Пример применения глобальных опций:
Отключения разрешения имен через DNS:
options { use-dns(no); };
Перечень основных источников, приемников и фильтров:
Таблица 1. Драйверы источников
Название | Описание | Комментарий |
---|---|---|
file() | Получение сообщений из указанного файла. | |
internal() | Сообщения, генерируемые службой syslog-ng. | |
network() | Прием сообщений от удаленного хоста по протоколу BSD-syslog в сетях IPv4 и IPv6. Поддерживает сетевые протоколы TCP, UDP и TLS.. | |
pipe() | Чтение сообщений из указанного именованного потока. | |
program() | Запуск указанного приложения и чтение сообщений из его стандартного вывода. | |
sun-stream() sun-streams() | Чтение указанного устройства STREAMS (только в системах Solaris). | |
syslog() | Прием сообщений по протоколу IETF-syslog. | |
system() | Автоматическое определение платформы и сбор стандартных для этой платформы журналов. | |
systemd-journal() | Прямое получение сообщений от служб журналов на платформах, использующих systemd. | |
systemd-syslog() | Получение сообщений через сокет от служб журналов на платформах, использующих systemd. | |
unix-dgram() | Получение сообщений через указанный сокет SOCK_DGRAM. | |
unix-stream() | Получение сообщений через указанный сокет SOCK_STREAM. |
Таблица 2. Драйверы приемников
Название | Описание | Комментарий |
---|---|---|
elasticsearch elasticsearch2 | Отправка сообщений на сервер Elasticsearch. Вариант драйвера elasticsearch2 поддерживает Elasticsearch версия 2 и новее. | |
file() | Запись сообщений в указанный файл. | |
hdfs() | Запись сообщений в указанный файл на узле Hadoop Distributed File System (HDFS). | |
kafka() | Публикация сообщений подписчикам через шину Apache Kafka. | |
loggly() | Отправка сообщения провайдеру Loggly (https://www.loggly.com/). | |
logmatic() | Отправка сообщения провайдеру Logmatic.io (https://logmatic.io/). | |
mongodb() | Сохранение сообщений в СУБД MongoDB. | |
network() | Отправка сообщений на удаленный хост по протоколу BSD через сети IPv4 IPv6. Поддерживает сетевые протоколы TCP, UDP и TLS. | |
pipe() | Запись сообщений в указанный именованный поток. | |
program() | Запуск указанной программы и отправка сообщений на ее стандартный ввод. | |
sql() | Сохранение сообщений в СУБД SQL. Требует установки и настройки СУБД. | |
syslog() | Отправка сообщений на удаленный хост по протоколу IETF-syslog protocol. Поддерживает сетевые протоколы TCP, UDP и TLS. | |
unix-dgram() | Отправка сообщений в формате BSD через указанный сокет SOCK_DGRAM. | |
unix-stream() | Отправка сообщений в формате Linux через указанный сокет SOCK_STREAM. | |
usertty() | Отправка сообщений на терминал указанного пользователя если сессия пользователя активна. |
Таблица 3. Доступные фильтры.
Название | Описание | Комментарий |
---|---|---|
facility() | Фильтрация сообщений по указанному объекту (facility). | |
filter() | Вызов другого фильтра. | |
host() | Фильтрация сообщений по имени хоста-отправителя. | |
inlist() | Фильтрация сообщений по черным и белым спискам в файлах. | |
level() priority() | Фильтрация сообщений по приоритету. | |
match() | Фильтрация по регулярным выражениям, применяемым к заголовку и содержимому сообщения. | |
message() | Фильтрация по регулярным выражениям, применяемым к содержимому сообщения. | |
netmask() | Фильтрация сообщений по IP-адресу хоста-отправителя. | |
program() | Фильтрация сообщений по названию приложения. | |
source() | Фильтрация сообщений по указанному источнику. | |
tags() | Фильтрация сообщений по наличию указанных тегов. |
Конфигурация rsyslog
Расположение файлов конфигурации
- основной файл /etc/rsyslog.conf/;
- дополнительные файлы .conf etc/rsyslog.conf;
См. man rsyslog.conf
Инструмент сбора журналов astra-create-debug-logs
В состав дистрибутивов ОС Astra Linux входит инструмент командной строки astra-create-debug-logs, предназначенный для автоматического сбора архива журналов системных служб.
Для создания архива журналов инструмент должен быть запущен от имени суперпользователя:
Расположение файлов журналов основных служб
Для справки в таблице ниже приведено расположение файлов журналов некоторых наиболее часто используемых служб:
Служба | Путь к файлу журнала |
---|---|
WEB-сервер Apache2 | /var/log/apache2/ |
Система управления печатью Cups | /var/log/cups/ |
Почтовый сервер IMAP/Pop3 Dovecot | Необходимо включить запись в журнал в конфигурационном файле /etc/dovecot/conf.d/10-logging.conf в параметре log_path. |
Почтовый агент Exim4 | /var/log/exim4/ |
Системный журнал Syslog | /var/log/syslog* |
Samba | /var/log/samba/ |
X server | /var/log/Xorg.*.log |
СУБД PostgreSQL | /var/lib/postgres/версия/кластер/pg_log |
Журнал сообщений ядра | /var/log/kern.log |
Журнал доменной службы ALD | /var/log/ald/ |
Двоичные файлы parsec аудита | /var/log/parsec/ |
Система контроля целостности файлов afick | /var/log/afick/ |
Сервер FTP Vsftpd | /var/log/vsftpd.log.* |