Инструменты логов и наблюдаемости

Анализатор логов доступадля реальных форматов Nginx и Apache

Вставьте лог доступа Nginx или Apache, выберите шаблон формата (или свою строку log_format/LogFormat) и нажмите «Разобрать лог», чтобы получить таблицу с фильтрами.

Анализатор логов доступа

Пример:
Шаблон формата
Фильтры

Лог доступа

Выполняется локально в вашем браузере. Текст лога никуда не отправляется.

Разобранные строки

Разберите лог, чтобы увидеть строки здесь.

Вставьте лог доступа или загрузите пример, затем нажмите «Разобрать лог».

Одноразовый grep вытащит десяток совпадающих строк, но этого мало, когда нужно понять, какие IP долбят /api/login, сколько запросов в этой пачке логов вернулись с 5xx, или какие строки вообще не подходят под формат вашего сервера. Как ни назови — анализатор логов доступа или лог-парсер, — один раз разобрать структуру строки быстрее, чем каждый раз переписывать регулярку заново.

Пригодится, когда под рукой кусок лога доступа Nginx или Apache — с сервера, из тикета в поддержку или дампа балансировщика — и нужны настоящие поля: IP, код статуса, путь, размер ответа, referer, а не сплошная стена текста. Всё выполняется прямо во вкладке браузера: ничего из вставленного текста никуда не загружается.

Зачем нужен анализатор логов доступа

Заточен под реальные форматы серверов, а не под десяток захардкоженных плейсхолдеров.

Вставляйте настоящую строку log_format или LogFormat

Скопируйте директиву log_format из nginx.conf или строку LogFormat из httpd.conf как есть, вместе с кастомными полями вроде $upstream_response_time или %{X-Forwarded-For}i — этот анализатор логов доступа сразу превратит их в колонки таблицы: не нужно учить новый синтаксис плейсхолдеров и гадать, какой из десятка пресетов ближе всего.

Реальная директива log_format из nginx превращается в соответствующие колонки таблицы

Плохие строки показываются, а не прячутся

Строка, не подходящая под выбранный формат, не отбрасывается молча и не отмечается общей невнятной надписью. Она попадает в список плохих строк вместе с номером строки и исходным текстом — сразу видно, почему не сошлось, а не приходится гадать, не пропали ли строки.

Список несовпавших строк лога с номерами строк и исходным текстом

От сырых строк лога к таблице с фильтрами

Разберите лог, отфильтруйте и экспортируйте чистую таблицу за три шага.

01

Вставьте лог и выберите формат

Вставьте необработанные строки лога доступа Nginx или Apache. Если не уверены, какой пресет подходит, сначала загрузите встроенный пример — в нём специально есть одна некорректная строка, чтобы увидеть, как показываются несовпадения.

  • Nginx combined и Apache combined устроены одинаково (IP, время, запрос, статус, размер, referer, user agent) — можно выбрать любой, результат разбора будет тем же
  • Вариант «Свой шаблон» принимает буквальный текст log_format/LogFormat, а не регулярное выражение, которое пришлось бы писать самому
02

Нажмите «Разобрать лог» (или Ctrl/Cmd+Enter)

Разбор не запускается автоматически по мере набора текста — логи доступа часто состоят из тысяч строк, и пересчитывать всё при каждом нажатии клавиши было бы расточительно. Нажмите «Разобрать лог» один раз или используйте сочетание клавиш — и таблица заполнится.

  • Смена шаблона формата сама по себе не запускает повторный разбор: старая таблица остаётся видимой, но становится приглушённой, пока вы снова не нажмёте «Разобрать лог»
03

Отфильтруйте и экспортируйте

Фильтры по коду статуса и пути применяются мгновенно к уже разобранным строкам — повторно нажимать «Разобрать лог» для этого не нужно. Панель сводки (топ IP, топ путей, разбивка по статусам) обновляется вместе с фильтром. Скопируйте или скачайте видимые строки в формате CSV, JSON или обычного текста.

  • Фильтры по статусу и пути влияют только на то, что показано и экспортировано, но никогда — на общее число разобранных строк в строке статуса
Перейти к парсеру

Что даёт таблица сверх сырого текста

Извлечение полей, фильтры и агрегированные счётчики — для реальной диагностики лога доступа.

Четыре встроенных пресета формата

Nginx combined, Nginx common, Apache Common Log Format и Apache combined закрывают подавляющее большинство конфигураций серверов по умолчанию — без какой-либо настройки.

Настоящие директивы log_format и LogFormat как свои шаблоны

Любая переменная $ из nginx.conf или директива % из httpd.conf — включая именованные заголовки запроса и ответа вроде %{Referer}i — становится колонкой таблицы, сопоставленной с буквальным текстом вокруг неё в вашей директиве.

Фильтры по коду статуса и пути

Сужайте таблицу до диапазона статусов (2xx–5xx) или точного кода, а также до запросов, чей путь содержит подстроку или подходит под регулярное выражение, — без повторного разбора лога.

Топ IP, топ путей и разбивка по статусам

Панель сводки считает запросы по коду статуса и показывает самые активные IP-адреса клиентов и пути запросов среди отфильтрованных строк — первое, что проверяют при поиске всплеска трафика или атакующего.

Плохие строки с номерами строк

Каждая строка, не подошедшая под выбранный формат, показывается с номером (начиная с 1) и исходным текстом, поэтому пара странных строк никогда не исчезает молча из общего счёта.

Экспорт в CSV, JSON или обычный текст

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

Что считается совпадением, а что нет

Точное поведение для некорректных строк, своих форматов и того, что пока сознательно не реализовано.

Строка либо совпадает с форматом целиком, либо помечается как плохая
Частичных совпадений не бывает: если строка не подходит под выбранный шаблон от начала до конца, она попадает в список плохих строк с номером и текстом, а её поля не добавляются в таблицу.
Некорректное поле запроса всё равно разбирается — метод и путь просто остаются пустыми
Если часть запроса в строке — это «-» или что-то отличное от «МЕТОД путь ПРОТОКОЛ», строка всё равно считается совпавшей и попадает в таблицу: метод, путь и протокол остаются пустыми только для этой строки, потому что остальная часть (IP, статус, размер) разобралась корректно.
Свои шаблоны понимают только задокументированные переменные $ и директивы %
Нераспознанная однобуквенная директива Apache % или шаблон вовсе без символов $ или % отклоняется с конкретной ошибкой, а не угадывается с риском тихо получить неверные колонки.
Одна вставка ограничена 300 000 символами и 20 000 строками
Это удерживает разбор быстрым и предсказуемым прямо во вкладке браузера. Если лимит превышен, разбейте выгрузку лога на более мелкие части.
Фильтры по статусу и пути никогда не меняют число разобранных или плохих строк
Фильтрация меняет только то, какие уже разобранные строки показаны, экспортированы и учтены в сводке. Статус «разобрано N строк, M не подошло» всегда отражает последний полный разбор, а не текущий фильтр.

Анализатор логов доступа — частые вопросы

Ответы на вопросы, которые возникают перед тем как парсить лог доступа Nginx или Apache онлайн.

Есть бесплатный анализатор логов доступа, который работает онлайн без установки?

Да. Вставьте свой лог доступа Nginx или Apache выше, нажмите «Разобрать лог» — и таблица появится сразу, без регистрации, установки или загрузки файла куда-либо. Это обычный JavaScript, который выполняется прямо в текущей вкладке браузера.

Безопасно ли вставлять серверные логи в такой онлайн-инструмент?

Всё, что вы вставляете, никуда не отправляется. Разбор, фильтрация и экспорт происходят локально в браузере на JavaScript — без загрузки на сервер, хранения или логирования вставленного текста на нашей стороне. Это важно, потому что в логах доступа часто есть настоящие IP-адреса клиентов и пути запросов. В отличие от некоторых сервисов анализа логов, которые всё же принимают файл на сервер, этот анализатор логов доступа ничего никуда не загружает.

В чём разница между Common Log Format и combined-форматом?

Common Log Format Apache (%h %l %u %t \"%r\" %>s %b) не содержит полей referer и user-agent. Combined-формат добавляет оба поля в кавычках в конце строки. Формат Nginx по умолчанию, тоже называемый «combined», по структуре совпадает с combined-форматом Apache.

Как разобрать лог доступа Nginx со своим log_format?

Выберите «Свой шаблон» и вставьте ту самую строку log_format из nginx.conf, например $remote_addr - $remote_user [$time_local] \"$request\" $status $body_bytes_sent \"$http_referer\" \"$http_user_agent\". Каждая переменная $ станет отдельной колонкой таблицы в том порядке, в котором она встречается, — так парсить нестандартный формат можно без единой строчки регулярного выражения.

Почему часть строк попала в список плохих, а не в таблицу?

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

Можно ли фильтровать по IP-адресу или user-agent, а не только по коду статуса и пути?

Встроенные фильтры покрывают код статуса и путь — это два поля, по которым сужают выборку чаще всего. IP-адрес и user-agent по-прежнему остаются обычными колонками таблицы и попадают в сводку топ IP; после экспорта в CSV или JSON их можно сортировать и искать уже в другом инструменте.

Есть ли ограничение на размер лога, который можно вставить?

Одна вставка ограничена 300 000 символов и 20 000 строк — этого хватает и на длинную выдержку из тикета поддержки, и на хвост лога в несколько тысяч строк. Для полного файла серверного лога разбейте его на более мелкие части и разберите каждую отдельно.

Нашли реальную строку лога, которую парсер разбирает неправильно?

Разберите свой лог доступа прямо сейчас

Вставьте лог доступа Nginx или Apache и получите таблицу с фильтрами и экспортом за секунды — без загрузки файла и без регистрации.

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

Весь разбор происходит локально в вашем браузере.