Я хочу получить количество уникальных записей в журналах ошибок Apache на
При просмотре файлов журнала Apache появляется много сообщений об ошибках. Я хотел бы узнать, какие сообщения об ошибках являются наиболее частыми, а какие уникальными.
Я хотел бы простой скрипт, который может предоставить мне количество различных уникальных строк.
Я знаю о Perl/Python/ и т. Д., Но я бы предпочел использовать встроенные инструменты, такие как cut
/find
/grep
/sed
, так далее.
Я могу получить простой список записей, используя sed
, Ниже приведен список уникальных сообщений об ошибках:
$ 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
Это работает для подсчета количества вхождений. Это просто не так полезно, так как не показывает, к чему относится число:
$ sed -e "s/\[.*\]\([^:]*\)\(.*\)/\1/" error.sml.log | sort -u | xargs -I{} grep -oc {} error.sml.log
1
3886
2
6091
20
Я хотел бы, чтобы вывод выглядел больше так:
1 Apache configured -- resuming normal operations
3886 client denied by server configuration
2 Digest
6091 File does not exist
20 request failed
1 ответ
sed -e "s/\[.*\]\([^:]*\)\(.*\)/\1/" error.sml.log | сортировать | uniq -c 1 Apache настроен - возобновление нормальной работы Клиент 3886 отклонен конфигурацией сервера 2 Дайджест 6091 Файл не существует 20 запрос не выполнен
Существует инструмент, который делает именно этот уникальный. Хотел бы я найти это пару часов назад.
Есть несколько полезных опций, таких как uniq -d только показывать строки с более чем 1 записью
$ sed -e "s/\[.*\]\([^:]*\)\(.*\)/\1/" error.sml.log | сортировать | uniq -cd Клиент 3886 отклонен конфигурацией сервера 2 Дайджест 6091 Файл не существует 20 запрос не выполнен
uniq -u показывать только строки uniq только 1 запись
$ sed -e "s/\[.*\]\([^:]*\)\(.*\)/\1/" error.sml.log | сортировать | uniq -u Apache настроен - возобновление нормальной работы
Теперь я могу обработать наши миллиардные файлы журнала и разобраться в том, что происходит с ними.