Как извлечь и отсортировать столбцы из файлов журнала в Linux – CloudSavvy IT

Сортировка файла журнала.

Сортировка файла журнала по определенному столбцу полезна для быстрого поиска информации. Журналы обычно хранятся в виде открытого текста, поэтому вы можете использовать инструменты для работы с текстом в командной строке, чтобы обрабатывать их и просматривать их более читабельно.

Извлечение столбцов с вырезом и awk

cut а также awk Утилиты – это два разных способа извлечения столбца информации из текстовых файлов. Оба предполагают, что ваши файлы журнала разделены пробелами, например:

column column column

Это создает проблему, если данные в столбцах содержат пробелы, такие как даты («среда, 12 июня»). Пока cut Вы можете увидеть это как три отдельных столбца, вы все равно можете извлечь все три из них одновременно, предполагая, что структура вашего файла журнала согласована.

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

cut очень прост в использовании:

cat system.log | cut -d ' ' -f 1-6

cat Команда читает содержимое system.log и трубы это cut, -d Флаг указывает разделитель, в данном случае это пробел. (По умолчанию вкладка, t.) -f Флаг указывает, какие поля выводить. Эта команда специально напечатает первые шесть столбцов system.log, Если вы хотите напечатать только третий столбец, вы бы использовали -f 3 флаг.

awk более мощный, но не такой краткий. cut полезно для извлечения столбцов, например, если вы хотите получить список IP-адресов из ваших журналов Apache. awk может переставлять целые строки, что может быть полезно для сортировки всего документа по определенному столбцу. awk это полный язык программирования, но вы можете использовать простую команду для печати столбцов:

cat system.log | awk '{print $1, $2}'

awk запускает вашу команду для каждой строки в файле. По умолчанию он разбивает файл на пробелы и сохраняет каждый столбец в переменных. $1, $2, $3, и так далее. Используя print $1 Команда, вы можете напечатать первый столбец, но нет простого способа печати диапазона столбцов без использования циклов.

Одно из преимуществ awk является то, что команда может ссылаться на всю строку сразу. Содержимое строки хранится в переменной $0, который вы можете использовать для печати всей строки. Таким образом, вы можете, например, напечатать третий столбец перед печатью оставшейся строки:

awk '{print $3 " " $0}'

" " печатает пробел между $3 а также $0, Эта команда повторяет столбец три дважды, но вы можете обойти это, установив $3 переменная в нуль:

awk '{printf $3; $3=""; print " " $0}'

printf Команда не печатает новую строку. Точно так же вы можете исключить определенные столбцы из вывода, установив их все в пустые строки перед печатью $0:

awk '{$1=$2=$3=""; print $0}'

Вы можете сделать намного больше с awk, включая соответствие регулярному выражению, но извлечение столбца из коробки работает хорошо для этого варианта использования.

Сортировка столбцов с сортировкой и уникальным

sort Команда может быть использована для заказа списка данных на основе определенного столбца. Синтаксис:

sort -k 1

где -k Флаг обозначает номер столбца. Вы передаете ввод в эту команду, и она выплевывает упорядоченный список. По умолчанию, sort использует алфавитный порядок, но поддерживает больше опций с помощью флагов, таких как -n для числовой сортировки, -h для суффиксной сортировки (1M> 1K), -M для сортировки сокращений месяцев и -V для сортировки номеров версий файлов (файл-1.2.3> файл-1.2.1).

uniq Команда отфильтровывает повторяющиеся строки, оставляя только уникальные. Он работает только для смежных линий (из соображений производительности), поэтому вам нужно всегда использовать его после sort удалить дубликаты по всему файлу. Синтаксис просто:

sort -k 1 | uniq

Если вы хотите перечислить только дубликаты, используйте -d флаг.

uniq также можно посчитать количество дубликатов с помощью -c флаг, что делает его очень хорошим для отслеживания частоты. Например, если вы хотите получить список самых популярных IP-адресов вашего сервера Apache, вы можете запустить следующую команду на вашем access.log:

cut -d ' ' -f 1 | sort | uniq -c | sort -nr | head

Эта строка команд вырезает столбец IP-адреса, группирует дубликаты, удаляет дубликаты при подсчете каждого вхождения, затем сортирует их по столбцу подсчета в порядке убывания, оставляя вам список, который выглядит следующим образом:

21 192.168.1.1
12 10.0.0.1
5 1.1.1.1
2 8.0.0.8

Вы можете применить эти же методы к вашим файлам журналов, в дополнение к другим утилитам, таким как awk а также sed, чтобы вытащить полезную информацию. Эти цепочечные команды длинные, но вам не нужно вводить их каждый раз, так как вы всегда можете сохранить их в скрипте bash или присвоить им псевдоним через ваш ~/.bashrc,

Фильтрация данных с помощью grep и awk

grep очень простая команда; Вы даете ему поисковый термин и передаете его, и он будет выплевывать каждую строку, содержащую этот поисковый термин. Например, если вы хотите найти в вашем журнале доступа Apache 404 ошибки, вы можете сделать:

cat access.log | grep "404"

который выложил бы список записей журнала, соответствующих данному тексту.

Однако, grep не может ограничить свой поиск определенным столбцом, поэтому эта команда не будет выполнена, если у вас есть текст «404» где-либо еще в файле. Если вы хотите выполнять поиск только в столбце кода состояния HTTP, вам необходимо использовать awk:

cat access.log | awk '{if ($9 == "404") print $0;}'

С awkу вас также есть возможность выполнять отрицательные поиски. Например, вы можете искать все записи журнала, которые не возврат с кодом состояния 200 (ОК):

cat access.log | awk '{if ($9 != "200") print $0;}'

а также доступ ко всем программным функциям awk обеспечивает.

Параметры графического интерфейса для веб-журналов

Мониторинг журнала доступа веб-сервера в режиме реального времени.

GoAccess утилита CLI для мониторинга журнала доступа вашего веб-сервера в режиме реального времени и сортировки по каждому полезному полю Он полностью работает в вашем терминале, поэтому вы можете использовать его через SSH, но он также имеет гораздо более интуитивный веб-интерфейс.

apachetop это еще одна утилита специально для apache, которую можно использовать для фильтрации и сортировки по столбцам в вашем журнале доступа. Он работает в режиме реального времени прямо на ваш access.log.

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *