: :

ПнВтСрЧтПтСбВс

2018-02-27 10:34:00 25914 4

Настройка сервера Syslog-ng для сбора логов

Syslog-ng - это одно из самых популярных приложений для сбора логов на Unix-системах, которое является альтернативой для привычной для многих Syslog.

Установку будем производить на сервере с операционной системой Ubuntu-16.04

Устанавливаем сервер syslog-ng из репозиториев

sudo apt-get update

sudo apt-get install syslog-ng

При этом будет удален сервер логирования rsyslog, который установлен в системе по-умолчанию. И будет произведена начальная настройка syslog-ng.

Основной конфигурационный файл /etc/syslog-ng/syslog-ng.conf

После установки в нем уже будут настроены основные глодальные опции и ведение логов аналогично тому как их ведет сервер rsyslog по-умолчанию.

Новые записи желательно создавать в файлах в директорий /etc/syslog-ng/conf.d/, окончание файлов на *.conf

Разберемся с синтаксисом и параметрами, в syslog-ng они называеются глобльными объектами.

Sources(Источники) - Откуда syslog-ng получает лог-сообщения.

source "Индификатор" { "параметры";};
  • "Индификатор" - произвольное имя, которое вы присвоите этому объекту;
  • "Параметры" - непосредственно указывается откуда будут получаться лог-сообщения(возможно указать несколько параметров).

Пример:

source s_tcp { tcp(ip(10.25.128.1) port(514)); };

Получение лог-сообщения, приходящие на ip адрес 10.25.128.1, на порт 514, по протоколу tcp.

Возможные значения параметров источников:

  • internal() - Сообщения, которые генерирует сам syslog-ng;
  • unix-stream() - Открыть указанный unix-сокет в SOCK_STREAM режиме и слушать входящие сообщения (unix-stream("/dev/log"); };);
  • unix-dgram() - Открыть указанный unix-сокет в SOCK_DGRAM режиме и слушать входящие сообщения;
  • file() - Открыть указанный файл и прочитать сообщения из него;
  • pipe() - Открыть указанный pipe и прочитать сообщения из него;
  • tcp() - Слушать указанный TCP порт и указанном ip;
  • udp() - Слушать указанный UDP порт и указанном ip;
  • tcp6() - Слушать указанный TCP порт и указанном IPv6;
  • udp6() - Слушать указанный UDP порт и указанном IPv6;

Указанный источник может быть использован в нескольких различных log path. Дляф этого к нему можно обращаться по индификатору. Указание нескольких источников с одинаковым индификаторм, может вызвать проблемы с работой сервера.

Destination(Насзначение) - куда будут отправляться лог-сообщения после обработки их сервером syslog-ng.

Так же состоит из "Индификатора" и "Параметров".

Пример:

destination d_file { file("/var/log/test.log");};

Записывать полученные лог-сообщения в файл "/var/log/test.log"

Возможные значения параметров:

  • file() - Записывать лог-сообщения в указанный файл;
  • fifo(),pipe() - Записывать лог-сообщения в указанный pipe;
  • program() - Запускать указанную программу и отправлять лог-сообщение к ней на вход;
  • sql() - Отправлять сообщение в базу данных. Доступно только в премиум релизе;
  • tcp() - Отправлять сообщение на по протоколу TCP на указанный удаленный хост (ip,port);
  • udp() - Отправлять сообщение на по протоколу UDP на указанный удаленный хост (ip,port);
  • tcp6() - Отправлять сообщение на по протоколу TCP на указанный удаленный хост по протокулу IPv6;
  • udp6() - Отправлять сообщение на по протоколу UDP на указанный удаленный хост по протокулу IPv6;
  • unix-stream() - Отправлять сообщения на указанный unix-сокет;
  • usertty() - Отправлять сообщения в терминал к указанному пользователю, если он залогирован в системе.

Template(Шаблоны) - Используются для определения вида записи лог-сообщений в том виде, который удобен пользователю

template temp_test { template("$ISODATE - $HOST_FROM $MSG\n") };

Запись в виде "описание даты - "хост откуда пришло сообщение" "тело сообщения"

Основные макросы для шаблонов:

  • $ISODATE\$FULLDATE - варианты описания даты;
  • $FACILITY - каким facility сгенерированно сообщение (auth,cron,mail и т.д.);
  • $PRIORITY - уровень сообщения (info,err и т.д.);
  • $HOST - откуда пришло сообщение;
  • $HOST_FROM - последний хост в цепочке;
  • $PROGRAM - имя программы, которая сгенирировала сообщение;
  • $PID - pid процесса;
  • $MSG - тело сообщения.

Шаблоны записываются в объекты destination
Могут указываться в виде полного указания или в виде указания индификатора шаблона.

template temp_test { template("$ISODATE - $HOST_FROM $MSG\n") };
destination d_file { file("/var/log/test.log") template(temp_test)};

ИЛИ

destination d_file { file("/var/log/test.log") template("$ISODATE - $HOST $MSG")};

Log path() - Определяет что делать с входящим сообщением, на основании указанных фильтров.

log { source(s1); filter(f1); destination(d1); flags();};

Пример:

source s_tcp { tcp(ip(10.25.128.1) port(514)); };
destination d_file { file("/var/log/test.log");};
log { source(s_tcp); destination(d_file); flags(final); };

Читать лог-сообщения пришедшие по протоколу TCP на ip адрес 10.25.128.1 и порт 514 и записывать их в файл /var/log/test.log и логировать только в этот destination.

Filters(фильтры) - Используются для определения какие лог-сообщения и куда отправлять.

filter "Индификатор" { "Выражения" ;};

Пример:

filter test { host("test.test.un") and match("Kernel") ;};

Под фильтр попадет сообщение, которое будет содержать слово "Kernel" и прийдет от хоста test.test.un

В фильтрах с параметрами host(), match(), program() возможно исползование регулярных выражений. Параметры можно объединять между собой с помощью логических операторов and, or, not.

Основные выражения для фильтров:

  • facility() - под фильтр попадают сообщения с определенным facility;
  • host() - фильтрация по хосту отправителю;
  • level() or priority() - Фильтрация по уровню сообщения;
  • match() - фильтрация по совпадения в сообщении;
  • program() - фильтрация по имени программы, сгенерировавшей выражение.

Примеры:

source s_udp { udp(ip(0.0.0.0) port(514)); };

destination d_router { file("/var/log/cisco_router.log"); };
destination d_radius { file("/var/log/radius_server.log"); };

filter cisco_filter { host(192.168.0.1); };
filter auth_log { host(192.168.0.100) and match("*auth*"); };

log { source(s_udp); filter(cisco_filter); destination(d_router); };
log { source(s_udp); filter(auth_log); destination(d_radius); }; 

Указываем в качестве источника все сообщения пришедшие по протоколу UDP на любой ip-адрес сервера на порт 514. Сообщения пришедшие с хоста с ip-адресом 192.168.0.1 записываем в файл "/var/log/cisco_router.log", а сообщения пришедшие с хоста с ip-адресом 192.168.0.100 и содержащие в теле сообщения словосочетание "auth", записываем в файл "/var/log/radius_server.log"






Введите ответ:

+

=



ABC

2022-02-17 14:05:52

Все понял с макросами. У вас в примерах не хватает ; после ) Без нее получал ошибку.


ABC

2022-02-17 13:44:27

Где взять "Основные макросы для шаблонов"


Денис

2021-11-02 11:33:57

Благодарю!


1

2019-04-25 11:57:18

хоба