Έλεγχος για rotation log αρχείου

George Notaras gnot at g-loaded.eu
Wed Sep 16 14:35:48 EEST 2009


Apollon Oikonomopoulos wrote:
> On 11:23 Wed 16 Sep     , Christos Ricudis wrote:
>> O monos tropos na anixneuseis ti egine, einai na anoikseis ksana to 
>> log  file - epeidh o file descriptor ton opoio exeis hdh anoixto den  
>> prokeitai na katalabei xristo sthn periptwsh pou to log file exei 
>> ginei  rename h unlink kai oxi truncate - na kaneis mia stat(3), kai 
>> na  sygkrineis to mege8os me to (apo8hkeymeno apo to prohgoumeno 
>> iteration  ths stat(3)).
> 
> Υπάρχει πάντα και το inotify(7) (με τα python-inotify bindings), με το 
> οποίο ο πυρήνας αναλαμβάνει να σε ειδοποιήσει όταν συμβεί κάτι (που 
> έχεις εσύ ορίσει) σε ένα αρχείο (που πάλι έχεις εσύ ορίσει). Και πάλι 
> βέβαια, πρέπει να ξέρεις αν το logrotate κάνει move ή copy + truncate...

Δεν έχω ξανακάνει χρήση του inotify, αν και ακούγεται καλό. Θα το έχω
υπόψη. Thanks

> Το βασικό θέμα όμως είναι, τι ακριβώς θες να κάνεις με τα log files πέρα 
> από το να τα βλέπεις in real time; Αν βασίζεσαι σε κάτι το οποίο κάνει 
> real-time parse τα log files για κάποιο λόγο (όπως κάνουν όλα αυτά τα 
> σκριπτάκια τύπου fail2ban), τότε πρέπει να είσαι προετοιμασμένος και για 
> διάφορα άλλα ενδεχόμενα (από το να γεμίσει ο δίσκος, μέχρι το να ψοφήσει 
> ο syslogd ή να αλλάξει logging format η εφαρμογή της οποίας η έξοδος σε 
> απασχολεί).
> 
> /Απόλλων

Αυτό που θέλω να κάνω είναι ό,τι κάνει το fail2ban, αλλά με μία
διαφορετική λογική.

Το fail2ban βάζει την IP του client σε blacklist για N ώρες, όταν αυτός
έχει προκαλέσει Χ failures. Αυτό είναι χρήσιμο στην περίπτωση που οι
clients που προκαλούν τα failures είναι λιγοι. Αντίθετα, σε περιπτώσεις
που γίνονται μαζικά connections από πολλούς clients, η αντίδραση είναι
πολύ αργή και καθόλου αποτελεσματική στο να μειώσει το load.

Αυτό που θέλω να κάνω είναι να μπαίνει σε blacklist για Ν ώρες η IP όλων
των clients που προκαλούν έστω κι ένα failure, όταν ο συνολικός ρυθμός
των failures ξεπεράσει ένα προκαθορισμένο όριο.


ΥΓ: Αυτό το εφαρμόζω ήδη για το maillog με ένα πανάθλιο σκριπτ 2+
χρόνων, με κώδικα ακατάλληλο ακόμα και για ενηλίκους, που σιχαίνομαι
ακόμη κι εγώ ο ίδιος να ξανακοιτάξω. Το σκριπτ αυτό τρέχει μέσω cron.
Νομίζω ότι θα ήταν ακόμη πιο αποτελεσματικό αν έκανε το parsing με "tail
-f" και γι'αυτό θέλω να υλοποιήσω κάτι τέτοιο.

ΥΓ2: Αν έχετε υπόψη σας κάποιο πρόγραμμα που να κάνει το blacklisting με
τη λογική που περιέγραψα παραπάνω, θα ήθελα πολύ να το μάθω!!!



More information about the Linux-greek-users mailing list