Cisco: logging to syslogd

Logs are just data… Processed and analyzed, they become information.

Задача: централизованный сбор и хранение логов используя базовые возможности оборудования Cisco Systems, операционной системы FreeBSD и стандарт syslog.

В отличие от наиболее часто предлагаемого в интернете варианта – складывать все логи в один файл, мы будем придерживаться лозунга “каждой железке по собственному логу”. Полагаю, не стоит объяснять плюсы от такого решения, потому что только плюсы здесь и наблюдаются.

В базовом комплекте FreeBSD идёт демон который полностью удовлетворит задачу – syslogd, с настройки него и начнём.

Этап 1: разбираемся с локальными логами

Так как машина полностью отдана под логирование, стандартные настройки

можно заменить на

таким образом все локальные логи будут собираться в один файл – /var/log/all.log

Этап 2:  настройка обработки логов для первого сетевого устройства

Мы будем различать наши устройства по IP-адресам и каждая секция конфигурационного файла будет начинаться с указания онного

Если мы хотим чтобы все syslog-сообщения с устройства 10.0.1.12 сохранялись в файл /var/log/sw0.log, то в файле это будет выглядеть так

аналогично и строка для ещё одного хоста

В этом месте есть одна важная деталь: та строчка в которой мы разобрались с локальными логами, включает и все указанные нами хосты, таким образом все события будут дублироваться в файле /var/log/all.log.  Это легко исправить добавив

перед

Итоговый файл будет выглядеть так

Сохраняем файл и пока можем о нём забыть.

Этап 3: настройка демона

  • демон syslogd по умолчанию запускается при старте системы, однако принимает только локальные события благодаря ключу -s указанному в /etc/default/rc.conf, нам следует это изменить убрав данный ключ из списка флагов в файле /etc/rc.conf
  • с помощью ключа “-a” ограничим список хостов которым позволено направлять нам сообщения о событиях
  • ключом “-C” укажем что хотим чтобы файлы логов создавались демоном (права на файл будут 0600)
  • указываем ключ -T, если хотим добавлять к каждому сообщению о событии локальное время хоста на котором запущен syslogd

В итоге строка которую надо добавить в /etc/rc.conf будет выглядеть так:

и перезапустить демон

Отлично, на FreeBSD у нас всё готово, теперь можно переместиться на Cisco.

Минимальная настройка выглядит следующим образом:

В результате чего события уровня notice и выше будут отсылаться на хост 10.0.1.10

Убедится в этом можно административно опустив и подняв интерфейс на switch0, параллельно наблюдая файл /var/log/switch0.log

Обратите внимание что в каждой строке дата указывается дважды. Это происходит потому что syslogd по умолчанию сам добавляет в начале каждого сообщения временную метку и помимо этого switch0 благодаря

делает то же самое. Я предпочитаю timestamp syslogd, как более детальный, поэтому указываю

на стороне cisco.

Есть ещё некоторое количество настроек относительно logging, например указание интерфейса, с которого следует слать сообщения, но в нашем случае это не важно.

Осталось настроить ротацию логов на FreeBSD, в файле /etc/newsyslog.conf

Рассмотрим на примере лога all.log строчки из этого файла

  • /var/log/all.log – имя файла которому необходима ротация;
  • 600 – какие назначить права на файл после его ротации, в данном случае “rw- — —“;
  • 12 – ограничение на количество ротаций данного файла, в данном случае 12 (двенадцать);
  • * – ограничение по размеру файла, как причина для его ротации, в данном случае размер файла не является причиной для его ротации;
  • $M1D0 – условие указывающее когда производить ротацию файла используя либо интервал, либо точное время, либо оба. Используются форматы ISO 8601 и MIT time (Day, week, and month), в данном случае указано делать ротацию каждый первый день каждого месяца (в MIT time);
  • JC – дополнительные флаги, благодаря которым можно проделывать некоторые операции с ротационными файлами, в данном случае файл подвергшийся ротации будет сжат с помощью bzip2 (J) и создан новый (C).

Будем придерживаться этой схемы и для не локальных логов хранить сжатые ротационные архивы в течение 6 месяцев, выполняя ротацию в начале первого дня каждого месяца, таким образом их количество составит не более 6 штук.

Наши изменения в файле /etc/newsyslog.conf

Перезапускаем newsyslog

и дело сделано.

SHARE: Tweet about this on TwitterShare on FacebookShare on VKShare on LinkedInShare on Google+Email this to someone
  • Kettler

    Огромное вам пасибо!