Έλεγχος για 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