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

Настройка источника

Далее на источнике нужно создать файл с параметрами работы службы и изменить конфигурационный файл службы Syslog-ng.

Сначала создается файл с параметрами работы службы:
Создайте файл /etc/syslog-ng/1-unixLogging.conf, например с помощью nano:

nano /etc/syslog-ng/1-unixLogging.conf

Добавьте в файл строки для отправки по UDP на порт 5140:

filter unix_filter {
    not facility(cron, lpr, mail, news, uucp);
};

destination to_kuma_udp {
    udp("<IP_KUMA_Collector>" port(5140));
};

log {
    source(s_src);
    filter(unix_filter);
    destination(to_kuma_udp);
};

Добавьте в файл строки для отправки по TCP на порт 5140:

filter unix_filter {
    not facility(cron, lpr, mail, news, uucp);
};

destination to_kuma_tcp {
    tcp("<IP_KUMA_Collector>" port(5140) log-fifo-size(1000));
};

log {
    source(s_src);
    filter(unix_filter);
    destination(to_kuma_tcp);
    flags(flow-control);
};

Чтобы настроить конфигурационный файл службы с использованием настроек сделанных выше, отредактируйте файл /etc/syslog-ng/syslog-ng.conf, добавив в файл строку:

@include "1-unixLogging.conf"

Перезапустите службу syslog-ng:

systemctl restart syslog-ng

Проверка отправки сообщения

Для проверки получения и отправки сообщения можно воспользоваться командой с тестовым сообщением:

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));
};