Дано:
Имеется порядко 150 устройств (коммутаторы, файерволы, сервера, оптимизаторы трафика и т.д.), необходимо собирать с них логи по-хостово. Логи будут складываться в папку с текущей датой, храниться 100 дней и папки старше 100 дней удалаться. В качестве имен файлов должны выступать hostname устройств. Два дня "сегодня" и "вчера" файлы не архивированы, остальные в архивированном виде, причем каждый лог-файл архивируется отдельно. Web-морды нет.
Решение:
Сервер будем разворачивать на VMware, для него выделены ресурсы:CPU - 1 процессор Intel(R) Xeon(R) CPU E5606 @ 2.13GHz
Memory -2GB
HDD - 90GB
В качестве ОС будет использоваться Debian 8.2, а качетсве самого сборщика будет выступать штатный rsyslog (версия - 8.4.2). Диск размечен: 15GB выделено под корень и 75 GB под сами логи и примонтированы к /var.
Необходимые настройки:
Сам скрипт
Добавляем этот скрипт в крон, будем запускать его каждый день в 23:59
59 23 * * * root /root/rotetion_log
Если в качетсве имен фалов будут не hostname, а ip адрес, то в файле /etc/host необходимо создать запись вида ip address          hostname
P.S. в день валится порядка 500-700МБ логов, сжимается все это дело где-то до 30-50МБ.
P.P.S. здесь нет никакого секретного знания, просто заметка для себя. Оставляйте свои дополнения в комментариях, если где-то ошибся поправлю.
Имеется порядко 150 устройств (коммутаторы, файерволы, сервера, оптимизаторы трафика и т.д.), необходимо собирать с них логи по-хостово. Логи будут складываться в папку с текущей датой, храниться 100 дней и папки старше 100 дней удалаться. В качестве имен файлов должны выступать hostname устройств. Два дня "сегодня" и "вчера" файлы не архивированы, остальные в архивированном виде, причем каждый лог-файл архивируется отдельно. Web-морды нет.
Решение:
Сервер будем разворачивать на VMware, для него выделены ресурсы:
В качестве ОС будет использоваться Debian 8.2, а качетсве самого сборщика будет выступать штатный rsyslog (версия - 8.4.2). Диск размечен: 15GB выделено под корень и 75 GB под сами логи и примонтированы к /var.
Необходимые настройки:
# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
..........$FileOwner root
$FileGroup root
$FileCreateMode 0644 -> чтобы файл могли читать все пользователи
$Umask 0022
..........#for dynamic create file per host
$template DynFile,"/var/log/devices_logs/%$now%/%HOSTNAME%.log"
..........#for dynamic create file per host
*.* ?DynFile
Сам скрипт
#!/bin/bash
#определяем дату вчера и директорию "вчера"
ydate=`date +%Y-%m-%d -d "yesterday"`
#Запускаемархиватор. Каждый лог-файл в директории станет архивом.
/usr/bin/find $1 /var/log/devices_logs/$ydate/ -exec /bin/gzip -9 {} \;
#удаляем папки старше N дней (100)
find /var/log/devices_logs -type d -mtime +100 -exec rm -rf {} \;
Добавляем этот скрипт в крон, будем запускать его каждый день в 23:59
59 23 * * * root /root/rotetion_log
Если в качетсве имен фалов будут не hostname, а ip адрес, то в файле /etc/host необходимо создать запись вида ip address          hostname
P.S. в день валится порядка 500-700МБ логов, сжимается все это дело где-то до 30-50МБ.
P.P.S. здесь нет никакого секретного знания, просто заметка для себя. Оставляйте свои дополнения в комментариях, если где-то ошибся поправлю.