Beschrijving en voorbeelden van het configureren van logrotate in Linux. De rotatie van logbestanden instellen (logrotate)

Enige tijd geleden heb ik één script op mijn VPS geconfigureerd dat periodiek wat informatie uit de logs naar een bestaande site stuurt ... Ik zal niet beschrijven wat voor soort script en uit welke logs het informatie leest - daar gaat het niet om. Maar wat belangrijk is, is dat de server na een tijdje op de meest ernstige manier naar de swap begon te gaan, en als gevolg daarvan merkbaar langzamer werd. Het bleek dat het logbestand (degene waaruit de informatie werd gelezen) groeide tot vele megabytes groot, en het script gebruikte merkbare bronnen, bronnen, en las er af en toe informatie uit ...

Dus ik moest logrotate instellen in Linux ...

Meestal zorgen de ontwikkelaars van een bepaald programma voor Linux er zelf voor dat de logbestanden die door hun programma zijn gemaakt zelf hun logbestanden dagelijks opschonen en archiveren (wekelijks/maandelijks, of afhankelijk van de grootte van deze logbestanden). En ze doen dit meestal door logrotate in te stellen voor hun programma.

Dit wordt gedaan zodat de logboeken niet tot gigabyte groeien en de schijfruimte niet verstoppen. Meestal komt de behoefte om in tijdschriften te snuffelen de komende uren of dagen, of hoogstens een week, na een storing of probleem. En trouwens, zoals je aan mijn voorbeeld kunt zien, kunnen grote bestandsgroottes soms niet alleen schijfruimte in beslag nemen, maar er ook voor zorgen dat het hele systeem vertraagt.

Daarom is voor deze doeleinden het hulpprogramma logrotate uitgevonden. Zoals de naam waarschijnlijk al aangeeft, dient het om de stammen te roteren. Het werkt zo dat onder bepaalde voorwaarden in de configuratiebestanden (bijvoorbeeld tijd of bestandsgrootte), de logbestanden waarvoor deze voorwaarden zijn geschreven, worden gearchiveerd en het logbestand naar een nieuw bestand wordt geschreven. U kunt ook het aantal opgeslagen logarchieven opgeven, waarna de oude bestanden eenvoudig worden verwijderd. Als je wilt, kun je zelfs logs naar de e-mail sturen ...

In bijna alle kant-en-klare distributies is logrotate al geïnstalleerd en ingeschakeld, zo niet, dan is het zeker beschikbaar in de hoofdrepository.

Meestal zijn de initiële instellingen al opgeslagen in het bestand /etc/logrotate.conf. Er kunnen ook speciale instellingen zijn voor specifieke programma's in de map /etc/logrotate.d/. Om ervoor te zorgen dat bestanden uit deze map worden opgehaald door het logrotate-hulpprogramma, moet het hoofdbestand de regel bevatten:

include / etc / logrotate.d

inclusief /etc/logrotate.d

Het geeft aan dat de bestanden uit deze map als het ware zijn gekoppeld aan het hoofdinstellingenbestand (om zo te zeggen "meegeleverd"). Deze aanpak stelt u in staat niet elke keer naar het hoofdconfiguratiebestand te gaan en daar niet te zoeken naar richtlijnen voor het gewenste programma onder vele andere, maar gewoon het vereiste bestand ervoor te openen en het te bewerken. Om instellingen voor een bepaald programma te maken, moet u een bestand in deze map maken en om de rotatie van logboeken voor een bepaald programma te annuleren, hoeft u alleen het bestand te verwijderen (of het ontoegankelijk te maken voor lezen).

Voorbeeld /etc/logrotate.conf bestand:

# Start de rotatie wekelijks wekelijks # Laat de laatste drie logbestanden roteren 3 # Maak een nieuw bestand in plaats van de gearchiveerde aanmaak # Gebruik compressie voor het verouderde comprimeren van het logbestand # Voeg bestanden uit de opgegeven map toe inclusief /etc/logrotate.d # geen pakketten eigen wtmp of btmp - we "roteren ze hier / var / log / wtmp (missingok maandelijks maak 0664 root utmp roteren 1) / var / log / btmp (missingok maandelijks maak 0660 root utmp roteren 1)

Een voorbeeld van het bestand /etc/logrotate.d/programma, waarbij programma de naam is van het programma waarvoor je de logs moet configureren:

/ var / log / programma / * .log ( # dagelijks hardlopen#dagelijks # alleen uitvoeren als de bestandsgrootte groter is dan 1 MB# minimaat = 1M # comprimeer het geroteerde bestand samenpersen # comprimeer vorig bestand bij volgende rotatie vertragingscompressie # opgeslagen gecomprimeerde chunks roteren 5 # maximale ongecomprimeerde bestandsgrootte maat = 999k # ontbrekend bestand is geen fout missingok # verwerk geen lege bestanden melding # maak direct na rotatie een leeg bestand met de opgegeven rechten en gebruiker # maak 644 programma_user programma_group aan # Na het maken van een kopie, kapt u het originele logbestand af in plaats van het oude logbestand te verplaatsen en een nieuw aan te maken # Bij gebruik van deze parameter heeft de create-instructie geen effect, omdat het oude logbestand op zijn plaats blijft copytruncate # wat te doen na rotatie? postrotate chown programma_user: programma_group / var / log / programma / endscript)

/var/log/programma/*.log (# dagelijks uitvoeren # dagelijks # alleen uitvoeren als de bestandsgrootte groter is dan 1 MB # minsize = 1M # comprimeer het bestand dat wordt geroteerd comprimeer # comprimeer het vorige bestand bij de volgende rotatie vertraging comprimeer # nummer van opgeslagen gecomprimeerde fragmenten roteren 5 # maximale grootte van niet-gecomprimeerde bestandsgrootte = 999k # ontbrekend bestand is geen fout missingok # verwerk lege bestanden niet notifempty # direct na rotatie maak een leeg bestand met gespecificeerde rechten en gebruiker # maak 644 programma_user programma_group # Na maak een kopie, kap het originele logbestand af in plaats van het oude logbestand te verplaatsen en maak een nieuwe # Bij gebruik van deze parameter heeft de create-instructie geen effect, aangezien het oude logbestand op zijn plaats blijft copytruncate # wat te doen na rotatie? chown programma_user: programma_group / var / log / programma / endscript)

Logrotate hulpprogramma-opties:

-NS- (debug) activeert de debug-modus, waarin de optie -v ook is ingeschakeld; in de foutopsporingsmodus worden de systeemberichtbestanden en het logrotate-statusbestand echter niet gewijzigd door het hulpprogramma.

-v- (uitgebreide) activeert de modus voor het weergeven van gedetailleerde informatie over elke actie van het hulpprogramma.

-F- (forceren) dwingt logrotatie om de stammen te roteren, ook als de nutsvoorziening dit zelf niet nodig acht. Dit is soms handig na het toevoegen van nieuwe items om te logroteren of als het oude logbestand handmatig is verwijderd; hierdoor worden nieuwe bestanden gemaakt en wordt het loggen gracieus voortgezet.

-m- (mail) vertelt het hulpprogramma welke opdracht moet worden gebruikt om logboeken per e-mail te verzenden. Deze opdracht kan twee argumenten bevatten: de onderwerpregel en de ontvanger. Het team moet het bericht uit de standaardinvoer lezen en naar de ontvanger e-mailen. Het standaardcommando is / bin / mail -s.

-s- (status) instrueert het hulpprogramma om een ​​alternatief statusbestand te gebruiken. Dit is handig als logrotate wordt uitgevoerd als verschillende gebruikers voor verschillende sets systeemberichtbestanden. Het standaard statusbestand is / var / lib / logrotate / status.

-? - geeft een korte hulp weer.

--gebruik- geeft gebruiksinformatie weer.

Het volgende is informatie over de richtlijnen die kunnen worden opgegeven in het logrotate-configuratiebestand (vanaf hier):

samenpersen
Oudere versies van logbestanden worden gecomprimeerd (standaard gzip). Zie ook nocompress.

comprimeercmd
Hiermee kunt u een opdracht opgeven om logbestanden te comprimeren. De standaard is gzip. Zie ook comprimeren.

decomprimeercmd
Met de richtlijn kunt u een opdracht opgeven om de logbestanden te decomprimeren. De standaard is gunzip.

comprimeertekst
Als compressie wordt gebruikt, specificeert u de extensie van de gecomprimeerde logbestanden. De standaardwaarde wordt bepaald op basis van de instellingen van de compressieopdracht.

compressieopties
Opdrachtregelopties kunnen worden doorgegeven aan het compressieprogramma als het deze gebruikt. De standaard voor gzip is "-9" (maximale compressie).

kopiëren
Maak een kopie van het logbestand zonder het origineel te wijzigen. Deze optie kan bijvoorbeeld worden gebruikt om een ​​momentopname (slice) van het huidige logbestand te maken, of wanneer een ander hulpprogramma het bestand moet afkappen of opschonen. Bij gebruik van deze parameter heeft de create-instructie geen effect, omdat het oude logbestand op zijn plaats blijft.

copytruncate
Na het maken van een kopie, kapt u het originele logbestand af in plaats van het oude logbestand te verplaatsen en een nieuw aan te maken. Dit kan handig zijn wanneer een programma niet kan worden verteld om zijn logbestand te sluiten, en het dus mogelijk is om continu door te gaan met schrijven (toevoegen aan) een bestaand logbestand. Houd er rekening mee dat hoewel er een zeer korte tijd zit tussen het kopiëren van een bestand en het afsnijden, sommige van de geregistreerde gegevens verloren kunnen gaan. Bij gebruik van deze parameter heeft de create-instructie geen effect, aangezien het oude logbestand op zijn plaats blijft staan.

groep voor moduseigenaar maken
Onmiddellijk na de aanroep (voordat het postrotate-script wordt uitgevoerd), maakt u een logbestand (met dezelfde naam als het nieuw gepushte log). Het mode-argument specificeert de octale toegangsmodus voor het logbestand (hetzelfde als chmod (2)), owner specificeert de naam van de gebruiker die eigenaar is van het gegenereerde logbestand, en group specificeert de groep waartoe het logbestand zal behoren. Elk van deze attributen kan worden weggelaten; in dit geval worden attributen met dezelfde waarden als het originele logbestand gebruikt voor het nieuwe bestand. Deze optie kan worden uitgeschakeld met behulp van de nocreate-richtlijn.

dagelijks
Dagelijkse verspreiding van logbestanden.

vertragingscompressie
Stel compressie van het vorige logbestand uit tot de volgende circulaire shift. Deze richtlijn is alleen effectief in combinatie met kompres. Dit kan worden gebruikt als een programma niet kan worden verteld om zijn logbestand te sluiten, en het dus mogelijk is om een ​​tijdje door te gaan met schrijven naar het vorige logbestand.

extensie extensie
Logbestanden krijgen de opgegeven extensie nadat ze zijn geopend. Als compressie wordt gebruikt, zal het compressieprogramma na de opgegeven extensie een andere toevoegen (meestal ..gz).

indien leeg
Verschuif het logbestand, zelfs als het leeg is; dit gedrag kan worden gewijzigd door de instructie notifempty te gebruiken (ifempty is standaard ingeschakeld).

inclusief file_or_directory
Leest het bestand dat als argument is doorgegeven alsof het regel voor regel in de hoofdtekst van het configuratiebestand is opgenomen vanaf de plaats waar de include-instructie is opgegeven. Als een map is opgegeven, worden de bestanden die deze bevat in alfabetische volgorde gelezen voordat ze worden ingediend voor opname. Niet-reguliere bestanden (zoals mappen en named pipes), evenals bestanden die eindigen op illegale extensies (gedefinieerd door de tabooext-parameter) worden genegeerd. De include-richtlijn kan niet worden gebruikt binnen een definitie van een logbestand.

Mail adres
Aan het einde van de oplage wordt het tijdschrift per e-mail naar het adres gestuurd. Als dit niet nodig is voor individuele tijdschriften, kan de nomail-richtlijn worden gebruikt.

mail eerst
Als u de opdracht mail gebruikt, verzendt u het zojuist verschoven bestand in plaats van het ontgrendelde logbestand.

maillast
Als u de opdracht mail gebruikt, verzendt u niet alleen het verschoven bestand, maar ook het verlopen logbestand (dit is de standaardinstelling).

missingok
Als er geen logbestand is, gaat u verder met het verwerken van het volgende zonder een foutmelding weer te geven. Zie ook nomissingok.

maandelijks
logrotate roteert logbestanden eenmaal per maand (meestal op de eerste van elke maand).

nocompress
Gzip geen oudere versies van logbestanden. Zie ook comprimeren.

geen kopie
Kopieer het originele logbestand niet en laat het op de oorspronkelijke locatie staan ​​(dit heeft voorrang op de kopieeroptie).

geen kopietruncate
Nadat u een kopie hebt gemaakt, mag u het oorspronkelijke logbestand niet op de oorspronkelijke locatie afkappen (dit heeft voorrang op de parameter copytruncate).

niet creëren
Maak geen nieuw logbestand aan (dit heeft voorrang op de create-instructie).

nodelaycompress
Stel de compressie van het verschoven logbestand niet uit tot de volgende retour (dit heeft voorrang op de delaycompress-richtlijn).

nomail
Mail geen oude logbestanden.

nomissingok
Als het logbestand niet bestaat, geeft u een foutmelding. Deze is standaard geïnstalleerd.

noolddir
Nadat ze zijn geopend, blijven de logboeken in dezelfde map waar de huidige logboeken zich bevinden (dit overschrijft de olddir-richtlijn).

nosharedscripts
Voer prerotate- en postrotate-scripts uit voor elk verwerkt logboek (dit is het standaardgedrag en kan worden overschreven met de parameter sharedscripts).

melding
Verplaats het logboek niet als het leeg is (dit heeft voorrang op de parameter ifempty).

oude map
Verplaats verschoven logs naar directory. De opgegeven map moet zich op hetzelfde fysieke apparaat bevinden als het logbestand dat wordt geopend. Bij gebruik van deze parameter gaan alle oude versies van het logboek naar de directory. Deze parameter kan worden overschreven door de parameter noolddir.

postrotate / eindscript
De instructieregels tussen postrotate en endscript (die zelf op aparte regels moeten staan) worden uitgevoerd nadat het logboek is omgekeerd. Deze richtlijnen zijn alleen te vinden in een logbestanddefinitie. Zie ook voordraaien.

prerotate / eindscript
Regels met instructies tussen prerotate en endscript (die zelf op aparte regels moeten staan) worden uitgevoerd voordat de log wordt geretourneerd en alleen als de log daadwerkelijk wordt verschoven. Deze richtlijnen zijn alleen te vinden in een logbestanddefinitie. Zie ook naroteren.

roteer tijden
Het logbestand wordt een bepaald aantal keren verschoven voordat het wordt verwijderd of per e-mail wordt verzonden naar het adres dat is opgegeven in de e-mailrichtlijn. Als het 0 keer is opgegeven, wordt het oude logboek verwijderd in plaats van dat het wordt geopend.

maat maat
De logbestanden worden verschoven wanneer ze groter worden dan de opgegeven grootte in bytes. Als de grootte eindigt op een M, wordt de grootte geïnterpreteerd in megabytes. Als u k gebruikt, kunt u de grootte in kilobytes opgeven. De richtlijnen maat 100, maat 100k en maat 100M zijn dus correct.

gedeelde scripts
Gewoonlijk worden prescript en postscript uitgevoerd voor elk verwerkt log; dit betekent dat hetzelfde script meerdere keren kan worden uitgevoerd voor een enkel configuratierecord dat meerdere bestanden omvat (zoals in het / var / log / news / * voorbeeld). Als de parameter sharedscript is opgegeven, worden de scripts slechts één keer uitgevoerd, ongeacht het aantal logboeken dat overeenkomt met de opgegeven sjabloon. Als echter geen van de logboeken die met het patroon overeenkomen, hoeft te worden geopend, worden de scripts helemaal niet uitgevoerd. Deze parameter overschrijft de nosharedscripts-richtlijn.

startnummer
Het opgegeven nummer is het nummer van waaruit het tellen van oproepen begint. Als u bijvoorbeeld 0 opgeeft, krijgen de logs na de eerste oproep (verschuiven van het oorspronkelijke logbestand) de extensie 0 toegewezen. Als u 9 opgeeft, worden logbestanden gemaakt met de extensie .9, waarbij 0-8 wordt weggelaten. Bestanden zullen nog steeds zo vaak worden geopend (verschoven) als gespecificeerd in de count-instructie.

taboeext [+] extension_list
Wijzigt de huidige lijst met verboden extensies (zie opnemen). Als de lijst met extensies wordt voorafgegaan door een +-teken, dan wordt deze lijst toegevoegd aan de huidige, anders wordt deze vervangen. Bij de eerste keer opstarten bevat de lijst de volgende extensies: .rpmorig, .rpmsave, v, .swp, .rpmnew en ~.

wekelijks
De logbestanden worden verschoven als de huidige dag van de week minder is dan de dag van de week waarop het logboek voor het laatst is geopend, of als er sindsdien meer dan een week is verstreken. Dit is bijna hetzelfde als het draaien van logrotatie op maandag, maar werkt beter als logrotate niet elke nacht wordt gestart.

PS: Na het aanbrengen van wijzigingen om ze toe te passen, wordt aanbevolen om in de terminal als de superuser uit te voeren:

sudo logrotate -f -v / etc / logrotate.conf

sudo logrotate -f -v /etc/logrotate.conf

In Linux schrijven de meeste services en programma's die op de achtergrond draaien, zoals Apache, Nginx, Postfix en anderen, informatie over hun status, resultaten van het werk en fouten in logbestanden. De standaardlocatie van logs, of zoals ze ook wel logs worden genoemd, bevindt zich in de map / var / log.

Door de logboeken te analyseren, kunt u begrijpen wat er mis is, waarom de fout is opgetreden en hoe u het probleem kunt oplossen. Maar dat ene probleem ligt. De grootte van de logboeken neemt voortdurend toe en ze nemen steeds meer schijfruimte in beslag, dus het is noodzakelijk om de logboeken op tijd op te schonen en verouderde records te verwijderen, zodat ze de normale werking niet verstoren. Dit kan van tijd tot tijd handmatig worden gedaan of door cron-scripts aan te passen, maar er is een nog eenvoudigere optie: het hulpprogramma logrotate. In dit artikel wordt uitgelegd hoe u logrotate kunt configureren en hoe u het kunt gebruiken.

Het hulpprogramma Logrotate is ontworpen om de verwerking van logboeken te automatiseren. Ze kan met hen de nodige acties uitvoeren, afhankelijk van bepaalde voorwaarden en nalevingsregels. U kunt bijvoorbeeld logboeken comprimeren in een archief of ze naar een andere server sturen wanneer ze een bepaalde grootte, leeftijd of andere parameters bereiken.

De conditiecontrole kan dagelijks, wekelijks of maandelijks worden geconfigureerd. Hiermee kunt u een logrotatieschema maken dat handig is voor u en uw server. Het roteren van logs kan ook handig zijn op een thuiscomputer, maar hier is het niet zo belangrijk als op servers, waar slechts tot honderdduizenden regels per dag naar Apache-logs kunnen worden geschreven.

Logrotate configureren

Logrotate is een populair hulpprogramma, dus het wordt standaard geleverd bij de meeste distributies. U kunt controleren of het programma in uw distributie is geïnstalleerd door te proberen het te installeren. Bijvoorbeeld op CentOS:

sudo yum installeer logrotate

Of in Ubuntu en Linux-gebaseerde distributies:

sudo apt install logrotate

Nu, zelfs als het hulpprogramma niet is geïnstalleerd, installeert u het. Alle basisprogramma-instellingen bevinden zich in het bestand /etc/logrotate.conf, aanvullende instellingen met betrekking tot regels en andere functies kunnen in de map /etc/logroate.d/ worden geplaatst. U kunt alle logroatae-instellingen direct in het hoofdconfiguratiebestand plaatsen, het is correcter als de instellingen voor elke afzonderlijke service in een apart bestand staan, in de map /etc/logrotate.d/.

Om ervoor te zorgen dat het programma configuratiebestanden uit deze map laadt, voegt u de volgende regel toe aan het hoofdconfiguratiebestand:

vi /etc/logrotate.conf

inclusief /etc/logrotate.d

Zorg ervoor dat het er al is. Laten we eerst eens kijken naar de basisrichtlijnen die we tijdens de configuratie zullen toepassen. Hier zien de richtlijnen er niet heel gewoon uit, de richtlijn bepaalt zelf wat en wanneer te doen, en indien nodig worden er aanvullende parameters aan doorgegeven. De volgende richtlijnen worden gebruikt om aan te geven hoe vaak een voorwaardelijke overeenkomst moet worden gecontroleerd:

  • elk uur- elk uur;
  • dagelijks- elke dag;
  • wekelijks- elke week;
  • maandelijks- elke maand;
  • jaarlijks- jaarlijks.

De belangrijkste richtlijnen voor het beheren en verwerken van logs:

  • draaien- geeft aan hoeveel oude logs moeten worden opgeslagen, het aantal wordt overgedragen in de parameters;
  • creëren- geeft aan dat het nodig is om een ​​leeg logbestand aan te maken na het verplaatsen van het oude;
  • datumext- voegt de rotatiedatum toe vóór de kop van het oude logboek;
  • samenpersen- geeft aan dat het logboek moet worden gecomprimeerd;
  • vertragingscompressie- het laatste en voorlaatste journaal niet comprimeren;
  • verlenging- sla het originele logbestand op na rotatie als het de gespecificeerde extensie heeft;
  • mail- stuur e-mail na het einde van de rotatie;
  • maximaal- tijdschriften roteren als ze ouder zijn dan aangegeven;
  • missingok- geef geen fouten als het logbestand niet bestaat;
  • oud- verplaats oude logs naar een aparte map;
  • postrotate / eindscript- willekeurige commando's uitvoeren na rotatie;
  • begin- het nummer van waaruit de nummering van oude logs wordt gestart;
  • maat- de grootte van de stam wanneer deze wordt verplaatst;

Dit zijn de belangrijkste richtlijnen die we zullen gebruiken. Het hoofdconfiguratiebestand bevat de algemene configuratierichtlijnen die van toepassing zijn op alle logbestanden als hun effect niet is geannuleerd. Elk logboek dat aan rotatie onderhevig is, wordt als volgt beschreven:

log_file_address {
richtlijnen
}

Laten we nu een rsyslog.conf-bestand maken in de map /etc/logrotate.d/ en de instellingen voor het roteren van dit logboek erin plaatsen:

/ var / log / berichten (
dagelijks
roteren 3
maat 10M
samenpersen
vertragingscompressie
}

Deze instellingen houden in dat de rotatie van de logs dagelijks wordt uitgevoerd, en we zullen de laatste drie logs bewaren, de oudere exemplaren worden automatisch verwijderd. De minimale grootte voor rotatie is 10 megabytes, rotatie wordt niet uitgevoerd als het logboek niet meer dan 10 megabytes in beslag neemt. Compressie wordt gebruikt voor alle logs behalve de laatste en de voorlaatste. Op precies dezelfde manier kunt u logrotatie instellen voor elk van de logs. U moet een dergelijke sectie maken voor elk van de logboeken die u wilt beheren.

Nu rest ons nog om te testen hoe onze configuratie werkt. Om dit te doen, voert u het hulpprogramma logrotate uit met de optie -d. Het zal alles weergeven wat gepland is om te doen, maar zal de bestanden op de schijf niet veranderen. We hebben een bestand / var / log / berichten, 40 Megabytes groot, laten we eens kijken wat het hulpprogramma zal doen:

logrotate -d /etc/logrotate.d/rsyslog.conf


Zoals u kunt zien, detecteert het programma het logbestand en splitst het in verschillende delen. U kunt ervoor zorgen dat logrotate start zoals verwacht door het cron-schema te controleren:

ls /var/cron.daily/

De Logrotate-configuratie is voltooid en u hoeft alleen maar te beschrijven hoe de rotatie van de logs zal worden uitgevoerd voor elk van de logs, die veel ruimte in beslag nemen.

conclusies

In dit artikel hebben we gekeken naar het configureren van logrotate centos of een andere Linux-distributie. Het hulpprogramma werkt niet veel anders, afhankelijk van de distributies. Als je een server hebt met een zware belasting, moet je zeker de rotatie van de logs configureren. Ik hoop dat deze informatie nuttig voor u was. Om de video te voltooien over hoe de rotatie van logs wordt uitgevoerd in Ubuntu vanuit LPIC:

En nog iets in het Engels:

Logrotate is een programma waarmee je logs op Unix/Linux-systemen kunt beheren. Het hulpprogramma voert automatische rotatie, verwijdering of compressie van logboeken uit. Logrotate helpt schijfruimte te besparen. Het hulpprogramma is vrij eenvoudig in te stellen en nu zult u het zelf zien.

Logrotate installeren om logs op Unix / Linux te beheren

Ik zal illustratieve voorbeelden geven van gebruik op verschillende Unix / Linux-besturingssystemen.

Logrotate installeren om logboeken op Debian / Ubuntu te beheren

Laten we de pakketten in het besturingssysteem bijwerken:

# apt-get update -y

Voor de installatie gebruiken we:

# apt-get install logrotate -y

Logrotate installeren om logboeken te beheren op CentOS / Fedora / RedHat

Laten we de pakketten in het besturingssysteem bijwerken:

# yum update -y

Voor de installatie gebruiken we:

# yum installeer logrotate -y

Daarna gaan we verder met het opzetten en lanceren van het logo.

Logrotate installeren om logboeken te beheren op Mac OS X

We installeren HomeBrew - en zoeken naar het pakket:

$ brouwen zoeken logroteren

Gebruik de opdracht om te installeren:

$ brew installeren logroteren

Ga daarna verder met het instellen en uitvoeren van logrotate.

Logrotate configureren om logboeken te beheren op Unix / Linux

Het configuratiebestand is te vinden op:

# vim /etc/logrotate.conf

Mijn configuratie ziet er als volgt uit:

Wekelijks maken roteren 4 dateext include /etc/logrotate.d / var / log / wtmp (maandelijks maak 0664 root utmp minsize 1M roteren 1) / var / log / btmp (missingok maandelijks maak 0600 root utmp roteren 1)

Logboeken op toepassingsniveau (waarbij indien nodig de standaardinstellingen worden genegeerd) worden opgeslagen in:

/etc/logrotate.d/

Ik zal niet de moeite nemen en zal één configuratie schrijven voor de hele rotatie (je kunt het voor elk afzonderlijk configureren):

# vim /etc/logrotate.d/For_ALL

Wij registreren:

/var/log/*.log (maandelijkse grootte 100M roteren 7 comprimeren delaycompress missingok notifempty maak 644 root root)

Ik neem alle logs die een naam hebben en eindigen met .log en volg ze in het interval - een maand (de maandelijkse richtlijn wordt gebruikt). Als de loggrootte groter is dan (grootte 100M), roteer dan. De rotatie vindt plaats na 7 dagen (bestanden worden 7 dagen bewaard). Ik comprimeer de logbestanden (de compressierichtlijn). De optie delaycompress vertraagt ​​de uitvoering van de compressie tot de volgende logrotatie, maar werkt alleen met de optie - compress. De parameter missingok maakt het mogelijk om de volgende log te verwerken als er een ontbreekt en zonder een fout te geven. Met de meldingsopties kunt u het roteren van lege bestanden uitschakelen. Na het roteren van de logboeken wordt alles verwijderd en om de logboeken op te slaan, moet u de bestanden opnieuw maken. Creëren stelt u dus in staat om dit te doen.

Als de grootte-optie en het rotatie-interval worden gebruikt in de configuratie (bijvoorbeeld maandelijks), dan zal de grootte-optie de optie voor het rotatie-interval overschrijden, wat betekent dat de logs worden geroteerd zodra de bestandsgrootte de opgegeven waarde overschrijdt, zonder te wachten op de vervaldatum.

Daarna kun je controleren wat je hebt gemaakt (zonder het uit te voeren, alleen de test):

# logrotate -d /etc/logrotate.d/For_ALL

Als debuggen niets slechts laat zien, kunt u de rotatie starten:

# logrotate -f -v /etc/logrotate.d/For_ALL

In plaats van de logboeken te comprimeren, kunt u ze hernoemen. Hiervoor bestaat een dateext-richtlijn. Als onze datumnotatie verschilt van de standaard jjjjmmdd, kunnen we deze specificeren met behulp van datumnotatie:

Datumext datumformaat -% d% m% Y melding

Aan het einde kunt u ook een brief sturen naar het opgegeven e-mailadres:

Mail [e-mail beveiligd] site

Als u niet wilt dat er na het roteren lege bestanden worden aangemaakt, gebruikt u:

Nocreate

Stel de compressie van het bestand niet uit voor de volgende cyclus

Nodelay-compressie

Als je geen oude logboeken naar e-mail wilt sturen, gebruik dan:

Bewaar alle logs in dezelfde map:

Noolddir

Rotatie-intervallen:

Dagelijks wekelijks maandelijks jaarlijks

Afmetingen voor rotatie (na het overschrijden van de opgegeven maat, wordt rotatie uitgevoerd):

Maat 6k maat 66M maat 66G

U kunt willekeurige opdrachten verzenden nadat de rotatie is voltooid, bijvoorbeeld:

Postrotate echo "Rotatie voltooid!" | mail root-eindscript

Dit hulpprogramma moet u uitvoeren:

# logrotate /etc/logrotate.d/For_ALL

U kunt de opdracht "logrotate" automatiseren en in crontab plaatsen.

PS: Standaard is dit waarschijnlijk al gedaan:

# ls /etc/cron.daily/ cups logrotate makewhatis.cron mlocate.cron prelink readahead.cron tmpwatch

Het configuratiebestand voor apache2 ziet er bijvoorbeeld als volgt uit:

/var/log/apache2/*.log (wekelijks missingok roteren 2 comprimeren vertragingcompressen melding maken 640 root root sharedscripts postrotate if [-f "'. / etc / apache2 / envvars; echo $ (APACHE_PID_FILE: - / var / run / apache2 .pid) `"]; dan /etc/init.d/apache2 reload> / dev / null fi endscript)

Rotatie vindt een keer per week plaats. Als er geen logboek is, geef dan geen fout weer. Sla de laatste 2 geroteerde bestanden op en comprimeer ze natuurlijk, maar doe niets voor lege bestanden. Nadat de rotatie is geslaagd, maakt u een leeg bestand met de opgegeven rechten.

Logrotate opties

De meest gebruikte opties zijn:

D - Met deze optie kunt u de foutopsporingsmodus inschakelen, die de parameter "-v" gebruikt. In deze modus wordt er niets uitgevoerd en toegepast.

F, —force - Met deze optie kunt u logrotatie forceren en het roteren van de logs starten. Soms is het bijvoorbeeld handig - wanneer nieuwe functionaliteit is toegevoegd aan de configuratie of oude logs handmatig zijn verwijderd en om niet handmatig nieuwe bestanden aan te maken, kunt u met deze optie een logotype uitvoeren.

M, —mail-opdracht - Hiermee kunt u een opdracht opgeven voor het verzenden van logbestanden per e-mail en deze moet invoerparameters bevatten:

  • letterkop
  • de ontvanger van de brief

Na uitvoering worden de logs naar de gespecificeerde soap gestuurd (de opdracht leest gegevens van de standaard STDIN-invoer), en de standaardopdracht is /usr /bin /mail -s.

S, —state statefile - Met deze optie kunt u een willekeurig statusbestand specificeren. Het is goed om het te gebruiken wanneer er meerdere gebruikers op het systeem zijn die met logrotate draaien (draaien). Standaard wordt dit bestand opgeslagen in / var / lib / logrotate / status.

—Gebruik - Toon een handleiding voor het gebruik van dit hulpprogramma.

V, —verbose - Met deze optie kunt u alles weergeven wat er op het scherm gebeurt (alle uitvoer).

Dat is alles, het artikel "Logrotate installeren om logboeken op Unix / Linux te beheren" is voltooid!

Logroteren is een applicatie die is ontworpen om het beheer van logbestanden te vergemakkelijken. Logrotate is vooral handig wanneer een groot aantal logbestanden wordt gegenereerd. Met het hulpprogramma kunt u automatisch logbestanden archiveren, verwijderen, wissen en naar e-mail verzenden. Dit proces wordt gewoonlijk de rotatie van logbestanden genoemd.

Logrotate kan worden geconfigureerd om dagelijks, wekelijks of maandelijks te roteren. Bovendien kunt u de bestandsgrootte instellen, waarna het bestand wordt geroteerd. Logrotate wordt meestal uitgevoerd als een dagelijkse taak met behulp van de Linux cron-planner.

Een korte beschrijving van het Logrotate-instellingenbestand

Een beschrijving van hoe Logrotate met dit of dat logbestand werkt, bevindt zich in een speciaal configuratiebestand. Meestal bevinden ze zich in de map /etc/logrotate.d/. Het configuratiebestand voor apache2 ziet er bijvoorbeeld als volgt uit:

$ meer /etc/logrotate.d/apache2 /var/log/apache2/*.log (wekelijks # roteert eenmaal per week. Mogelijke opties zijn dagelijks, wekelijks, # maandelijks, grootte (bijv. grootte = 1M) missingok # ontbrekend bestand is niet fout roteren 52 # sla de laatste 52 geroteerde bestanden op comprimeren # comprimeer het geroteerde bestand delaycompress # comprimeer het vorige bestand tijdens de volgende rotatie # (dwz * .log.1-bestand wordt niet gecomprimeerd, maar * .log.2 en verder gecomprimeerd ) notifempty # verwerk geen lege bestanden maak 640 root adm # direct na rotatie, maak een leeg bestand aan met de gespecificeerde rechten en de sharedscripts gebruiker # prerotate / postrotate crypts worden slechts één keer uitgevoerd # ongeacht het aantal logs dat overeenkomt met de gegeven sjabloon postrotate # het script wordt onmiddellijk na het roteren uitgevoerd als [-f "`. / etc / apache2 / envvars; echo $ (APACHE_PID_FILE: - / var / run / apache2.pid) `"]; dan /etc/init. d/apache2 herladen> / dev / null fi endscript )

Tegelijkertijd is de eerste regel /var/log/apache2/*.log niets meer dan een sjabloon voor verwerkte logbestanden. Dit betekent dat de gespecificeerde rotatieconfiguratie zal worden gebruikt voor alle bestanden die zich in de / var / log / apache2 / directory bevinden en de extensie "log" hebben.

Er zijn veel geldige richtlijnen in het configuratiebestand (meer dan 40). U kunt er meer over lezen bij man logrotate.

    richtlijnen:

    mail- geeft aan waar het geroteerde bestand naartoe moet worden gestuurd

    mail eerst- stuur de eerste gedraaide commissie; maillast- stuur de laatste geroteerde kopie

postrotate herlaad rsyslog> / dev / null 2> & 1 || true # voor Debian invoke-rc.d rsyslog reload> / dev / null # voor RHEL-endscript

    copytruncate- na het maken van een kopie, kapt u het originele logbestand af in plaats van het oude logbestand te verplaatsen en een nieuw aan te maken. Dit kan handig zijn wanneer een programma niet kan worden verteld om zijn logbestand te sluiten, en het dus mogelijk is om continu door te gaan met schrijven (toevoegen aan) een bestaand logbestand. Houd er rekening mee dat hoewel er een zeer korte tijd zit tussen het kopiëren van een bestand en het afsnijden, sommige van de geregistreerde gegevens verloren kunnen gaan. Bij gebruik van deze parameter heeft de create-instructie geen effect, aangezien het oude logbestand op zijn plaats blijft staan.

Basis Logrotate-opties en testen

In de regel wordt het na het instellen van het configuratiebestand noodzakelijk om de werking van logrotate te controleren op nieuwe logs. Hiervoor is het mogelijk om logrotate rechtstreeks vanaf de opdrachtregel uit te voeren. In dit geval zijn de volgende opties toegestaan:

    D. Schakelt de foutopsporingsmodus in en dupliceert ook de -v-optie. In debug-modus wordt er geen actie op de logs uitgevoerd.

    F, -kracht. Dwingt logrotatie om de logs te roteren. Het is soms nodig na het toevoegen van nieuwe configuratiebestanden of als het oude logbestand handmatig is verwijderd; hierdoor worden nieuwe logbestanden gemaakt en wordt het loggen gracieus voortgezet.

    M, -mail commando. Specificeert welke opdracht moet worden gebruikt om logboeken te mailen. Het commando moet 2 invoerparameters accepteren: de kop van de brief van de ontvanger van de brief. Daarna moet de opdracht het bericht van de standaardinvoer (STDIN) lezen en naar de ontvanger sturen. Het standaardcommando is / usr / bin / mail -s

    S, -state-statusbestand. Geeft het gebruik van een alternatief statusbestand aan. Handig in gevallen waarin logrotate wordt uitgevoerd als verschillende gebruikers voor verschillende sets logbestanden. Statusbestand: / var / lib / logrotate / status

    -Gebruik. Geeft korte instructies weer over het gebruik van het hulpprogramma.

    V, -uitgebreid. Uitvoer van diagnostische berichten tijdens rotatie.

    Om de wijzigingen onmiddellijk toe te passen, moet u het volgende commando uitvoeren: # logrotate /etc/logrotate.conf

    Om de wijzigingen te controleren, moet u de opdracht uitvoeren (er wordt geen actie op de logs uitgevoerd): # logrotate -d /etc/logrotate.conf

Logroteren Is een applicatie ontworpen om te vergemakkelijken: beheer van logbestanden... Vooral Logroteren handig wanneer een groot aantal logbestanden wordt gegenereerd. Met het hulpprogramma kunt u automatisch logbestanden archiveren, verwijderen, wissen en naar e-mail verzenden. Dit proces wordt gewoonlijk aangeduid als: rotatie van logbestanden.

Logroteren kan worden geconfigureerd voor dagelijkse, wekelijkse of maandelijkse rotatie. Bovendien kunt u de bestandsgrootte instellen, waarna het bestand wordt geroteerd. Gebruikelijk logrotate wordt uitgevoerd als een dagelijkse taak (cron).

Logrotate installeren
Installatie is gebruikelijk voor op Debian / Ubuntu gebaseerde distributies:

$ sudo aptitude install logrotate Een korte beschrijving van het Logrotate-instellingenbestand Beschrijving van hoe: Logroteren werkt met een of ander logbestand dat zich in een speciaal configuratiebestand bevindt. In de regel bevinden ze zich in de directory /etc/logrotate.d/... Het configuratiebestand voor apache2 ziet er bijvoorbeeld als volgt uit: $ more /etc/logrotate.d/apache2 /var/log/apache2/*.log (wekelijks # roteer eens per week missingok # ontbrekend bestand is geen fout roteren 52 # bewaar de laatste 52 geroteerde bestanden comprimeren # comprimeer het geroteerde bestand delaycompress # comprimeer het vorige bestand bij de volgende rotatie # (dwz * .log.1-bestand wordt niet gecomprimeerd, maar * .log.2 en verder gecomprimeerd) notifempty # do geen lege bestanden verwerken maak 640 root adm # direct na de rotatie maak een leeg bestand met de gespecificeerde rechten en de sharedscripts gebruiker # prerotate / postrotate crypts worden slechts één keer uitgevoerd # ongeacht het aantal logs dat overeenkomt met de gespecificeerde postrotate template # het script wordt onmiddellijk na rotatie uitgevoerd als [-f "`. / etc / apache2 / envvars; echo $ (APACHE_PID_FILE: - / var / run / apache2.pid) `"]; dan /etc/init.d/apache2 reload> / dev / null fi eindscript)

Bovendien is de eerste regel /var/log/apache2/*.log er is niets meer dan een sjabloon voor verwerkte logbestanden. Dit betekent dat de gespecificeerde rotatieconfiguratie zal worden gebruikt voor alle bestanden die zich in de / var / log / apache2 / directory bevinden en de extensie "log" hebben.

Er zijn veel geldige richtlijnen in het configuratiebestand (meer dan 40). Je kunt er meer over te weten komen via man logrotate.

Basis logrotate-opties

In de regel wordt het na het instellen van het configuratiebestand noodzakelijk om de werking te controleren logrotate voor nieuwe logboeken. Hiervoor is er de mogelijkheid tot directe lancering logrotate vanaf de opdrachtregel. In dit geval zijn de volgende opties toegestaan:

  • -NS... Schakelt de foutopsporingsmodus in en dupliceert ook de optie -v... In debug-modus wordt er geen actie op de logs uitgevoerd.
  • -f, -kracht... Dwingt logrotatie om de logs te roteren. Het is soms nodig na het toevoegen van nieuwe configuratiebestanden of als het oude logbestand handmatig is verwijderd; hierdoor worden nieuwe logbestanden gemaakt en wordt het loggen gracieus voortgezet.
  • -m, —mail opdracht ... Specificeert welke opdracht moet worden gebruikt om logboeken te mailen. De opdracht moet 2 invoerparameters hebben:
    • letterkop
    • de ontvanger van de brief
  • -s, —staat staatsbestand ... Geeft het gebruik van een alternatief statusbestand aan. Handig in gevallen waarin logrotate wordt uitgevoerd als verschillende gebruikers voor verschillende sets logbestanden. Standaard statusbestand: / var / lib / logrotate / status
  • -Gebruik... Geeft korte instructies weer over het gebruik van het hulpprogramma.
  • -v, —uitgebreid... Uitvoer van diagnostische berichten tijdens rotatie

Voorbeeld voor het configureren van Logrotate

Laten we als voorbeeld zeggen dat in de directory / home / site / site / logs / de logbestanden van webservers zoals nginx en apache staan. Ze werken samen: - frontend, apache2-backend.

$ meer /etc/logrotate.d/debianworld.ru # Roterende nginx-logboeken (front-end) # Serveert statisch, al het andere is proxy naar apache. # Er wordt intensiever gelogd. /home/dw/debianworld.ru/logs/nginx_*.log (dagelijks # dagelijkse rotatie missingok # bestand ontbreekt is geen fout roteren 45 # 45 dagen geschiedenis wordt bewaard comprimeren # geroteerde bestanden worden gecomprimeerd delaycompress # geroteerde bestanden worden niet gecomprimeerd, de rest is gecomprimeerd notifempty # verwerk geen lege bestanden maak 640 dw www-data # rechten, de gebruiker van het nieuwe sharedscripts-bestand # prerotate / postrotate worden slechts eenmaal uitgevoerd prerotate # Verzamelen van statistieken voor AWstats / usr / bin / perl / usr / lib / cgi-bin / awstats .pl -update -config = debianworld.ru -databasebreak = day endscript postrotate # Herstart nginx [! -f /var/run/nginx.pid] || kill -USR1 `cat / var / run / nginx.pid` endscript) # Logrotatie apache2 (back-end) # Loggen is minder intensief. /home/dw/debianworld.ru/logs/apache*.log (wekelijks # wekelijkse rotatie missingok # bestand ontbreekt is geen fout roteren 4 # 4 weken geschiedenis wordt bewaard comprimeren # geroteerde bestanden worden gecomprimeerd nodelaycompress # bestand dat wordt geroteerd is ook gecomprimeerd notifempty # geen lege bestanden verwerken maak 640 dw www-data # rechten, gebruiker van nieuw sharedscripts-bestand # postrotate wordt slechts eenmaal uitgevoerd postrotate # Herstart apache2 als [-f /var/run/apache.pid]; dan /etc/init. d/apache2 herstart > / dev / null fi endscript)