Automatyczna rotacja logów i czyszczenie
Dbaj o wolne miejsce na dyskach, automatyzując rotację logów i usuwanie starych plików za pomocą logrotate oraz zaplanowanych skryptów opartych na find.
Automatyczna rotacja logów i czyszczenie to bezpłatna lekcja DevOps Bootcamp na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej DevOps Bootcamp, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
Problem rozrastających się dzienników
Długotrwale działające usługi zapisują dzienniki bez końca. Bez zarządzania zapełniają dysk i powodują awarię systemu. Rotacja i czyszczenie pomagają utrzymać je pod kontrolą.
du -sh /var/log/*Na czym polega rotacja dzienników
Rotacja zmienia nazwę bieżącego dziennika, tworzy nowy pusty plik i zachowuje ograniczoną liczbę starszych, skompresowanych kopii.
- app.log zmienia się w app.log.1
- starsze kopie są kompresowane za pomocą gzip
- najstarsze kopie są usuwane
Wprowadzenie do logrotate
logrotate to standardowe narzędzie systemu Linux, które automatyzuje rotację na podstawie rozmiaru lub wieku, zgodnie z konfiguracją w /etc/logrotate.d/.
cat /etc/logrotate.confPodstawowa konfiguracja logrotate
Blok konfiguracji określa pliki dzienników i zasady rotacji.
/var/log/myapp/*.log {
daily
rotate 7
compress
missingok
notifempty
}Objaśnienie dyrektyw
Typowe dyrektywy:
dailyrotacja codziennierotate 7zachowanie 7 starych plikówcompresskompresowanie rotowanych dzienników za pomocą gzipmissingokpomijanie pliku, jeśli go nie ma
Testowanie bez czekania
Proszę wymusić uruchomienie za pomocą -f lub wykonać próbne uruchomienie za pomocą -d, aby sprawdzić konfigurację przed zaufaniem harmonogramowi.
logrotate -d /etc/logrotate.d/myapp
logrotate -f /etc/logrotate.d/myappSkrypty postrotate
Wiele usług zachowuje otwarty uchwyt do starego pliku. Blok postrotate informuje usługę, aby po rotacji ponownie otworzyła dziennik.
/var/log/myapp/*.log {
daily
postrotate
systemctl reload myapp
endscript
}Czyszczenie starych plików za pomocą find
Do doraźnego czyszczenia można użyć find wraz z -mtime, aby znaleźć pliki starsze niż N dni i je usunąć.
find /var/log/myapp -name "*.log" -mtime +30 -deleteBezpieczny skrypt czyszczący
Proszę umieścić czyszczenie w skrypcie, który rejestruje usuwane elementy, aby zachować ścieżkę audytu.
#!/bin/bash
DIR=/var/backups
find "$DIR" -name "*.tar.gz" -mtime +14 -print -delete \
>> /var/log/cleanup.log 2>&1Planowanie czyszczenia
Rotację należy skonfigurować w logrotate (który jest już uruchamiany przez cron), a własne skrypty czyszczące zaplanować za pomocą osobnego wpisu w crontab.
# crontab -e
30 2 * * * /usr/local/bin/cleanup.shMonitorowanie użycia dysku
Proszę dodać mechanizm alarmujący po przekroczeniu przez partycję określonego progu, aby czyszczenie nigdy nie było uruchamiane zbyt późno.
USAGE=$(df --output=pcent / | tr -dc "0-9")
[ "$USAGE" -gt 90 ] && echo "Disk over 90%" | mail -s alert rootSzybkie sprawdzenie
Proszę sprawdzić swoją wiedzę na temat automatyzacji.
Podsumowanie
Zautomatyzował(a) Pan/Pani porządkowanie dzienników:
- logrotate wykonuje rotację według wieku lub rozmiaru za pomocą
rotate,compress,postrotate - Konfigurację można sprawdzać za pomocą
-d/-f - Do własnego czyszczenia można użyć
find -mtime +N -delete - Planowanie odbywa się za pomocą cron, a zabezpieczenie zapewniają alerty dotyczące użycia dysku
Często zadawane pytania
Czy lekcja „Automatyczna rotacja logów i czyszczenie” jest bezpłatna?
Tak — pełny tekst „Automatyczna rotacja logów i czyszczenie” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu DevOps Bootcamp, przejdź na CoddyKit PRO. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
Co nauczysz się w „Automatyczna rotacja logów i czyszczenie”?
Dbaj o wolne miejsce na dyskach, automatyzując rotację logów i usuwanie starych plików za pomocą logrotate oraz zaplanowanych skryptów opartych na find. Ćwiczysz DevOps Bootcamp z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć DevOps Bootcamp?
Nie wymagamy żadnego doświadczenia. DevOps Bootcamp w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Automatyczna rotacja logów i czyszczenie”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji DevOps Bootcamp?
Tak. Każda lekcja DevOps Bootcamp zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Planowanie zadań za pomocą Cron
- Automatyzacja administracji systemem
- Projekt z zaawansowanego skryptowania
- Automatyczna rotacja logów i czyszczenie