Поиск по этому блогу

пятница, 9 сентября 2016 г.

Syslog per host

Дано:
Имеется порядко 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.

    Необходимые настройки:
    # 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. здесь нет никакого секретного знания, просто заметка для себя. Оставляйте свои дополнения в комментариях, если где-то ошибся поправлю.

    Комментариев нет:

    Отправить комментарий