[PYTHON] Transférez les journaux des périphériques réseau vers le serveur syslog et gérez les générations avec logrotate

Aperçu

Les journaux des commutateurs réseau tels que Cisco Catalyst 2960X sont transférés vers le serveur syslog et les journaux reçus sont configurés pour être gérés par génération par logrotate côté serveur syslog. De plus, en prime, un exemple pour générer un fichier pour logrotate avec python est également décrit.

environnement

L'environnement supposé est le suivant. -Catalyseur 2960X (WS-C2960X-48TD-L) Version IOS 15.2 (4) E5 -CentOS Linux version 7.5.1804 (Core) ・ Logrotate-3.8.6-15.el7 ・ Rsyslog-8.24.0-16.el7 ・ Python 2.7.5

adresse IP ・ Commutateur: 192.168.1.1 ・ Serveur Syslog: 192.168.1.100

Dans l'explication suivante, on suppose que l'environnement ci-dessus a déjà été construit.

Paramètres du côté du commutateur Catalyst

Après vous être connecté au commutateur Catalyst, passez en mode privilégié et en mode de configuration globale. Utilisez la commande suivante pour définir le transfert de journal vers le serveur syslog.

switch1(config)#logging host 192.168.1.100

Paramètres côté serveur Sys

paramètres firewalld

Ouvrez le port du service syslog avec firewall-cmd.

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

paramètres rsyslog

Journaux envoyés depuis le commutateur sous / var / log / networkdevices, le répertoire de l'adresse IP du commutateur, On suppose que le nom de fichier de l'adresse IP du commutateur + ".log" est enregistré.

Ajoutez les paramètres suivants à #### TEMPLATES #### dans /etc/rsyslog.conf.

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

Créez également le répertoire / var / log / networkdevices /.

# mkdir /var/log/networkdevices

paramètres de logrotate

/ var / log / networkdevices / Switch IP / Switch IP.log Définit les paramètres de compression et de rotation.

Créez un fichier nommé IP du commutateur sous /etc/logrotate.d/ avec le contenu suivant.

# 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
}

Cela compressera le fichier 192.168.1.1.log et lui permettra de tourner en 31 générations.

prime

Voici un exemple de programme python qui lit un fichier texte contenant une liste d'adresses IP ligne par ligne et génère un fichier de configuration pour logrotate.

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

Transférez les journaux des périphériques réseau vers le serveur syslog et gérez les générations avec logrotate
Gérez les générations de rotation des journaux avec un script shell.
écran et écran partagé avec connexion python et ssh au serveur distant
Créer un environnement Python et transférer des données vers le serveur