Wéi Setup a Manage Log Rotatioun Mat Logrotate a Linux


Ee vun den interessantsten (a vläicht och ee vun de wichtegsten) Verzeechnes an engem Linux System ass /var/log. Geméiss dem Filesystem Hierarchy Standard gëtt d'Aktivitéit vun de meeschte Servicer, déi am System lafen, op eng Datei an dësem Verzeechnes oder an engem vun sengen Ënnerverzeechnunge geschriwwe ginn.

Esou Dateie ginn als Logbicher bekannt a sinn de Schlëssel fir ze iwwerpréiwen wéi de System funktionnéiert (a wéi et sech an der Vergaangenheet behuelen huet). Logbicher sinn och déi éischt Informatiounsquell wou d'Administrateuren an d'Ingenieure kucken beim Problembehandlung.

Wa mir den Inhalt vun /var/log op engem CentOS/RHEL/Fedora an Debian/Ubuntu (fir Varietéit) kucken, wäerte mir déi folgend Logdateien an Ënnerverzeechnungen gesinn.

Notéiert w.e.g. datt d'Resultat an Ärem Fall e bëssen anescht ka sinn ofhängeg vun de Servicer déi op Ärem System (en) lafen an der Zäit wou se lafen.

# ls /var/log
# ls /var/log

A béide Fäll kënne mir beobachten datt e puer vun de Lognimm ophalen wéi erwaart am \Log, anerer ginn entweder mat engem Datum ëmbenannt (zum Beispill, maillog-20160822 op CentOS) oder kompriméiert (betruecht auth.log.2. gz an mysql.log.1.gz op Debian).

Dëst ass net e Standardverhalen baséiert op der gewielter Verdeelung, awer kann op Wëllen geännert ginn andeems Dir Direktiven an de Konfiguratiounsdateien benotzt, wéi mir an dësem Artikel gesinn.

Wann d'Logbicher fir ëmmer gehale goufen, géife se schliisslech de Dateiesystem ausfëllen wou /var/log wunnt. Fir dat ze verhënneren, kann de System Administrateur e flotten Utility genannt Logrotate benotzen fir d'Logbicher regelméisseg ze botzen.

An e puer Wierder wäert logrotate den Haaptprotokoll ëmbenennen oder kompriméieren wann eng Konditioun erfëllt ass (méi iwwer dat an enger Minutt), sou datt den nächsten Event op eng eidel Datei opgeholl gëtt.

Ausserdeem wäert et \al Logdateien ewechhuelen an déi lescht behalen.Natierlech kënne mir entscheeden wat \al heescht a wéi oft mir wëllen Logrotéiere fir d'Logbicher fir eis ze botzen.

Logrotate op Linux installéieren

Fir Logrotate z'installéieren, benotzt just Äre Package Manager:

---------- On Debian and Ubuntu ---------- 
# aptitude update && aptitude install logrotate 

---------- On CentOS, RHEL and Fedora ---------- 
# yum update && yum install logrotate

Et ass derwäert a gutt ze notéieren datt d'Konfiguratiounsdatei (/etc/logrotate.conf) kann uginn datt aner, méi spezifesch Astellunge kënnen op eenzel .conf Dateien dobannen gesat ginn. /etc/logrotate.d.

Dëst wäert de Fall sinn wann an nëmmen wann déi folgend Linn existéiert an net kommentéiert ass:

include /etc/logrotate.d

Mir wäerte bei dëser Approche bleiwen, well et eis hëlleft Saachen an Uerdnung ze halen, an d'Debian Box fir déi folgend Beispiller benotzen.

Logrotate an Linux konfiguréieren

Als e ganz versatile Tool, logrotate bitt vill Direktiven fir eis ze hëllefen ze konfiguréieren wéini a wéi d'Logbicher rotéiert ginn, a wat soll direkt duerno geschéien.

Loosst eis déi folgend Inhalter an /etc/logrotate.d/apache2.conf setzen (notéiert datt Dir wahrscheinlech dës Datei erstallt musst) an all Zeil ënnersicht fir säin Zweck unzeginn:

/var/log/apache2/* {
    weekly
    rotate 3
    size 10M
    compress
    delaycompress
}

Déi éischt Zeil weist datt d'Direktiven am Block gëllen fir all Logbicher bannent /var/log/apache2:

  • wöchentlech heescht datt den Tool probéiert d'Logbicher op enger wëchentlecher Basis ze rotéieren. Aner méiglech Wäerter sinn alldeeglech a monatlech.
  • Rotatioun 3 weist datt nëmmen 3 rotéiert Logbicher solle gehale ginn. Sou gëtt déi eelst Datei um véierte Laf drop geläscht.
  • Gréisst = 10M setzt d'Mindestgréisst fir d'Rotatioun op 10M. An anere Wierder, all Logbicher gëtt net rotéiert bis en 10MB erreecht.
  • Compress an Delaycompress gi benotzt fir ze soen datt all rotéiert Logbicher, mat Ausnam vun de leschten, kompriméiert solle ginn.

Loosst eis en Dréchelaf ausféieren fir ze kucken wat Logrotate géif maachen wann et elo tatsächlech ausgefouert gouf. Benotzt d'Optioun -d gefollegt vun der Konfiguratiounsdatei (Dir kënnt tatsächlech Logrotate lafen andeems Dir dës Optioun ausléisst):

# logrotate -d /etc/logrotate.d/apache2.conf

D'Resultater ginn hei ënnen gewisen:

Amplaz d'Logbicher ze kompriméieren, kënne mir se nom Datum ëmbenennen wéi se rotéiert goufen. Fir dat ze maachen, benotze mir d'dateext Direktiv. Wann eisen Datumformat anescht ass wéi de Standard yyyymmdd, kënne mir et mat Datumformat spezifizéieren.

Notéiert datt mir souguer kënne verhënneren datt d'Rotatioun geschitt wann de Log mat Notifempty eidel ass. Zousätzlech, loosst eis de Logrotate soen fir de rotéierte Log un de Systemadministrator ze mailen (Mailserver fir opzestellen, wat aus dem Ëmfang vun dësem Artikel ass).

Wann Dir E-Mailen iwwer Logrotate wëllt kréien, kënnt Dir de Postfix Mail Server konfiguréieren wéi hei gewisen: Install Postfix Mail Server

Dës Kéier benotze mir /etc/logrotate.d/squid.conf fir nëmmen /var/log/squid/access.log ze rotéieren:

/var/log/squid/access.log {
    monthly
    create 0644 root root
    rotate 5
    size=1M
    dateext
    dateformat -%d%m%Y
    notifempty
    mail [email 
}

Wéi mir am Bild hei drënner kënne gesinn, brauch dëse Log net rotéiert ze ginn. Wéi och ëmmer, wann d'Gréisstkonditioun erfëllt ass (Gréisst = 1M), gëtt de rotéierte Logbuch access.log-25082020 ëmbenannt (wann de Log de 25. August 2020 rotéiert gouf) an den Haaptprotokoll (access.log) gëtt nei- erstallt mat Zougangsrechter op 0644 gesat a mat Root als Besëtzer a Gruppbesëtzer.

Schlussendlech, wann d'Zuel vun de Logbicher endlech 6 erreecht, gëtt den eelste Log op [email  gepost.

Loosst eis elo unhuelen datt Dir e personaliséierte Kommando ausféiere wëllt wann d'Rotatioun stattfënnt. Fir dat ze maachen, plazéiert d'Linn mat sou engem Kommando tëscht der Postrotate an Endscript Direktiven.

Zum Beispill, loosst eis unhuelen datt mir eng E-Mail op root wëllen schécken wann ee vun de Logbicher bannent /var/log/myservice rotéiert gëtt. Loosst eis d'Linnen a rout addéieren op /etc/logrotate.d/squid.conf:

/var/log/myservice/* {
	monthly
	create 0644 root root
	rotate 5
	size=1M
    	postrotate
   		echo "A rotation just took place." | mail root
    	endscript
}

Lescht, awer net zulescht, ass et wichteg ze notéieren datt Optiounen, déi am /etc/logrotate.d/*.conf präsent sinn, déi an der Haaptkonfiguratiounsdatei am Fall vu Konflikter iwwerschreiden.

Logrotate a Cron

Par défaut erstellt d'Installatioun vu logrotate eng Crontab-Datei bannent /etc/cron.daily mam Numm logrotate. Wéi et de Fall ass mat den anere crontab Dateien an dësem Verzeichnis, gëtt se all Dag ab 6:25 Auer ausgefouert wann Anacron net installéiert ass.

Soss fänkt d'Ausféierung ëm 7:35 Auer un. Fir z'iwwerpréiwen, kuckt no der Linn mat cron.daily an entweder /etc/crontab oder /etc/anacrontab.

Resumé

An engem System, deen e puer Logbicher generéiert, kann d'Verwaltung vun esou Dateie mat Logrotate staark vereinfacht ginn. Wéi mir an dësem Artikel erkläert hunn, wäert et automatesch d'Logbicher rotéieren, kompriméieren, ewechhuelen a mailen op periodesch Basis oder wann d'Datei eng gegebene Gréisst erreecht.

Gitt just sécher datt et agestallt ass fir als Cron Job ze lafen a Logrotate wäert d'Saache vill méi einfach fir Iech maachen. Fir méi Detailer, kuckt op d'Man Säit.

Hutt Dir Froen oder Virschléi iwwer dësen Artikel? Fillt eis gratis mat dem Kommentarformular hei drënner ze soen.