Gzip logfiles doorzoeken¶
Oudere logfiles op een server worden door logrotate vaak ingepakt met gzip (bv. access.log.10.gz). Je hoeft die bestanden niet eerst uit te pakken om erin te zoeken: met zgrep doorzoek je ze direct.
Zoeken met zgrep¶
zgrep werkt hetzelfde als grep, maar dan op gzip-bestanden:
zgrep "zoekterm" example-hostname-nl-access.log.10.gz
Gewone en ingepakte logs tegelijk
zgrep kan ook gewone, niet-ingepakte bestanden lezen. Met een wildcard doorzoek je dus in één keer de actuele log én alle oudere, ingepakte logs:
zgrep "zoekterm" example-hostname-nl-access.log*
Handige opties¶
Omdat zgrep de opties van grep doorgeeft, werken de bekende grep-opties gewoon:
| Optie | Betekenis | Voorbeeld |
|---|---|---|
-i |
Niet hoofdlettergevoelig zoeken | zgrep -i "error" access.log* |
-c |
Alleen het aantal treffers per bestand tonen | zgrep -c "POST /checkout" access.log* |
-h |
Bestandsnaam niet tonen voor elke regel | zgrep -h "192.168.1.10" access.log* |
-v |
Regels tonen die de zoekterm niet bevatten | zgrep -v "bot" access.log.2.gz |
-E |
Zoeken met een uitgebreide reguliere expressie | zgrep -E " 50[0-9] " access.log* |
Handige varianten¶
Gebruik zcat om de inhoud uit te pakken naar de terminal en combineer het met andere commando's. Bijvoorbeeld de 10 IP-adressen met de meeste verzoeken:
zcat example-hostname-nl-access.log.*.gz | awk '{print $1}' | sort | uniq -c | sort -rn | head -10
Wil je een ingepakte logfile rustig doorlezen? Gebruik zless:
zless example-hostname-nl-access.log.10.gz
Zoek binnen zless met ++slash++ gevolgd door je zoekterm, en sluit af met ++q++.
Sla de treffers op in een bestand om ze later te analyseren of te delen:
zgrep "zoekterm" example-hostname-nl-access.log* > ~/zoekresultaat.txt
Beschikbaarheid
zgrep, zcat en zless zijn standaard aanwezig op Linux-servers (Ubuntu/Debian) en op macOS. Je hoeft niets te installeren.