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

2435
nelaaro

Bei der Anzeige der Apache-Protokolldateien werden zahlreiche Fehlermeldungen wiederholt. Ich möchte herausfinden, welche Fehlermeldungen am häufigsten und welche eindeutig 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 lieber integrierte Tools wie cut/ find/ grep/ sedusw. verwenden.

Ich kann eine einfache Liste mit Einträgen erhalten 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 funktioniert, um die Anzahl der Vorkommen zu zählen. Es ist einfach nicht so nützlich, da es nicht zeigt, worauf sich die Zahlen 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 mehr so ​​aussieht:

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

1 Antwort auf die Frage

2
nelaaro
sed -e "s / \ [. * \] \ ([^:] * \) \ (. * \) / \ 1 /" error.sml.log | sortieren | uniq -c 1 Apache konfiguriert - normaler Betrieb wird fortgesetzt 3886-Client von der Serverkonfiguration abgelehnt 2 Digest 6091 Datei existiert nicht 20 Anforderung fehlgeschlagen 

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

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

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

uniq -u zeigt nur uniq-Zeilen nur 1 Eintrag

$ sed -e "s / \ [. * \] \ ([^:] * \) \ (. * \) / \ 1 /" error.sml.log | sortieren | uniq -u  Apache konfiguriert - normaler Betrieb wird fortgesetzt 

Jetzt kann ich unsere Milliardenzeilenprotokolldateien verarbeiten und ein Gefühl dafür bekommen, was in ihnen vorgeht.

Wenn ich gewesen wäre, hätte ich es dir sagen können. Es kommt viel vor, ein paar Suchen hätten es gefunden (so habe ich davon erfahren, ich wollte wissen, wie oft conky einen Fehler in meine .xsession-errors-Datei warf, es waren über 182.000 Mal!) Rob vor 12 Jahren 1