8(499)-709-97-83
Работаем с 8:00 до 19:00

Использование Syslog-ng для сбора логов

  • 24 апреля 2015

Очень часто приходится собирать логи с различного сетевого оборудования. Для этого удобно настроить сервис syslog-ng, который занимается сбором и хранением файлов логирования. В этой статье мы расскажем как установить сам пакет syslog-ng, настроить ротацию старых логов и запустить CRON.

Установку будем производить на ОС Ubuntu 14.10

1) Для начала установим ядро syslog-ng

sudo apt-get install syslog-ng-core

2) Далее устанавливаем все необходимые зависимости

sudo apt-get install syslog-ng

3) На всякий случай скопируем основной конфигурационный файл в наш домашний каталог.

sudo cp /etc/syslog-ng/syslog-ng.conf /home/user/syslog-ng.conf

Основной конфигурационный файл для syslog-ng - это /etc/syslog-ng/syslog-ng.conf. На на ОС Ubuntu, так же присутствует собственный файл логирования в каталоге /var/log/. Посмотреть что хранится и записывается в этот файл можно командой:

tail -f /var/log/syslog

Syslogи будут хранится в следующем виде:

  • для каждого устройства будет создан свой файл для хранения логов
  • каждый день создается новый файл с логами, старые файлы будут сжиматься

4) Перейдем к редактированию syslog-ng.conf

В конце файла syslog-ng.conf есть строчка @include "/etc/syslog-ng/conf.d/*.conf", т.е. все конфигурационные файлы, расположенные в каталоге /etc/syslog-ng/conf.d/ будут так же включены в работу. Поэтому проще создать новый файл в каталоге conf.d и назвать, например, "cisco.conf".

Далее необходимо вписать следующее:

##################################
source s_udp {
udp(port(514));
};
##################################

##################################
destination d_CISCO_GW {
file("/var/log/cisco_gw.log");
};
##################################

##################################
filter f_CISCO_GW {
host("192.168.5.254");
};
##################################

##################################
log {
source(s_udp);
filter(f_CISCO_GW);
destination(d_CISCO_GW);
};
##################################

Поясним, что мы написали.

  • "source s_udp" - указываем, какой протокол и порт слушать syslog серверу. По стандарту используем UDP и порт 514. Указывается единожды в файле. Если у вас несколько конфигурационных файлов, то данное поле указывается только в одном.
  • "destination d_CISCO_GW" - указываем в какой каталог складывать логи
  • "filter f_CISCO_GW" - делаем фильтр логов по IP адресу хоста
  • log - отвечает за сборку всех параметров, т.е. какой фильтр брать и куда записать логи.

В этом же файле можно описать и другие устройства, которые вы хотите мониторить при помощи syslog сервера. Примерно это будет выглядеть так:

##################################
source s_udp {
udp(port(514));
};
##################################

##################################
destination d_CISCO_GW {
file("/var/log/cisco_gw.log");
};
destination d_DLINK_GW {
file("/var/log/dlink_gw.log");
};
##################################

##################################
filter f_CISCO_GW {
host("192.168.5.254");
};
filter f_DLINK_GW {
host("192.168.5.253");
};
##################################

##################################
log {
source(s_udp);
filter(f_CISCO_GW);
destination(d_CISCO_GW);
};
log {
source(s_udp);
filter(f_DLINK_GW);
destination(d_DLINK_GW);
};
##################################

Т.е. необходимо просто перечислить все устройства.

5) Далее перезапускаем сервис syslog-ng

sudo service syslog-ng restart

6) Проверим слушает ли наша ОС порт 514. Должны увидеть следующее:

root@syslog: netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 *:syslog *:*

7) Чтобы в реальном времени смотреть что пишется в логи, выполните команду:

sudo tail -f /var/log/cisco_gw.log

8) Чтобы не засорять жесткий диск, необходимо либо удалять старые логи, либо произвести ротацию. Для проведения ротации необходимо создать файл в каталоге /etc/logrotate.d

sudo nano /etc/logrotate.d/cisco_gw

И в него вписать следующее

/var/log/cisco_gw.log {
su root adm
daily
rotate 5
compress
missingok
postrotate
if /etc/init.d/syslog-ng status > /dev/null ; then \
/etc/init.d/syslog-ng reload > /dev/null; \
fi;
endscript
}

Поясним:

  • su root adm - пользователь и группа от кого запускаем скрипт
  • daily - производим ротацию ежедневно
  • rotate 5 - сохраняется последние 5 ротированных файлов
  • compress - сжимаем ротируемый файл
  • missingok - отсутствие указаного файла не является ошибкой
  • postrotate/endscript - проверяем работоспособность демона syslog-ng и перезапускаем его

9) Добавляем ротацию в CRON

sudo crontab -e

И вписываем:

0 0 * * * sudo logrotate -f /etc/logrotate.d/cisco_gw

Т.е. ротация будет происходить каждый день в 0 часов 00 минут.

На этом настройка закончена.

 
Powered by SEO CMS ver.: 23.1 TOP 2 (opencartadmin.com)