Firewall Log bei bestimmter Größe zippen und neu anfangen!

matthias.conf

matthias.conf

FANATiC
Also folgendes liegt vor:
Unsere Sonicwall hier loggt ihren gesamten Traffic. Im moment läuft das script so, dass am Ende jeden Monats das Logfile gezippt, in einen Ordner verschoben und ein neues angefangen wird. Nur haben wir leider ein 2 Gigabyte File Maximum und manchmal kommts vor, dass die Log Datei größer als 2 GB wird.

Also würd ichs gerne so machen, das wenn die Log Datei eine Größe von sagen wir mal 1,8GB überschreitet, dieses auch gezippt wird, in einen Ordner vverschoben wird und ein neues angefangen wird, wie am Monatsanfang eben. Nur hätte man dann nach einem "anstrengenden" Monat :devil: quasi 2 Zip Dateien. Achja, die Namen sollten dann irgendwie XXX_01.gz und XXX_02.gz heissen oder so...kann mir jemand helfen?

Hier das bisherige script:
Code:
#!/bin/bash

# Variablen festlegen

YEAR=`date +%Y`
DAY=`date +%m%d`
YESTERDAY=`date -d '-1 days' +"%Y%m%d"`
WEEKDAY=`date +%A`
DIRSONICMS=/path/to/
DIRSONICMSARCHIV=/path/to/archiv/$YEAR
FILESERVERARCHIV=/mnt/fileserver/

# Stoppen des Syslog Daemon

/sbin/rcsyslog stop

# Ist ein Logfile vorhanden, wird dieses gezippt

  for FILE1 in sonicwall
      do
      if [ -e $DIRSONICMS/$FILE1 ]
         then
         if [ ! -d $DIRSONICMSARCHIV/$FILE1 ]
            then
            mkdir -p $DIRSONICMSARCHIV/$FILE1.$DAY
         fi
         mv $DIRSONICMS/$FILE1 $DIRSONICMSARCHIV/$FILE1/$FILE1.$DAY
         /bin/gzip $DIRSONICMSARCHIV/$FILE1/$FILE1.$DAY
      fi
  done

# Logdateibackup auf dem Fileserver

mkdir -p $FILESERVERARCHIV/$YEAR
cp $DIRSONICMSARCHIV/$FILE1/$FILE1.$DAY.gz /$FILESERVERARCHIV/$YEAR

# Starten des Syslog Daemon

/sbin/rcsyslog start

Das "/path/to/" ist keinesfalls der echte Pfad, habs nur etwas anonymer gemacht :P
 
Zuletzt bearbeitet:
Eine Idee, wie du das mit deinem Script lösen kannst, habe ich nicht anzubieten. Aber auf jeden Fall kann logrotate diese Aufgabe übernehmen - mit Größenbeschränkung und Kompression...
 
Danke für die fixe Antwort! Sollte es per Skript einfach zu umständlich sein oder was auch immer, werd ich bestimmt drauf zurückkommen.

Vorrangig wäre mir allerdings die Lösung per Skript lieber.
.
.
.
EDIT (autom. Beitragszusammenführung) :
.

ich hab mir das gerade mal mit diesem logrotate angeguckt, im prinzip nicht schlecht, aber für meine zwekce hier denke ich ungeeignet...

alles schön und gut mit dem monthly, size, compress etc. aber wie kann ich ihm sagen, dass wenn eine file über 1,8gb gross wird, er ne neue anfängt und eine zahll hintendranhängt? und dann trotzdem nächsten monat ne neue anfängt, selbst wenn die alte erst 300MB gross ist, da sehe ich gerade mal das problem...

oder gibts hier logrotate experten? ;)
 
Zuletzt bearbeitet:
ungetestet, aber vielleicht funktioniert das ja so:
Code:
/pfad/log {
rotate 5 # durch eine passende Zahl ersetzen
size 1.8 G # oft genug logrotate aufrufen lassen, damit die 200MB Rest nicht überschritten werden
monthly # nicht nur nach der Größe gehen, sondern auch am Anfang des Monats auslagern
compress
dateext # YYYYMMDD im Dateinamen statt einer fortlaufenden Nummer
}
Wahrscheinlich bleiben dann aber tatsächlich zwei Probleme: du hast deine heißgeliebte fortlaufende Nummer nicht und bei schnellem Wachstum des Logs kann das zu Fehlern führen.

Vielleicht doch eher was für ein Script ;)
 
Na dann, schreib mir doch ein Script :P

So wie du es sagtest hatte ichs mir auch schon gedacht - natürlich mit den selben Problemen ;)

Naja mal abwarten bis so ein Scriptgott meinen Thread hier findet :D

Schönen Feierabend!
 
Na dann, schreib mir doch ein Script :P

So wie du es sagtest hatte ichs mir auch schon gedacht - natürlich mit den selben Problemen ;)

Naja mal abwarten bis so ein Scriptgott meinen Thread hier findet :D

Schönen Feierabend!

Igendwie scheinst du zu denken, dass hier eine Skriptfabrik ist.
Sowas motiviert mich immer ungemein.

Du hast Lösungsvorschläge bekommen. Daraus eine Lösung zu erstellen sollte machbar sein.
Ein Cronjob der am Monatsbegin läuft und deine Datei mit dem gewünschten Namen versieht ist nun wirklich keine Hexerei.
Logrotate einrichten auch nicht.
Wenn gewünscht einen weiteren Cronjob, der nachgrast ob Logrotate zugeschlagen hat und das Produkt dann ebenfalls mit gewünschten Namen versieht ist auch kein Akt.
 
spaß und ironie versteht hier keiner oder?
wofür habt ihr eigentlich die smileys eingebaut?

man jungs, war bloß n spass

falls es noch irgendwen interessiert, hier meine logrotate datei:

Code:
/var/log/sonicwall {
rotate 999
size 2048M
monthly
compress
prerotate
   /etc/init.d/syslog stop
endscript
dateext
olddir /var/log/archiv/2007/
postrotate
   /etc/init.d/syslog start
endscript
}

ich glaub das wars, war jetzt ausm kopf
jetzt hab ich halt nur das problem, dass ich die rotierten logs quasi per hand auf den fileserver schiben darf als backup, oder? weil der erstellt mir ja jetzt ne *.gz datei an nem tag an dem die log 2GB erreicht oder am 1. eines monats. somit hab ich nie genau den filename mit dem ich dann nen cp befehl bauen könnte...oder geht das irgendwie? bin noch nicht ganz so bewandert mit variablen usw.
 
Du meinst die Datei zu deinem Zweirechner schicken? Mach das doch beim Postrotate via ncftp wenn du FTP nutzt, oder schreib dafür ein Script. Ich würde allerdings da eher mal ein zentralen Logserver bauen, den Mirror ich mit Rsync und gut ists (alte Dateien nicht überschreiben), ist einfacher.
 
ja also die mit GZip komprimierte datei kommt eben zum einen in den lokalen archivordner und zum anderen soll sie als backup auf unseren fileserver geschoben werden.

also kann ich zur datei einfach ein

ncftp ftp://..blabla

hinzufügen? so dass er quasi die datei die er grad behandelt sofort rüberschiebt, ohne dass ich den dateinamen nennen/kennen muss? das wäre doch prima ^^

//edit:
was ich grad merke, hab das "create" in meiner logrotate conf vergessen ;)
 
Zuletzt bearbeitet:
Naja, du könntest ja ein Bashscript schreiben das alle .tar.gz Dateien in /var/log/last/ an einen Server schickt, mittels find und xargs sollte das zu lösen sein.

Code:
#!/bin/bash
# ncftpput -u <username> -p <passwort> <host> <remote-dir> <files>
find /var/log/last/ -iname \*.tar.gz | xargs ncftpput -u FOO -p BAR 1.2.3.4 /logs $1
echo "Logs verschoben am `date +%x` | mail -s Cronjob hans@wurst.de

ungetestet, sollte aber funzen. Die Mail ist optional, aber ich lass mir alles zu mailen :) Ich verwende --exec von find NICHT weil sonst für jede Datei ein eigener Prozess gestartet wird, mit xargs wird nur ein Prozess gestartet. Ist sauberer und Ressourcen fressender.
 
hahaha jetzt wo dus sagst ^^ ich denke er meint schonender ;)
 
Lol hoppla :D
Ich meinte das find mit --exec Ressourcen Fressender wäre, hatte das so im Kopf und dann vergessen nochmal durchzulesen ;) Natürlich meinte ich Ressourcen schonender
 
...das dachte ich mir bereits *g - sollte auch nur ein Scherz sein :D
..bei der Affenhitze kann das schon mal passieren :)
 

Ähnliche Themen

Samba 4 Gast Zugang unter Ubuntu funktioniert nicht

Problem mit HSPA+ Modem Huawei E353 - Installation unmöglich?

Windows clients können nicht mehr auf lange laufendes System zugreifen

Falsche Rechte gesetzt beim Anlegen von Ordnern via Samba-Client

dovecot und postfix Konfiguration Problem

Zurück
Oben