Ich möchte eine Anzahl eindeutiger Einträge in den Apache-Fehlerprotokollen erhalten

1

Beim Anzeigen der Apache-Protokolldateien werden viele Fehlermeldungen wiederholt. Ich möchte herausfinden, welche Fehlermeldungen am häufigsten und welche einzigartig sind.

Ich hätte gerne ein einfaches Skript, mit dem ich die verschiedenen eindeutigen Zeilen zählen kann.

Ich kenne Perl / Python / etc., Aber ich würde es vorziehen , integrierte Tools wie verwenden cut/ find/ grep/ sedusw.

Ich kann eine einfache Liste von Einträgen mit bekommen sed. Im Folgenden wird eine Liste eindeutiger Fehlermeldungen angezeigt:

$ sed -e "s/\[.*\]\([^:]*\)\(.*\)/\1/" error.sml.log | sort -u
Apache configured -- resuming normal operations
client denied by server configuration
Digest
File does not exist
request failed

Dies zählt die Anzahl der Vorkommen. Es ist einfach nicht so nützlich, da es nicht zeigt, worauf sich die Zählungen beziehen:

$ sed -e "s/\[.*\]\([^:]*\)\(.*\)/\1/" error.sml.log | sort -u | xargs -I{} grep -oc {} error.sml.log
1
3886
2
6091
20

Ich möchte, dass die Ausgabe so aussieht:

1    Apache configured -- resuming normal operations
3886 client denied by server configuration
2    Digest
6091 File does not exist
20   request failed
Nelaaro
quelle

Antworten:

2
sed -e "s / \ [. * \] \ ([^:] * \) \ (. * \) / \ 1 /" error.sml.log | sortieren | uniq -c
      1 Apache konfiguriert - Wiederaufnahme des normalen Betriebs
   3886-Client von Serverkonfiguration abgelehnt
      2 Digest
   6091 Datei existiert nicht
     20 Anfrage fehlgeschlagen

Es gibt ein Tool, das genau das macht. Ich wünschte, ich hätte das vor ein paar Stunden gefunden.

Es gibt einige nützliche Optionen, z. B. uniq -d zeigt nur Zeilen mit mehr als 1 Eintrag an

$ sed -e "s / \ [. * \] \ ([^:] * \) \ (. * \) / \ 1 /" error.sml.log | sortieren | uniq -cd
   3886-Client von Serverkonfiguration abgelehnt
      2 Digest
   6091 Datei existiert nicht
     20 Anfrage fehlgeschlagen

uniq -u zeige nur uniq-Zeilen 1 Eintrag

$ sed -e "s / \ [. * \] \ ([^:] * \) \ (. * \) / \ 1 /" error.sml.log | sortieren | uniq -u  
  Apache konfiguriert - Wiederaufnahme des normalen Betriebs

Jetzt kann ich unsere Milliarden Zeilenprotokolldateien verarbeiten und mir ein Bild davon machen, was in ihnen vor sich geht.

Nelaaro
quelle
1
Wenn ich dabei gewesen wäre, hätte ich es dir sagen können. Es kommt oft vor, ein paar Suchanfragen hätten es finden sollen (so habe ich es herausgefunden, ich wollte wissen, wie oft Conky einen Fehler in meine .xsession-Errors-Datei geworfen hat, es war mehr als 182.000 Mal!)
Rob