Як ви реалізували управління журналами на своїх серверах?


13

Я намагаюся з'ясувати, як інші люди реалізують свої системи управління журналами.

У мене є 20-30 серверів Linux і кілька вікон Windows (більшість з них віртуалізовані). Ми використовуємо багато сценаріїв Perl і Bash, щоб виконувати більшість наших автоматизованих завдань, і я намагаюся стандартизувати їх ведення журналів.

Я дивився на log4perl та log4sh для реєстрації сценаріїв та syslog-ng, щоб отримати всі журнали на централізованому сервері реєстрації. Я також читав на спінку, хоча це звучить як корпоративне видання досить дороге, і я можу перейти за ліміт безкоштовної ліцензії на всіх своїх серверах.

Я бачив інші інструменти, такі як зразок та решітка, але я не зовсім впевнений, як всі ці шматки поєднуються разом ... Будь-які рекомендації будуть дуже вдячні!


Відповіді:


8

У мене є близько 30 серверів, і я просто використовую syslog прямого переходу для надсилання всіх журналів на один сервер реєстрації. Для резервного копіювання всі машини також налаштовані зберігати власні журнали локально протягом декількох днів, використовуючи логротат для подбання про обертання та видалення старих журналів.

Кожен з моїх серверів додатків виконує невеликий скрипт perl для надсилання своїх журналів у syslog, який потім пересилається на loghost (сценарій perl нижче).

Тоді у loghost у нас є декілька користувацьких сценаріїв, схожих на logcheck, які в основному спостерігають за вхідними журналами за будь-яким підозрілим.

У нас також є весь електронний лист від кожного хоста, який збирається в одне місце, так що якщо будь-яка програма скаржиться таким чином, ми отримуємо всі повідомлення. Це теоретично може перейти до однієї поштової скриньки, на яку програма може діяти та аналізувати.

Ось мій сценарій perl реєстрації. Він працює за допомогою підключення до нього виводу програми, а потім він систематизує висновок і виплює його назад, щоб ви могли надіслати його в інше місце (я надсилаю в мультилог). Ви також можете надати йому -q можливість просто перейти до syslog.

#!/usr/bin/perl

use Sys::Syslog;
use Getopt::Long;

$SERVER_NAME = `hostname`;
chomp $SERVER_NAME;
$FACILITY = 'local0';
$PRIORITY = 'info';

GetOptions ('s=s' => \$SERVER_NAME, 'f=s' => \$FACILITY, 'p=s' => \$PRIORITY, 'q+' => \$quiet);

#print "$SERVER_NAME\n$FACILITY\n$PRIORITY\n";

#Sys::Syslog::setlogsock('unix');
openlog ($SERVER_NAME,'ndelay',$FACILITY);

if (!($quiet)) {syslog($PRIORITY,"Logging Started -- Logger version 1.1");}

$| = 1;

while (<>) {
    if (!($quiet)) {print $_ unless $_ =~ /^\s+$/};
    chomp;
    syslog($PRIORITY,$_) if $_;
}

closelog;

$| = 0;

Сценарій досить зручний, але за допомогою syslog на клієнтах і syslog-ng на сервері (або навіть syslog-ng на клієнтах) ви можете отримати цю функціональність з більшим контролем над фільтруванням журналів.
thepocketwade

@thepocketwade: Дуже правда. Мені просто ніколи не була потрібна додаткова функціональність.
jedberg

2

Хоча я ще цього не реалізував, я планую перенести всі мої генеруючі машини на журнал до rsyslog та впровадити сервер типу бастіону, який буде функціонувати як колектор системних журналів. Звідси я думаю, що безкоштовна версія Splunk може зробити все, що потрібно, щоб витягнути інформацію.

Тепер просто для його втілення ...


2

Я використовую центральний хост syslog. Кожна крайова система надсилає * .debug до центрального логостепу. Центральний хост syslog запускає syslog-ng і має правила поділу журналів, щоб кожна машина генерувала власні файли, названі на цей день. Він також скидає все в один файл, проти якого я запускаю нащадка logcheck.sh.

Раз на день я запускаю компакт-журнал, який збирає журнали, старші 7 днів, і видаляє все, що старше 28 днів. Між ними, журнали передбачають очікуваний термін служби 35 днів на сервері, а це означає, що всі журнали повинні перетворювати його на щомісячне резервне копіювання, де їх можна буде відновити до двох років.

Це об'єм зберігання даних, але, здається, це найкращий спосіб забезпечити покриття.


У мене схожа система, але мій сервер журналів має заздалегідь задані папки (mail, auth, catchall), до яких журнали фільтруються. Якось я розглядав використання спанч. Я міг легко пересилати дані з журнального сервера на сервер, що випав.
thepocketwade

1

Для централізованого ведення журналу я дуже рекомендую LogZilla . Ми використовуємо його вже більше року і абсолютно любимо. Користувальницький інтерфейс надзвичайно простий у вивченні, користування та встановлення знадобилося мені близько години.

Навіть якщо ви цього не зробите, ви дійсно повинні намагатися піти від моніторингу, заснованого на сценаріях, тому що саме ви отримуєте моніторинг Що ви повинні намагатися досягти - це управління. Усунення неполадок у програмі Top talkers тощо значно зменшить кількість "пожеж", спричинених моніторингом на основі сценаріїв. Ось дуже гарна стаття про управління системою:

http://www.cisco.com/en/US/technologies/collateral/tk869/tk769/white_paper_c11-557812.html


0

Ми використовуємо прилад від LogLogic для ведення журналів на нашому підприємстві. Він заснований на syslog, тому всі * nix-коробки не мають жодних проблем використовувати його; є невеликий додаток, який потрібно встановити на серверах Windows. Я можу шукати будь-що, що мені хочеться, включаючи запити REGEX, і, здається, він може впоратися з досить великим навантаженням (тільки наша установка Active Directory генерує неприємну кількість трафіку).


1
Просто уважно оцінюйте їхню продукцію ... Я отримав від них близько 10 дзвінків / електронних листів, вони ДУЖЕ наполегливі.
Flamewires

Я думаю, що це можна сказати майже для будь-якого постачальника в наші дні і не має жодного стосунку до власне функціональності продукту. Ви не хочете знати, як часто сюди стукають / дзвонять DELL, EMC тощо.
Tatas

0

Для централізованого сервера реєстрації даних ви можете подивитися на мій проект Octopussy .

На початку багато роботи, але після того, як ви можете зробити багато речей з цими журналами!


0

Ось підручник, який я написав, який охоплює всі аспекти централізованого ведення журналів та аналізу.

Посилання: http://crunchtools.com/centralizing-log-files/


Я також дивлюсь на log4sh для проекту, який я маю внутрішньо (зрештою, має бути відкритим джерелом, але працює зараз), що називається scriptlog, по суті, ви запускаєте його перед командами, які вам важливі для виводу, і він робить деякі магічні речі, такі як додано ПОПЕРЕДЖЕННЯ string або CRITICAL, він також має плагін nagios для його моніторингу. Опублікую, коли я вийду
отець Linux
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.