: | : |
‹ | › | |||||
Пн | Вт | Ср | Чт | Пт | Сб | Вс |
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
хоба