Przeszukiwanie logów w konsoli

W poprzednim poście dot. inwestygacji padła sugestia, że dobrą praktyką jest szukanie odpowiedzi w logach. Są one jednak bardzo często bardzo obszerne i sama próba otworzenia ich w notatniku, z góry skazana jest na niepowodzenie. Znów pytanie aż samo ciśnie się na usta „jak żyć?”. No rzekłabym żyć normalnie i się nie przejmować 🙂 Są bowiem narzędzia, które pozwolą Wam analizować zebrane logi i tworzyć z nich wyselekcjonowane outputy.

Nazwy i definicje narzędzi

cat / zcat

Program (komenda wiersza poleceń), który służy do łączenia plików (np. podzielonych komendą split) oraz kierowania zawartości plików na standardowe wyjście – wyświetlania ich na ekranie.

grep / zgrep

Program (komenda wiersza poleceń), który służy do wyszukiwania w tekście i wyodrębniania linii zawierających ciąg znaków pasujący do podanego wyrażenia regularnego.

head / tail

Uniksowe polecenie wypisujące podaną liczbę pierwszych / ostatnich linii pliku lub potoku (domyślnie 10). Może być stosowane jako narzędzie diagnostyczne do sprawdzania zmian w plikach

Przykłady wykorzystania poleceń

cat / zcat

cat /var/log/apache2/access.log
Wyświetl wszystkie linie pliku /var/log/apache2/access.log
zcat /var/log/apache2/access.log.1.gz
Wyświetl wszystkie linie pliku /var/log/apache2/access.log.1.gz
zcat fraza /var/log/apache2/access.log.*.gz
Wyświetl wszystkie linie pliku /var/log/apache2/access.log.1.gz, gdzie * oznacza maskę dla dowolnego ciągu znaków np. liczb

grep / zgrep

grep fraza /var/log/apache2/access.log

cat /var/log/apache2/access.log | grep fraza
Wyświetl wszystkie linie pliku /var/log/apache2/access.log, gdzie występuje ‚fraza’
zgrep fraza /var/log/apache2/access.log.1.gz
zcat /var/log/apache2/access.log.1.gz | grep fraza
Wyświetl wszystkie linie pliku /var/log/apache2/access.log.1.gz, gdzie występuje ‚fraza’
zgrep fraza /var/log/apache2/access.log.*.gz
Wyświetl wszystkie linie pliku /var/log/apache2/access.log.1.gz, gdzie występuje ‚fraza’, gdzie * oznacza maskę dla dowolnego ciągu znaków np. liczb
grep fraza mainlog | /usr/bin/awk '{print $4}’
Wyświetl 4 kolumnę z pliku mainlog , gdzie występuje ‚fraza’. Za kolumnę uważa się treści oddzielone spacją bądź tabulatorem
exec("git branch -a | grep '*'", $shellOutput);
Zwróć do tablicy $shellOutput wynik:
git branch -a |  grep '*'
Pozwala sprawdzić na jakim branchu aktualnie się znajdujemy

head / tail

tail -f /var/log/apache2/access.log
Wyświetl na bieżąco co jest dopisywane do pliku /var/log/apache2/access.log
head -100 /var/log/apache2/access.log
Wyświetl 100 pierwszych linii pliku /var/log/apache2/access.log
tail -100 /var/log/apache2/access.log
wyświetl 100 ostatnich linii pliku /var/log/apache2/access.log
head -100 /var/log/apache2/access.log | grep fraza
Przeszukaj 100 pierwszych linii pliku /var/log/apache2/access.log i wyświetl te, w których znajduję się ‚fraza’
tail -100 /var/log/apache2/access.log | grep fraza
Przeszukaj 100 ostatnich linii pliku /var/log/apache2/access.log i wyświetl te, w których znajduję się ‚fraza’
zcat /var/log/apache2/access.log.1.gz | head -100
Wyświetl 100 pierwszych linii pliku /var/log/apach2e/access.log.1.gz
zcat /var/log/apache2/access.log.1.gz | tail -100
Wyświetl 100 ostatnich linii pliku /var/log/apache2/access.log.1.gz