Огранизация сервера syslog
Добавлено: 08 ноя 2011, 20:37
Предыстория:
Порой случается так, что оборудование умерло, и посмотреть что было не реально. Специально для таких случаев многое оборудование умеет хранить сообщения на удалённом сервер логов.
Мне же надо было обрабатывать события с разного оборудования в одном месте, что бы иметь целостную картину происшествий
Лиетратура:
В основном это http://www.lissyara.su/articles/freebsd ... co+syslog/ а так же активнй поиск в internet + tcpdump
Реализация:
Для того, что бы не изобретать велосипед было решено использовать уже существующий и работающий сервер syslog - он есть на каждой машине с FreeBSD но только случает не всю сеть, а локальную машину. Потому первое что делаем - это разрешаем ему слушать всё вокруг - для этого в /etc/rc.conf добавляем следующие строки
Таким образом мой сервер слушает всю сеть 192.168.* и syslog сообщения могут приходить с любого порта. Далее я правил файл /etc/syslog.conf в котором прописал свои железки
То есть в самое начало мы добавляем +@ потом не трогаем что было уже написано до нас и в конец дописываем свои железки после ! - для того что бы каждая железка писала в свой персональный лог мы ставим + и пишем ИП своей железки. В случае если у нас работает обратная зона DNS - пишем имя.
Так же не забываем создать логфайл и дать на него соответствующие права, например так
После всех преобразований надо перестартовать сервер
Вот и всё - и идеале это всё работает и всё хорошо...
Траблешотинг:
Редко всё бывает совсем идеально. Если вы всё настроили, но у вас нет ничего в логах можно посмотреть - идут ли к вам вообще сообщения - для этого на сервере где стоит syslog надо запустить следующую команду
ИП, естественно, должен быть вашей железяки, которая должна отправлять вам логи. Если она вам их отправляет вы увидите что-то типа
Тут ключевое слово syslog - если вы его увидели, значит к вам сообщения приходят. Тогда давайте смотреть почему они не подпадают под наши правила - для этого давайте разрешим приём любых сообщений сервером - в файл /etc/syslog.conf дописываем такое правило
Перестартуем сервер логов
и смотрим в файлик что у нас там будет, делая выводы почему не попадает под наш фильтр
Советы:
1) На некоторых железках (свитчи) я столкнулся с тем, что они не отправляли логи пока явно не указал через какой интерфейс их отправлять
2) local2.* - это я выбрал для себя что бы различалось - этот локал может меняться от 0 до 7 - например я ставлю для разных групп устройств разные local
3) Ту +@ что мы добавили нельзя коментить # - перестаёт работать - надо удалять - это на случай если решите вернуть как было
4) Ну и главное - оно работает - если у вас не получилось - вы что-то не так делаете! Я вот с этим просидел 2 дня )))))
Порой случается так, что оборудование умерло, и посмотреть что было не реально. Специально для таких случаев многое оборудование умеет хранить сообщения на удалённом сервер логов.
Мне же надо было обрабатывать события с разного оборудования в одном месте, что бы иметь целостную картину происшествий
Лиетратура:
В основном это http://www.lissyara.su/articles/freebsd ... co+syslog/ а так же активнй поиск в internet + tcpdump
Реализация:
Для того, что бы не изобретать велосипед было решено использовать уже существующий и работающий сервер syslog - он есть на каждой машине с FreeBSD но только случает не всю сеть, а локальную машину. Потому первое что делаем - это разрешаем ему слушать всё вокруг - для этого в /etc/rc.conf добавляем следующие строки
Код: Выделить всё
syslogd_enable="YES"
syslogd_flags="-a 192.168.0.0/16:*"
Код: Выделить всё
#начало файла
+@
#
# тут тело - то что уже было
#
# ну и в конец добавляем
!
+msk.cisco.stniva.ru
local2.* /var/log/cisco/192_168_28_1.log
+gw.cisco.stniva.ru.0.168.192.in-addr.arpa
local2.* /var/log/cisco/192_168_0_10.log
+stniva.cisco.stniva.ru
local2.* /var/log/cisco/192_168_0_1.log
Так же не забываем создать логфайл и дать на него соответствующие права, например так
Код: Выделить всё
mkdir /var/log/cisco
touch /var/log/cisco/192_168_28_1.log
chmod 644 /var/log/cisco/192_168_28_1.log
Код: Выделить всё
killall -9 syslogd && syslogd
Траблешотинг:
Редко всё бывает совсем идеально. Если вы всё настроили, но у вас нет ничего в логах можно посмотреть - идут ли к вам вообще сообщения - для этого на сервере где стоит syslog надо запустить следующую команду
Код: Выделить всё
tcpdump host 192.168.0.18
Код: Выделить всё
20:39:46.070136 IP msk.cisco.stniva.ru.57678 > stat.stniva.ru.syslog: SYSLOG local2.notice, length: 139
20:39:46.070745 IP msk.cisco.stniva.ru.57678 > stat.stniva.ru.syslog: SYSLOG local2.notice, length: 111
20:39:47.065730 IP msk.cisco.stniva.ru.57678 > stat.stniva.ru.syslog: SYSLOG local2.info, length: 120
Код: Выделить всё
+*
*.*/var/log/cisco/all.log
Код: Выделить всё
killall -9 syslogd && syslogd
Советы:
1) На некоторых железках (свитчи) я столкнулся с тем, что они не отправляли логи пока явно не указал через какой интерфейс их отправлять
2) local2.* - это я выбрал для себя что бы различалось - этот локал может меняться от 0 до 7 - например я ставлю для разных групп устройств разные local
3) Ту +@ что мы добавили нельзя коментить # - перестаёт работать - надо удалять - это на случай если решите вернуть как было
4) Ну и главное - оно работает - если у вас не получилось - вы что-то не так делаете! Я вот с этим просидел 2 дня )))))