Настройка Syslog-ng на Unix системах
Информация, приведенная на данной странице, является разработкой команды pre-sales и/или community KUMA и НЕ является официальной рекомендацией вендора.
Для начала необходимо проврить установлена нужная служба Syslog-ng, посмотрим статус службы:
systemctl status syslog-ng
В случае отсутствия службы необходимо установить следующие пакеты:
apt-get install syslog-ng
В случае если служба не запущена:
sudo systemctl start syslog-ng
sudo systemctl enable syslog-ng
Настройка источника событий
В папке /etc/syslog-ng/conf.d/ создайте файл конфигурации (например, 30-kuma-tcp.conf или 30-kuma-udp.conf) со следующим содержанием в зависимости от используемого протокола:
- Для отправки событий по протоколу TCP
# syslog-ng audit forwarding to KUMA (TCP)
# Version: 1
# Date: 26.01.2026
# Purpose: Forward auditd logs without parsing, loss-minimized
source s_audit {
file("/var/log/audit/audit.log"
flags(no-parse) # Читаем audit.log без парсинга (flags(no-parse)), чтобы "не ломать" формат auditd.
follow-freq(1)
tags("tag_audit_log")
persist-name("kuma_audit_source")); # Необходим для сохранения состояния источника между рестартами syslog-ng.
};
template t_audit_format {
template("<134>${ISODATE} ${HOST} auditd ${MSG}\n"); # <PRI> задан вручную, т.к. при flags(no-parse) ${PRI} не извлекается из события. Тег auditd задан руками, иначе будет дефолтное 0d.
template_escape(no);
};
destination d_kuma {
tcp("<IP-адрес/FQDN коллектора KUMA>" port(<Порт коллектора KUMA>)
template(t_audit_format)
disk-buffer(
mem-buf-size(10000) # Размер буфера в RAM, в количестве сообщений. Пока есть место — ничего не пишется на диск. Можно увеличить при большом потоке событий.
disk-buf-size(1G) # Максимальный размер буфера на диске. Когда RAM-буфер будет заполнен, запись продолжится на диск. Можно увеличить при большом потоке событий.
reliable(yes) # Для гарантированной доставки. События не теряются при рестаре syslog-ng, проблем с сетью, перезапуске коллектора.
)
);
};
filter f_audit_kuma {
tags("tag_audit_log");
};
log {
source(s_audit);
filter(f_audit_kuma);
destination(d_kuma);
};
- Для отправки событий по протоколу UDP
# syslog-ng audit forwarding to KUMA (UDP)
# Version: 1
# Date: 26.01.2026
# Purpose: Forward auditd logs without parsing, loss-minimized
source s_audit {
file("/var/log/audit/audit.log"
flags(no-parse) # Читаем audit.log без парсинга (flags(no-parse)), чтобы "не ломать" формат auditd.
follow-freq(1)
tags("tag_audit_log")
persist-name("kuma_audit_source")); # Необходим для сохранения состояния источника между рестартами syslog-ng.
};
template t_audit_format {
template("<134>${ISODATE} ${HOST} auditd ${MSG}\n"); # <PRI> задан вручную, т.к. при flags(no-parse) ${PRI} не извлекается из события. Тег auditd задан руками, иначе будет дефолтное 0d.
template_escape(no);
};
destination d_kuma {
udp("<IP-адрес/FQDN коллектора KUMA>" port(<Порт коллектора KUMA>)
template(t_audit_format)
disk-buffer(
mem-buf-length(10000) # Размер буфера в RAM, в количестве сообщений. Пока есть место — ничего не пишется на диск. Можно увеличить при большом потоке событий.
disk-buf-size(1G) # Максимальный размер буфера на диске. Когда RAM-буфер будет заполнен, запись продолжится на диск. Можно увеличить при большом потоке событий.
)
);
};
filter f_audit_kuma {
tags("tag_audit_log");
};
log {
source(s_audit);
filter(f_audit_kuma);
destination(d_kuma);
};
Далее выполните проверку конфигурации syslog-ng:
syslog-ng -s
Если ошибки при проверке конфигурации отсутствуют перезапустите сервис syslog-ng, выполнив следующую команду:
systemctl restart syslog-ng
Рабочая станция/сервер Linux настроен. События передаются в коллектор KUMA.
Проверка отправки сообщения
Для проверки получения и отправки сообщения можно воспользоваться командой с тестовым сообщением:
logger "testTest"
Это сообщение должно появиться в системном журнале, например /var/log/messages:
Дополнительная информация
Обычно в конфиграции /etc/syslog-ng/syslog-ng.conf в s_src содержится 2 типа журналов
source s_src {
system(); # системный журнал
internal(); # внутренние сообщения журнала syslog-ng
};
Для задания шаблона сообщения можно использовать следующее:
template LogglyFormat { template("<${PRI}>1 ${ISODATE} ${HOST} ${PROGRAM} ${PID} ${MSGID} [TOKEN@41058 tag=\"TAG\" ] $MSG\n");
template_escape(no);
};
destination d_loggly {
tcp("logs-01.loggly.com" port(514) template(LogglyFormat));
};
