Status-Codes aus Logfile parsen

Es kann interessant sein, die von einem Webserver ausgelieferten HTTP-Status-Codes zu analysieren. Diese werden im Access-Log des Webservers abgelegt. Hier ein Versuch.

 wc -l 2007-02-access.log 
103509 2007-02-access.log

Das Logfile hat also etwas mehr als 100’000 Zeilen.

 /usr/bin/time awk '{print $10}' < 2007-02-access.log 
| egrep '200|204|206|301|302|304|403|404|503'
| sort -nr
| uniq -c
| sort -nr

Anmerkung: Abhängig vom LogFormat liegen die Status-Codes in einer andern Spalte, “$10” gibt diese an. Falls mal etwas anderes in der jeweiligen Spalte zu liegen kommen sollte, macht es Sinn, die interessanten Status-Codes zu “egrep‘”en.

Das gibt mir etwa folgenden Output:

        0.66 real
78261 200
11616 304
9278 301
3580 404
481 302
168 206
32 204
17 503

Ausführungszeit ist 2/3 Sekunde, was doch ziemlich hoch ist. Hat jemand eine schnellere Version?

4 thoughts on “Status-Codes aus Logfile parsen”

  1. Hi Daniel, Merci für das Snipplet. Das dauert bei mir länger:

    2.11 real         2.03 user         0.00 sys
    

    Während der andere aufs gleiche Log:

    0.73 real         0.66 user         0.02 sys
    

    Perl scheint da nicht ganz so flink zu sein 😉

Leave a Reply

Your email address will not be published. Required fields are marked *