De flesta tjänster på Linux genererar loggfiler, vanligtvis lagrade i |_+_|. Det här är bara vanliga textfiler, men de kan bli riktigt stora, till den grad att du kan köra din server utan utrymme.
Vad gör Logrotate?
Logrotate hjälper till att hantera loggfiler och förhindrar att de hopar sig. Den kommer automatiskt att arkivera den aktuella loggfilen, skapa en ny tom och radera de riktigt gamla filerna efter att ha roterat den flera gånger. Standardtiden kan ställas in på ett mycket högt värde (nginx har som standard ett loggår), så du kan stöta på problem om du inte ändrar konfigurationsfilerna.
Storleken på dina filer kommer att variera beroende på tjänsten och du måste konfigurera logrotate därefter. Om du vill veta hur mycket utrymme varje tjänst tar upp med loggar kan du använda |_+_| Jag skickar:
|_+_|
De flesta av loggfilerna kommer att finnas i |_+_|, så |_+_| kommer att summera alla loggfiler och visa dem i en trevlig lista (med tillstånd av |_+_| för 'läsbar för människor'):
Detta visar bara kataloger, så du måste använda |_+_| för att hitta storleken på enskilda filer.
Vanligtvis kommer saker som webbservrar (apache2, nginx, etc.) och andra applikationer som får mycket interaktion att generera många loggfiler, även om den exakta storleken beror på hur mycket data de skriver till disken.
Installera Logrotate (om du inte redan har det)
Som standard behöver du förmodligen inte göra något för att konfigurera logrotate eftersom det är installerat som standard på många distributioner och tjänster som genererar många loggfiler (nginx, apache etc) vanligtvis har logrotate konfigurerat förkonfigurerat.
Du kan kontrollera om logrotate är installerat med:
|_+_|Eller installera den från din distributions pakethanterare om den inte är det. För Debianbaserade system som Ubuntu skulle det vara:
|_+_|Logrotate kommer automatiskt att installera dina globala standardinställningar, men om du installerade det efter att du installerat din webbserver kan du behöva installera om din webbserver om standardinställningarna för den tjänsten inte genereras.
Hur Logrotate fungerar
Även om logrotate kommer att vara förkonfigurerad för populära tjänster som nginx och apache2, kanske du vill ställa in konfigurationen manuellt eller ändra standardinställningarna.
Den globala logrotate-konfigurationen lagras i |_+_|, men kommer att skriva över mycket av den med konfigurationsfilerna per applikation, lagrade i |_+_| katalog. Låt oss ta en titt på standard nginx-konfigurationen i |_+_|, som du kan använda som en mall för att lägga till nya logrotate-applikationer:
|_+_|Den första raden startar blocket och talar om för logrotate vilka filer man ska leta efter. Jokern |_+_| kommer att matcha alla filer som slutar med |_+_| förlängning i nginx-loggmappen. Du kan också ange flera kataloger här för att inkludera med samma inställningar.
varje vecka kommer att rotera loggar en gång i veckan. Om du vill rotera dem baserat på storlek kan du använda |_+_| för att rotera dem när en viss gräns har nåtts, 25 megabyte i det här exemplet.
saknas kommer att förhindra logrotate från att generera fel om en loggfil raderas från något annat än logrotate.
rotera med 52 det kommer att behålla 52 olika loggfiler. I det här fallet, eftersom den kommer att rotera en gång i veckan, kommer logrotate att behålla ett helt års loggfiler innan de gamla raderas. Du kan ändra det till |_+_| att bara behålla en månads loggfiler.
komprimera kommer att komprimera gamla loggfiler för att spara utrymme. Detta orsakar problem med att vissa applikationer fortsätter att skriva till loggfilen medan logrotate fortfarande gör sitt jobb, så du kan lägga till komprimerad fördröjning flagga för att lämna en buffert av en gammal loggfil före komprimering.
underrättelse är en annan bockmarkering för att säkerställa att logrotate bara körs om nya loggfiler skrivs. De att skapa flaggan skapar dessa nya loggfiler, med specifika behörigheter. Syntaxen är |_+_|.
Du måste se till att de matchar vad dina nuvarande loggfiler är inställda på, vilket du kan göra med |_+_|:
Observera att du måste konvertera läget till oktalt och sedan |_+_| blir |_+_|. Nginx-ägaren här är |_+_|, och gruppen är |_+_|.
delade manus anger att förrotera det är efterrotera krokarna körs bara en gång per rotation och inte en gång per roterad loggfil. Dessa krokar är skript som du kan anropa före och efter rotationen. Som standard kommer dessa att köra några skript för att konfigurera nginx för att ändra loggfiler. Om tjänsten du konfigurerar inte kan ladda upp nya loggfiler rekommenderar vi att du stoppar och startar om den på dessa länkar. Kroken får dock inte interagera med tjänsten; till exempel kan du använda förrotationsbindning för att säkerhetskopiera loggfiler till AWS S3 med |_+_| innan de tas bort.
Logrotate tar hand om själva körningen, så du behöver inte oroa dig för att starta tjänsten vid uppstart eller ställa in en |_+_| Arbetar. Ange helt enkelt konfigurationsfilerna för varje applikation i |_+_|och oroa dig aldrig för loggar igen.
Vad tror du?