Skip to main content

Настройка 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:

image.png

Дополнительная информация

Обычно в конфиграции /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));
};