Het sorteren van een log boek bestand met een specifieke kolom is handig voor het vinden van informatie snel. Logs worden meestal opgeslagen als leesbare tekst, dus u kunt het gebruik van opdracht regel tekst manipulatie gereedschappen om ze te verwerken en ze bekijken in een meer leesbare manier.
Het uitpakken van Kolommen met knippen en awk
Het knippen en awk hulpprogramma ‘ s zijn twee verschillende manieren om op te halen een kolom van de informatie uit tekstbestanden. Zowel stel uw log-bestanden worden spaties gescheiden, bijvoorbeeld:
kolom kolom kolom
Dit geeft een probleem als de gegevens in de kolommen bevat witruimte, zoals data (“Wo Jun 12”). Tijdens het knippen kunt dit zien als drie afzonderlijke kolommen, kunt u nog steeds extract ze alle drie tegelijk, mits de structuur van het log boek bestand is consistent.
knippen is zeer eenvoudig te gebruiken:
cat-systeem.log | cut-d ” -f 1-6
Het cat commando leest de inhoud van het systeem.log en leidingen te snijden. De -d vlag hiermee geeft u het scheidingsteken, in dit geval een spatie. (De standaard is het tabblad t.) De -f vlag geeft aan welke velden tot aan de output. Dit commando is specifiek zullen de eerste zes kolommen van het systeem.log. Als je wilde alleen afdrukken van de derde kolom, zou je gebruik maken van de -f 3-vlag.
awk is krachtiger, maar niet zo overzichtelijk. knippen is handig voor het extraheren van kolommen, als je wilde om een lijst van IP-adressen van uw Apache logs. awk kan herschikken hele lijnen, die nuttig kan zijn voor het sorteren van een volledige document door een specifieke kolom. awk is een volwaardige programmeertaal, maar u kunt gebruik maken van een eenvoudige opdracht afdrukken kolommen:
cat-systeem.log | awk ‘{print $1, $2}’
awk voert uw opdracht voor elke regel in het bestand. Standaard, splitst het bestand door witruimtes en winkels elke kolom in de variabelen $1, $2, $3, enzovoort. Door het gebruik van de print $1 opdracht is, kunt u het afdrukken van de eerste kolom, maar er is geen gemakkelijke manier om het afdrukken van een reeks kolommen zonder gebruik te maken van loops.
Een voordeel van awk is dat de opdracht als referentie kunt u de hele regel in een keer. De inhoud van de lijn zijn opgeslagen in de variabele $0, die u kunt gebruiken voor het afdrukken van de hele lijn. Zo kan u bijvoorbeeld het afdrukken van de derde kolom voor het afdrukken van de rest van de lijn:
awk ‘{print $3 “” $0}’
De “” hiermee wordt een ruimte tussen de $3 en $0. Dit commando herhaalt kolom drie twee keer, maar u kunt deze instelling de $3 variabele null:
awk ‘{printf $3; $3=””; print “” $0}’
De printf opdracht niet afdrukken van een nieuwe regel. U kunt ook bepaalde kolommen in de output door ze alle lege tekenreeksen voor het afdrukken van $0:
awk ‘{$1=$2=$3=””; print $0}’
U kunt veel meer doen met awk, met inbegrip van regex matching, maar de out-of-the-box kolom extractie werkt goed voor deze use case.
Sorteren van Kolommen met soort en uniq
De soort opdracht kan worden gebruikt om een lijst van gegevens die gebaseerd zijn op een specifieke kolom. De syntaxis is:
sorteren -k, 1
waar de vlag-k geeft het nummer van de kolom. Je pijp input in dit commando, en spuugt een geordende lijst. Standaard soort gebruikt alfabetische volgorde, maar ondersteunt meer opties door middel van vlaggen, zoals -n voor numerieke sorteren, -h voor suffix soort (1M > 1K), -M voor het sorteren van de maand van de afkortingen en de optie-V voor het sorteren van versie nummers (bestand-1.2.3 > bestand-1.2.1).
De uniq commando filtert dubbele lijnen, waardoor er slechts unieke exemplaren. Het werkt alleen voor de aangrenzende lijnen (van de prestaties), zodat je nodig hebt om gebruik hem altijd na het sorteren voor het verwijderen van duplicaten in het hele bestand. De syntax is eenvoudig:
sorteren -k 1 | uniq
Als u wilt de lijst met alleen de dubbels, gebruik van de vlag-d.
uniq kan ook het tellen van het aantal kopieën dat met de -c vlag te gebruiken, dat maakt het erg goed voor het bijhouden van de frequentie. Bijvoorbeeld, als je wilde om een lijst van de top IP-adressen raken van je Apache-server, zou je de volgende opdracht uitvoeren op uw toegang.log:
cut-d ” -f 1 – | sort | uniq -c | sort-nr | head
Deze reeks van commando ‘ s knip het IP-adres van de kolom groep op de dubbels samen, verwijder de duplicaten tijdens het tellen van elk item, dan sorteren op basis van de telling kolom in aflopende numerieke volgorde, waardoor je met een lijst die lijkt op:
21 192.168.1.1
12 10.0.0.1
5 1.1.1.1
2 8.0.0.8
Je kunt het toepassen van deze technieken om uw log-bestanden, in aanvulling op andere hulpprogramma ‘ s, zoals awk en sed, trekken nuttige informatie uit. Deze keten-commando ‘ s zijn lang, maar je hoeft ze niet te typen in elke tijd, zoals u kunt altijd op te slaan in een bash-script of alias ze via uw ~/.bashrc.
Gegevens filteren met grep en awk
grep is een zeer eenvoudige opdracht; je geeft een zoekterm in en doorgeven ingang, en het zal spuwen elke regel met die zoekterm. Bijvoorbeeld, als je wilde om te zoeken naar de Apache toegang logboek voor de 404-fouten, die je zou kunnen doen:
kat toegang.log | grep “404”
die zou uitspugen een lijst van vermeldingen die overeenkomt met de gegeven tekst.
Echter, grep niet kunt beperken het zoeken naar een specifieke kolom, dus deze opdracht zal mislukken als u de tekst “404” ergens anders in het bestand. Als u alleen wilt zoeken in de HTTP status code kolom, moet u gebruik maken van awk:
kat toegang.log | awk ‘{if ($9 == “404”) print $0;}’
Met awk, je hebt ook het voordeel dat ze kunnen doen is de negatieve zoekt. U kunt bijvoorbeeld zoeken naar alle log boek vermeldingen die niet met statuscode 200 (OK):
kat toegang.log | awk ‘{if ($9 != “200”) print $0;}’
evenals het hebben van toegang tot de programmatische awk functies biedt.
GUI Opties voor Web-Logs
GoAccess is een CLI hulpprogramma voor het monitoren van uw web server access log in real-time, en sorteert u op elke nuttige veld. Het loopt volledig in uw terminal, zodat je het kunt gebruiken via SSH, maar het heeft ook een veel meer intuïtieve web-interface.
apachetop is een ander programma speciaal voor apache, die kunnen worden gebruikt om te filteren en sorteren op de kolommen in uw access-log. Het loopt in real-time direct op uw toegang.log.