Wie haben Sie die Protokollverwaltung auf Ihren Servern implementiert?

13

Ich versuche herauszufinden, wie andere Leute ihre Protokollverwaltungssysteme implementieren.

Ich habe 20-30 Linux-Server und ein paar Windows-Boxen (die meisten sind virtualisiert). Wir verwenden viele Perl- und Bash-Skripte, um die meisten unserer automatisierten Jobs auszuführen, und ich versuche, deren Protokollierung zu standardisieren.

Ich habe mich mit log4perl und log4sh befasst, um Skripte und Syslog-ng zu protokollieren und alle Protokolle auf einem zentralen Protokollierungsserver abzurufen. Ich habe auch über Splunk nachgelesen, obwohl es so klingt, als ob die Enterprise Edition ziemlich teuer ist und ich mit all meinen Servern möglicherweise über das freie Lizenzlimit hinausgehe.

Ich habe andere Tools wie Swatch und Logcheck gesehen, bin mir aber nicht ganz sicher, wie all diese Teile zusammenpassen ... Über Empfehlungen würde ich mich sehr freuen!

Edward
quelle

Antworten:

8

Ich habe ungefähr 30 Server und verwende einfach syslog, um alle Protokolle an einen einzigen Protokollierungsserver zu senden. Für die Sicherung sind alle Computer außerdem so konfiguriert, dass sie ihre eigenen Protokolle einige Tage lokal speichern. Mithilfe von logrotate können Sie die Rotation und das Löschen alter Protokolle erledigen.

Jeder meiner Anwendungsserver führt ein kleines Perl-Skript aus, um seine Protokolle an syslog zu senden, das sie dann an den loghost weiterleitet (Perl-Skript unten).

Dann haben wir auf dem loghost einige benutzerdefinierte Skripte, die logcheck ähneln und die eingehenden Protokolle grundsätzlich auf verdächtige Ereignisse überwachen.

Wir haben auch alle E-Mails von jedem Host an einem Ort, sodass wir alle Nachrichten erhalten, wenn sich ein Programm auf diese Weise beschwert. Dies könnte theoretisch zu einer einzelnen Mailbox gehen, auf die ein Programm reagieren und die es analysieren könnte.

Hier ist mein Logging Perl Skript. Es funktioniert, indem es die Ausgabe des Programms in das Programm leitet, die Ausgabe dann sysloggt und wieder ausspuckt, damit Sie sie an einen anderen Ort senden können (ich sende sie an Multilog). Sie können ihm auch die Option -q geben, um einfach zu syslog zu wechseln.

#!/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;
jedberg
quelle
Das Skript ist ziemlich praktisch, aber mit syslog auf Clients und syslog-ng auf einem Server (oder sogar syslog-ng auf Clients) können Sie diese Funktionalität mit mehr Kontrolle über das Filtern der Protokolle erhalten.
thepocketwade
@thepocketwade: Sehr wahr. Ich habe die zusätzliche Funktionalität einfach nie gebraucht.
Jedberg
2

Obwohl ich es noch nicht implementiert habe, plane ich, alle meine Maschinen, die Protokolle generieren, auf rsyslog zu verlagern und einen Server vom Typ Bastion zu implementieren, der als Kollektor für Syslogs fungiert. Von dort aus kann die kostenlose Version von Splunk alles, was ich brauche, um Informationen abzurufen.

Jetzt nur um es umzusetzen ...

Matt Simmons
quelle
2

Ich benutze einen zentralen Syslog-Host. Jedes Edgesystem sendet * .debug an den zentralen Loghost. Der zentrale Syslog-Host führt syslog-ng aus und verfügt über Regeln zum Teilen von Protokollen, sodass jeder Computer seine eigenen Dateien generiert, die für diesen Tag benannt sind. Es speichert außerdem alles in einer einzelnen Datei, für die ich einen Nachkommen von logcheck.sh ausführe.

Einmal am Tag führe ich einen Log-Compacter aus, der alle Logs, die älter als 7 Tage sind, komprimiert und alle Logs löscht, die älter als 28 Tage sind. Zwischen den beiden gibt es Protokollen eine erwartete Lebensdauer von 35 Tagen auf dem Server, was bedeutet, dass alle Protokolle in monatlichen Backups gespeichert werden sollten, wo sie für bis zu zwei Jahre wiederhergestellt werden können.

Es ist speicherintensiv, scheint jedoch der beste Weg zu sein, die Abdeckung sicherzustellen.

David Mackintosh
quelle
Ich habe ein ähnliches System, aber mein Protokollserver verfügt über vordefinierte Ordner (Mail, Auth, Catchall), in die Protokolle gefiltert werden. Irgendwann habe ich mich mit Splunk befasst. Ich könnte Daten vom Protokollbediener zum Splunkbediener leicht weiterleiten.
thepocketwade
1

Für die zentrale Protokollierung würde ich LogZilla sehr empfehlen . Wir benutzen es seit über einem Jahr und lieben es absolut. Die Benutzeroberfläche ist sehr einfach zu erlernen und zu verwenden. Die Installation dauerte ungefähr eine Stunde.

Selbst wenn Sie dies nicht tun, sollten Sie wirklich versuchen, sich von der skriptbasierten Überwachung zu lösen, da Sie genau diese erhalten ... Überwachung. Was Sie versuchen sollten, ist Management. Durch das Reparieren von Problemen mit Top-Talkern usw. wird die Anzahl der durch die Skript-Überwachung ausgelösten "Brände" erheblich reduziert. Hier ist ein sehr guter Artikel zum Syslog-Management:

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

Clayton Dukes
quelle
0

Wir verwenden eine Appliance von LogLogic für unsere Enterprise-Protokollierung. Es basiert auf Syslog, sodass alle * nix-Boxen problemlos damit umgehen können. Es gibt eine kleine App, die auf Windows-Servern installiert werden muss. Ich kann nach allem suchen, was ich will, einschließlich REGEX-Abfragen, und es scheint in der Lage zu sein, einiges an Last zu bewältigen (allein unser Active Directory-Setup erzeugt eine unglaubliche Menge an Datenverkehr).

Tatas
quelle
1
Seien Sie vorsichtig bei der Bewertung ihrer Produkte ... Ich habe ungefähr 10 Anrufe / E-Mails von ihnen erhalten, sie sind SEHR beständig.
Flamewires
Ich denke, dass dies heutzutage für nahezu jeden Hersteller gesagt werden kann und keinen Einfluss auf die eigentliche Funktionalität des Produkts hat. Sie möchten nicht wissen, wie oft DELL, EMC usw. hier anklopfen / anrufen ...
Tatas
0

Für den zentralen Protokollierungsserver können Sie sich mein Octopussy- Projekt ansehen .

Am Anfang ist es eine Menge Arbeit, aber nachdem Sie eine Menge Dinge mit diesen Protokollen machen können!

sebthebert
quelle
0

Hier ist ein Tutorial, das ich geschrieben habe und das alle Aspekte der zentralen Protokollierung und Analyse abdeckt.

Link: http://crunchtools.com/centralizing-log-files/

Fatherlinux
quelle
Ich schaue mir auch log4sh für ein Projekt an, das ich intern habe (irgendwann als Open-Source-Projekt, das aber jetzt läuft). Es heißt Skriptprotokoll. Im Wesentlichen führen Sie es aus, bevor Befehle, deren Ausgabe Sie interessieren, und es führt einige magische Dinge aus, wie das Hinzufügen einer WARNUNG string oder CRITICAL string, es gibt auch ein Nagios-Plugin, um es zu überwachen. Werde posten, wenn ich es raus bekomme
Fatherlinux