Hoe Linux-bestandslogboeken te beheren met Achieve

Linux-distributies zijn ideaal voor elk type bedrijfsomgeving dankzij hun vermogen om zich aan te passen aan nieuwe functies en nieuwe rollen en, het beste van alles, gratis dankzij open code.

We hebben duizenden applicaties of hulpprogramma's die zijn ontworpen voor gecentraliseerde controle over alle aspecten van het systeem en op deze manier weten we als beheerders of IT-personeel met zekerheid wanneer er een storing optreedt en hoe deze op te lossen.

Binnen dit brede scala aan mogelijkheden vinden we Logrotate, een hulpprogramma van de distributie en zijn functie is de rotatie en compressie van de logbestanden.

Deze taak is belangrijk omdat, door geen actie te ondernemen op deze bestanden, de ruimte op de harde schijf kan worden aangetast, wat kan leiden tot andere soorten algemene fouten.

In dit geval zullen we Ubuntu 17.10 gebruiken en Logrotate is standaard geïnstalleerd en is al geconfigureerd om de logrotatietaken van alle geïnstalleerde pakketten te beheren, inclusief rsyslog, de standaard systeemlogprocessor.

Vervolgens zullen we zien hoe we dit waardevolle hulpprogramma kunnen installeren en gebruiken.

1. Identificeer de versie van Logrotate geïnstalleerde Linux


De eerste stap die u moet nemen, is om in detail te weten welke versie van Logrotate we hebben in, in dit geval, Ubuntu 17.10. Hiervoor voeren we het volgende commando uit:
 logrotate -versie
Het resultaat zal het volgende zijn:

VERGROTEN

Als Logrotate niet is geïnstalleerd, krijgen we een foutmelding. We kunnen de tool installeren met behulp van de pakketbeheerder van de gebruikte Linux-distributie.

Als Logrotate is geïnstalleerd maar het versienummer aanzienlijk verschilt, kunnen we problemen hebben met sommige instellingen van het hulpprogramma. We kunnen de documentatie van de specifieke versie van Logrotate rechtstreeks raadplegen in de man-pagina:

 man logrotate
We kunnen de standaardconfiguratiestructuur van Logrotate zien in de Linux-distro:

VERGROTEN

2. Logrotate Linux-configuratie


Logrotate-configuratie-informatie is in het geval van Ubuntu over het algemeen op twee plaatsen te vinden:

etc / logrotate.confDit bestand bevat enkele standaardinstellingen en stelt de rotatie in voor sommige logboeken die geen eigendom zijn van een systeempakket. Het maakt ook gebruik van een include-statement om instellingen op te halen uit elk bestand in de directory /etc/logrotate.d.

/etc/logrotate.d/In deze map zal elk pakket dat we installeren en hulp nodig hebben bij logrotatie, zijn Logrotate-configuratie plaatsen. In een standaardinstallatie zouden hier al bestanden moeten bestaan ​​voor basissysteemtools, zoals apt, dpkg, rsyslog, enz.

Standaard configureert logrotate.conf wekelijkse logrotaties (wekelijks), met logbestanden die eigendom zijn van de rootgebruiker en de syslog-groep (su root syslog), met vier logbestanden die worden bewaard (roteren 4) en nieuwe bestanden worden leeg gemaakt verslagen. gemaakt nadat de stroom is geroteerd (creëren).

We hebben toegang tot het Logrotate-configuratiebestand van een pakket in /etc/logrotate.d met behulp van het cat-hulpprogramma:

 cat /etc/logrotate.d/apt

VERGROTEN

Dit bestand bevat configuratieblokken voor twee verschillende logbestanden in de / var / log / apt / directory: term.log en history.log. Ze hebben allebei dezelfde opties.

Elke optie die niet in deze configuratieblokken is ingesteld, erft de standaardwaarden of die zijn ingesteld in /etc/logrotate.conf. De opties die zijn geconfigureerd voor apt-logboeken zijn:

roteren 12Bewaart twaalf oude logbestanden.

MaandelijksDraai een keer per maand.

SamendrukkenHet zorgt voor het comprimeren van de geroteerde bestanden. Dit gebruikt standaard gzip en resulteert in bestanden die eindigen op de extensie .gz. Het compressiecommando kan worden gewijzigd met de optie compresscmd.

missingokHet schrijft geen foutmelding als het logbestand ontbreekt.

meldingHet roteert het logbestand niet als het leeg is.

Er zijn nog veel meer configuratiemogelijkheden.

3. Configureer een Linux Logrotate-service en voeg configuratie toe aan /etc/logrotate.d/


Vervolgens zullen we een configuratiebestand configureren om de logboeken te verwerken van een service die we zullen maken.

Om de logbestanden voor toepassingen buiten de voorverpakte en voorgeconfigureerde systeemservices te beheren, hebben we twee opties:

  • Maak een nieuw Logrotate-configuratiebestand en plaats het in het pad /etc/logrotate.d/. Dit wordt dagelijks uitgevoerd als de rootgebruiker, samen met alle andere standaard Logrotate-taken.
  • Maak een nieuw configuratiebestand en voer het uit buiten de standaard Logrotate-configuratie van Ubuntu. Dit is alleen nodig als we Logrotate moeten uitvoeren als een niet-rootgebruiker, of als je logs vaker dan dagelijks wilt roteren (een uurlijkse instelling in /etc/logrotate.d/ zou niet effectief zijn, omdat de Logrotate-instelling van het systeem wordt maar één keer per dag uitgevoerd).

In dit geval willen we logrotatie configureren voor een webserver die een access.log en error.log in het pad / var / log / solvetic-app / plaatst. Het wordt uitgevoerd als de www-data-gebruiker en -groep.

Om een ​​configuratie toe te voegen aan /etc/logrotate.d/, moeten we eerst als volgt een nieuw bestand openen:

 sudo nano /etc/logrotate.d/solvetic-app
daar zullen we de volgende regels toevoegen:
 /var/log/solvetic-app/*.log {dagelijks missingok roteren 14 comprimeren notifempty maak 0640 www-data www-data sharedscripts postrotate systemctl herlaad solvetic-app endscript}

VERGROTEN

We kunnen de wijzigingen opslaan met de toetsencombinatie Ctrl + O en we verlaten de editor met Ctrl + X.

Enkele van de nieuwe configuratierichtlijnen in dit bestand zijn:

maak 0640 www-data www-dataDeze parameter maakt na rotatie een nieuw leeg logbestand aan, met de opgegeven machtigingen (0640), eigenaar (www-data) en groep (ook www-data).

gedeelde scriptsDeze vlag geeft aan dat scripts die aan de configuratie zijn toegevoegd, slechts één keer per run worden uitgevoerd, in plaats van voor elk geroteerd bestand.

postroteren naar eindscriptDit blok bevat een script dat moet worden uitgevoerd nadat het logbestand is geroteerd. In dit geval kunnen we onze solvetic-app opnieuw laden. Dit is soms nodig om de toepassing te laten overschakelen naar het nieuw aangemaakte logbestand.

We moeten rekening houden met postrotate-uitvoeringen voordat logs worden gecontroleerd. Het comprimeren kan lang duren en de software moet onmiddellijk overschakelen naar het nieuwe logbestand. Voor taken die moeten worden uitgevoerd nadat de records zijn gecomprimeerd, gebruikt u in plaats daarvan het blok lastaction.

Nadat we de configuratie hebben aangepast die het beste bij onze behoeften past en ze zijn opgeslagen in /etc/logrotate.d, kunnen we deze controleren door de volgende regel uit te voeren.

 sudo logrotate /etc/logrotate.conf -debug
Dit roept logrotate aan, verwijst naar het standaard configuratiebestand en activeert de foutopsporingsmodus:

VERGROTEN

Informatie over welke logbestanden Logrotate verwerkt en wat erop wordt uitgevoerd, wordt afgedrukt. Als alles er goed uitziet, zijn we klaar. De standaard Logrotate-taak wordt eenmaal per dag uitgevoerd en bevat uw nieuwe instellingen.

4. Een standalone logboekconfiguratie maken Lograte Linux


Eerst maken we een configuratiebestand in onze homedirectory. We kunnen het openen met een teksteditor:
 sudo nano /home/solvetic/logrotate.conf
In het nieuwe bestand plakken we het volgende:
 /home/solvetic/logs/*.log {per uur ontbrekende ok roteren 24 comprimeren maken}

VERGROTEN

We kunnen de wijzigingen opslaan en het bestand verlaten.

Deze instelling roteert bestanden elk uur, comprimeert en behoudt vierentwintig oude records en creëert een nieuw logbestand om het geroteerde bestand te vervangen. Om te testen of het correct werkt, kunnen we een logbestand maken door de volgende regels uit te voeren:

 cd ~ sudo mkdir logs sudo touch logs / access.log

VERGROTEN

Nu we een leeg logbestand op de juiste plaats hebben, voeren we de opdracht logrotate uit.
We zullen het volgende uitvoeren:

 logrotate /home/solvetic/logrotate.conf --state / home / solvetic / logrotate-state -verbose

VERGROTEN

De parameter --verbose drukt gedetailleerde informatie af over wat we met Logrotate uitvoeren. In dit geval zullen we zien dat er niets is gedraaid. Dit is de eerste keer dat Logrotate dit logbestand heeft gezien, en zoals we weten is het bestand nul uur oud en mag het niet worden geroteerd.

Als we naar het statusbestand kijken, zien we dat Logrotate bepaalde informatie heeft vastgelegd over de uitvoering die we hebben uitgevoerd:

 kat / home / oplossen / logrotate-state
We zullen het volgende zien:

VERGROTEN

Logrotate noteerde de records die het heeft geanalyseerd en wanneer het deze voor het laatst heeft overwogen voor rotatie. Als we dezelfde opdracht een uur later uitvoeren, wordt de record geroteerd zoals bedoeld. Als u Logrotate wilt dwingen om het logbestand te roteren wanneer dit niet anders zou moeten, kunnen we de --force vlag gebruiken:

 sudo logrotate /home/solvetic/logrotate.conf --state / home / solvetic / logrotate-state --verbose -force

5. Een geplande taak maken op Achieve Linux


Ten slotte moeten we een cron-taak configureren om Logrotate elk uur uit te voeren. Om dit te doen, openen we de crontab van onze gebruiker door het volgende uit te voeren:
 crontab -e
In het geopende bestand zullen we de volgende regel toevoegen:
 14 * * * * / usr / sbin / logrotate /home/solvetic/logrotate.conf --state / home / solvetic / logrotate-status

VERGROTEN

Deze taak wordt elke dag op de 14e minuut van elk uur uitgevoerd. Het werkt in principe met hetzelfde logrotate-commando dat we eerder hebben uitgevoerd, hoewel we logrotate hebben uitgebreid naar het volledige pad van / usr / sbin / logrotate. We kunnen het bestand opslaan met de toetsencombinatie Ctrl + O en afsluiten met Ctrl + X.

We hebben dus gezien hoe Logrotate een eenvoudig maar effectief hulpprogramma is als het gaat om het beheren en controleren van records in elke Linux-distributie.

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave