[PYTHON] Übertragen Sie die Protokolle von Netzwerkgeräten auf den Syslog-Server und verwalten Sie Generationen mit logrotate

Überblick

Protokolle von Netzwerk-Switches wie Cisco Catalyst 2960X werden auf den Syslog-Server übertragen, und die empfangenen Protokolle werden so eingestellt, dass sie von logrotate auf der Seite des Syslog-Servers generiert werden. Als Bonus wird auch ein Beispiel zum Generieren einer Datei für die Protokollierung mit Python beschrieben.

Umgebung

Die angenommene Umgebung ist wie folgt. -Katalysator 2960X (WS-C2960X-48TD-L) IOS Version 15.2 (4) E5 -CentOS Linux Release 7.5.1804 (Core) ・ Logrotate-3.8.6-15.el7 ・ Rsyslog-8.24.0-16.el7 ・ Python 2.7.5

IP Adresse ・ Schalter: 192.168.1.1 ・ Syslog-Server: 192.168.1.100

In der folgenden Erläuterung wird davon ausgegangen, dass die obige Umgebung bereits erstellt wurde.

Einstellungen auf der Catalyst-Switch-Seite

Wechseln Sie nach dem Anmelden am Catalyst-Switch in den privilegierten Modus und den globalen Konfigurationsmodus. Verwenden Sie den folgenden Befehl, um die Protokollübertragung zum Syslog-Server festzulegen.

switch1(config)#logging host 192.168.1.100

Sys serverseitige Einstellungen

Firewall-Einstellungen

Öffnen Sie den Syslog-Service-Port mit firewall-cmd.

# firewall-cmd --add-service=syslog --zone=public
# firewall-cmd --add-service=syslog --zone=public --permanent

rsyslog-Einstellungen

Vom Switch gesendete Protokolle unter / var / log / networkdevices, dem Verzeichnis der Switch-IP-Adresse, Es wird davon ausgegangen, dass der Dateiname der Switch-IP-Adresse + ".log" gespeichert ist.

Fügen Sie die folgenden Einstellungen zu #### TEMPLATES #### in /etc/rsyslog.conf hinzu.

#### TEMPLATES ####
$template RemoteHost,"/var/log/networkdevices/%fromhost%/%fromhost%.log"

Erstellen Sie außerdem das Verzeichnis / var / log / networkdevices /.

# mkdir /var/log/networkdevices

logrotate Einstellungen

/ var / log / networkdevices / Switch IP / Switch IP.log Nehmen Sie Einstellungen zum Komprimieren und Drehen vor.

Erstellen Sie unter /etc/logrotate.d/ eine Datei mit dem Namen switch IP mit dem folgenden Inhalt.

# pwd
/etc/logrotate.d

# vi 192.168.1.1
/var/log/networkdevices/192.168.1.1/192.168.1.1.log {
        daily
        rotate 31
        compress
        delaycompress
        missingok
        notifempty
        create 0664 root root
}

Dadurch wird die Datei 192.168.1.1.log komprimiert und in 31 Generationen gedreht.

Bonus

Dies ist ein Beispiel für ein Python-Programm, das eine Textdatei mit einer Liste von IP-Adressen zeilenweise liest und eine Konfigurationsdatei für logrotate generiert.

list.txt


192.168.1.1
192.168.2.1
・ ・ ・

sample01.py


#!/usr/bin/env python

f = open('list.txt', 'r')
line = f.readline()

while line:
        af = line.strip()

        file = '/etc/logrotate.d/' + af

        with open(file, 'w') as outp:
                outp.write("/var/log/networkdevices/" + af + "/" + af + ".log {\n")
                outp.write("\tdaily\n")
                outp.write("\trotate 31\n")
                outp.write("\tcompress\n")
                outp.write("\tdelaycompress\n")
                outp.write("\tmissingok\n")
                outp.write("\tnotifempty\n")
                outp.write("\tcreate 0664 root root\n")
                outp.write("}\n")

        line = f.readline()
f.close()

Recommended Posts

Übertragen Sie die Protokolle von Netzwerkgeräten auf den Syslog-Server und verwalten Sie Generationen mit logrotate
Verwalten Sie Protokollrotationsgenerationen mit einem Shell-Skript.
Bildschirm und geteilter Bildschirm mit Python- und SSH-Anmeldung am Remote-Server
Erstellen Sie eine Python-Umgebung und übertragen Sie Daten auf den Server