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

1. Elastic Stack (ELK)

Elastic Stack, пожалуй, самый известный стек для централизованного логирования. В него входят: Elasticsearch (мощный поисковый движок и хранилище данных), Logstash (конвейер сбора и обработки логов с поддержкой сотен плагинов) и Kibana (веб-интерфейс для поиска и визуализации). Благодаря этой троице стек позволяет собирать логи практически из любых источников, индексировать и анализировать их в единой системе. 

В Elastic Stack реализован полнотекстовый поиск по журналам с высоким быстродействием, а Kibana предоставляет богатые возможности визуализации через графики, гистограммы, карты с геоданными, дашборды из любых метрик. Кр��ме того, в ELK можно настроить алерты на основе поисковых запросов, чтобы сразу узнавать о появлении определённых ошибок или аномалий. Плюс и в том, что стек масштабируется горизонтально.

Плюсы: полностью бесплатное решение (с открытым кодом и большим сообществом), гибко масштабируется под большие объёмы данных, есть богатый выбор плагинов ввода/вывода в Logstash и агентов, а также приятный веб-интерфейс Kibana.

Минусы: требователен к ресурсам — для высоконагруженных сред нужна солидная инфраструктура, сложен в развёртывании (нужны навыки администрирования Elastic) и новые версии Elastic Stack частично перешли на закрытую лицензию. В реальных проектах подобные решения чаще всего размещают на виртуальных серверах — например, в инфраструктуре UltraVDS.

2. Splunk

Splunk (недоступен в РФ) выбирают те, кому нужен мощнейший поисковый движок и богатые возможности аналитики. Инструмент умеет собирать и индексировать машино-сгенерированные данные из практически любого источника — от системных логов и сетевых устройств до приложений, баз данных и IoT-сенсоров. А фирменный язык запросов SPL позволяет в реальном времени фильтровать, агрегировать и визуализировать события практически любой сложности. 

В Splunk есть всё для продвинутого анализа: поиск по шаблонам, корреляция событий, встроенные machine learning-модели (например, модуль Anomaly Detection для выявления аномалий), удобные дашборды и отчёты. 

Отдельного упоминания заслуживает экосистема приложений Splunkbase — сотни готовых плагинов и интеграций (например, для парсинга специфических логов прокси, баз данных и т. д.). Приятно и то, что в составе Splunk есть модуль Enterprise Security, который позиционируется как полноценная SIEM-система.

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

Плюсы: мощный функционал для поиска и анализа логов (SPL-язык, гибкие дашборды, тысячи аддонов), качественная документация и большое сообщество, корреляция инцидентов и ИБ-аудит, а также хорошо масштабируется на большие объёмы (кластеризация, параллельная обработка).

Минусы: лицензия по объёму данных, закрытый исходный код, сложность развёртывания — для полной мощности требует выделенных мощных серверов и времени на настройку. Кроме того, в РФ отсутствует возможность покупки, локальная поддержка и обновления.

3. Graylog Open

Graylog Open архитектурно на ELK, так как в его сердце работает собственный сервер приложений (на Java) с веб-интерфейсом, но для хранения данных используется связка MongoDB и Elasticsearch. То есть Graylog по сути добавляет удобную обёртку вокруг Elasticsearch, упрощая работу с логами. 

Инструмент ценят за то, что он поддерживает различн��е форматы входящих логов (syslog, JSON, обычный текст) и позволяет определять экстракторы — шаблоны для разбора строк (регулярные выражения, GROK и др.), чтобы структурировать неформализованные логи. В нём можно добавлять теги, преобразовывать поля и отбрасывать лишнее, то есть гибко обрабатывать данные перед индексированием. 

Кроме того, у Graylog есть механизм потоков и правил маршрутизации. Например, можно направлять логи определённого приложения в отдельный поток и настроить для него свои оповещения. 

Плюсы: бесплатен и с открытым кодом, имеет привычный веб-интерфейс с поиском и множеством плагинов (коллекция на Marketplace), поддерживает последние версии Elasticsearch (в том числе открытый форк OpenSearch) и масштабируется горизонтально. Кроме того, в нём есть гибкая настройка парсинга входящих логов, REST API для автоматизации и решения для алертинга, ролевого управления доступом и интеграции с системами мониторинга.

Минусы: требует установки сразу трёх компонентов (Graylog-сервер, Elasticsearch и MongoDB), из «коробки» не умеет читать локальные файлы логов, а также свежие версии Graylog перешли на лицензию SSPL.

4. Grafana Loki

Grafana Loki — легковесная система агрегирования логов, которая требует минимум ресурсов. В отличие от ELK или Graylog, Loki не строит полнотекстовый индекс по всему содержимому логов — вместо этого она индексирует только метаданные, обычно это источник, сервис, контейнер, тэги и т. п. Сами же строки логов хранятся в сжатом виде локально на диске или в облачном хранилище.

Архитектура Grafana Loki подразумевает, что основная обработка логов происходит на стороне агентов-сборщиков. Например, Promtail читает локальные файлы (как tail -f) или забирает логи из системного журнала, добавляя метки (например, имена сервисов или имена Kubernetes-подов). Также поддерживаются другие агенты, например, Fluentd и Logstash. 

Плюс и в том, что в Grafana Loki хорошо интегрируется с экосистемой Grafana, в которой (начиная с версии 6) появился режим Explore, позволяющий выполнять запросы к Loki через LogQL и сразу видеть сырые логи, гистограмму частоты сообщений и другие графики.

Плюсы: минимальные требования к ресурсам (индекс только по метаданным) при всё ещё достаточных возможностях поиска, идеально подходит для контейнерных сред, имеет простое горизонтальное масштабирование и совместимость с Grafana.

Минусы: ещё проходит обкатку сообществом, поиск без полнотекстового индекса при очень больших объёмах может работать медленнее, отсутствует собственный UI, а агент Promtail не поддерживает удалённый сбор логов по сети (только локальные файлы), так что в Windows применяется редко. 

5. EventLog Analyzer

EventLog Analyzer — SIEM-решение от индийской компании ManageEngine. В отличие от предыдущих универсальных платформ, этот инструмент ориентирован именно на мониторинг событий безопасности, соответствие стандартам (PCI DSS, HIPAA, GDPR и пр.) и аудит действий. Проще говоря, EventLog Analyzer собирает логи со всех критических точек инфраструктуры.

Система поддерживает более 700 источников логов, сбор возможен как агентно, так и по Syslog с сетевых устройств. Важно, что в EventLog Analyzer встроены парсеры для разных форматов, позволяющие автоматически выделять из сырых логов нужные поля (IP-адреса, имена пользователей, тип события и т.д.). Корреляцию выполняет сам инструмент.

В EventLog Analyzer есть сотни преднастроенных отчётов и дашбордов. Также есть шаблоны соответствия — отчёты, проверяющие выполнение требований стандартов (PCI, ISO 27001 и др.). Интересно и то, что система умеет рассылать оповещения при срабатывании определённых правил, например, 5 неудачных логинов подряд или отключение антивируса.

Особенно инструмент ценен для Windows-сред, так как отдельно собирает Windows Event Logs (включая мелочи типа отслеживания изменений в AD, аудита файловой системы и т. д.). В Linux поддерживает аудит конфигураций Cisco, Juniper, мониторинг логов Apache/IIS, баз данных Oracle/MS SQL и т.д.

Плюсы: русская локализация, дружелюбный веб-интерфейс с кучей графиков, таблиц, фильтров, можно настроить автоматические реакции (скрипты) на определённые события и есть бесплатная версия (ограничение по числу источников логов) для малого окружения.

Минусы: полноценные функции доступны только в платной версии, избыточен для задач отладки приложений или общего мониторинга производительности, локализация местами корявит термины (впрочем, можно переключиться на английский). Кроме того, глубокая настройка корреляций требует времени и знаний.

6. / Fluent Bit

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

За счёт более 350 плагинов Fluentd поддерживает практически любую комбинацию входа и выхода, например, можно читать логи из файлов, Docker-логов, Syslog и журналов Kubernetes, а передавать их в Elasticsearch, Kafka, Google BigQuery или Snowflake. При этом в нём можно гибко настраивать формат (JSON, protobuf), буферизацию, ретрай при сбоях сети и т.п. 

Лёгким Fluentd не назовёшь, но есть у него есть облегчённая версия Fluent Bit (написана на C++). Оба продукта совместимы и часто используются вместе.

Плюсы: полностью открытый и бесплатный, большая библиотека плагинов ввода/вывода, хорошая производительность при правильной конфигурации и есть встроенное расширение через фильтры (поддерживаются плагины на любом языке – Python, Go и т.д.).

Минусы: нужно куда-то отправлять логи (сам по себе не предоставляет поиск/анализ), сложная конфигурация через код (файлы конфигов), может потреблять много памяти и требует оптимизации.

7. Syslog-ng

Syslog-ng — системный лог-демон для Linux- и Unix-дистрибутивов. Некоторые устанавливают его по умолчанию в системе или предоставляют в виде пакета, заменяющего предыдущий стандартный syslogd. Инструмент принимает log-сообщения (обычно по протоколу Syslog, отсюда и название) от сотен источников и централизованно перенаправляет их дальше. Чаще всего используется как центральный лог-хаб. 

Syslog-ng поддерживает массу протоколов и помимо классического UDP/TCP syslog, он умеет принимать и отправлять JSON по HTTP, писать в Elasticsearch и Kafka, а также читать Windows EventLog (через агент). Кроме того, в нём есть шифрование TLS при передаче, электронная подпись логов и механизм HSM для гарантии целостности (чтобы журналы можно было предъявить на аудит). 

Открытая версия в виде консольной утилиты настраивается через конфиг. Существует и коммерческая (One Identity) с веб-интерфейсом и дополнительным функционалом, но в России её достать сложно да и не нужно, так как базовая версия бесплатна. 

Плюсы: open-source лицензия, гибкая фильтрация и маршрутизация сообщений для сложных инфраструктур, богатая поддержка протоколов и форматов (любой syslog, JSON, SQL, Kafka и т.д.), возможности для обеспечения безопасности (TLS-шифрование, подпись журналов). 

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

8. Datadog Logs

Datadog Logs (недоступен в РФ) — компонент платформы Datadog, отвечающий за сбор и анализ лог-файлов. В едином окне инструмента представлены метрики инфраструктуры, и апм-трейсы приложений, и соответствующие им логи. 

Система умеет собирать события более чем из 500 сервисов. Логи индексируются и доступны через удобный Log Explorer, поэтому их можно фильтровать по хостам, сервисам, уровню или делать поиск по подстроке (Datadog автоматически связывает события одной цепочки).

Datadog Logs предлагает множество встроенных дашбордов, а также конструктор виджетов. Алерты подкреплены машинным обучением — сервис сам улавливает аномалии и выбросы, сигнализируя об этом. Также инструмент включает функции безопасности, например, встроенное обнаружение потенциальных угроз и неправильных конфигураций по логам (по сути, простейший SIEM).

Однако Datadog Logs не из дешёвых, и с 2022 г��да платформа недоступна в РФ, но технически о ней стоит знать (плюс пригодится тем, кто за рубежом).

Плюсы: единая панель для всех типов данных (логов, метрик, запросов), богатый набор интеграций, ML-модули ловят аномалии и предлагают подсветку паттернов в логах, красивые дашборды и графики из логов, а также интеграция со всеми популярными уведомлялками (почта, Slack, PagerDuty и т.д.).

Минусы: высокая цена, некоторые продвинутые фичи требуют времени на настройку (например, собственные парсеры, дашборды под специфичные приложения), невозможно легально работать из России. 

9. Monq

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

Monq построен на модульной архитектуре — в нём есть свои агенты-сборщики, механизм обработки данных, хранилище и веб-интерфейс. Агенты MonqAgent устанавливаются на серверы и отправляют логи (и метрики) на центральный узел. Плюс и в том, что решение умеет принимать данные по HTTP в формате JSON, причём внутри уже есть шаблоны для множества популярных систем, например, Zabbix, Prometheus, Nagios, Ntopng, SCOM и др. 

Помимо этого, в Monq встроен low-code движок и поддержка скриптов на Lua и C# для парсинга сообщений, извлечения полей, преобразования и обогащения данными. Например, можно «выдернуть» из текста лога IP-адрес и отметить его геолокацией или категорией угроз. Также есть модуль оповещений и автоматики — алерты по любым условиям или срабатывание по сложному поисковому запросу. 

Плюсы: бесплатная версия, свежий интерфейс (разработчики явно вдохновлялись практиками Splunk и Grafana), широкий функционал с парсингом, визуализацией, оповещениями  и автоматикой, есть поддержка (продукт российский).

Минусы: пока мало кейсов, возможны сырости и баги (сообщество только формируется, многие вещи ещё допиливаются).

10. Logtail

Завершает нашу десятку российская платформа Logtail (не путать с одноимённым зарубежным сервисом). Это сервис для мониторинга и поиска по логам, который собирает метрики с разных источников (серверы, приложения, контейнеры и кластеры) и сохраняет их в структурированном виде благодаря Clickhouse.

В Logtail есть встроенный SQL-конструктор запросов, автоматическое парсирование текстовых логов в JSON (чтобы по ним можно было фильтровать по ключам), гибкая настройка ретеншна (для разных источников разные сроки хранения) и интеграция с уведомлениями (почта, Telegram и даже звонок/SMS) при срабатывании алертов. 

Преимущества: бесплатная версия для небольших проектов (до 500 МБ логов в день), удобен для команд, позволяет быстро масштабироваться и, по заявлению разработчиков, справляется с терабайтами логов, есть поддержка (продукт российский).

Недостатки: ориентирован на бизнес, относительно молодой — возможны недоработки, все данные хранятся у провайдера, что не каждому подходит.

Вместо вывода

Быстрое сравнение решений можно посмотреть в таблице: 

Инструмент

Тип решения

Основные возможности

Доступность в РФ

Elastic Stack (ELK)

Платформа (on-prem / cloud)

Сбор логов, полнотекстовый поиск, дашборды, алерты

Доступен, частично локализирован сообществом

Splunk

Enterprise-платформа

Универсальный сбор данных, аналитика, SIEM, ML

Недоступен

Graylog Open

Платформа поверх Elasticsearch

Централизованный сбор, парсинг, потоки, алерты

Доступен, частично локализирован сообществом

Grafana Loki

Лог-хранилище (метаданные)

Агрегация логов, метки, интеграция с Grafana

Доступен, частично локализирован

EventLog Analyzer

SIEM / аудит

Аудит ИБ, отчёты соответствия, корреляция событий

Доступен, полная локализация

Fluentd / Fluent Bit

Лог-шиппер

Сбор, преобразование и доставка логов

Доступен (CLI-ориентирован)

Syslog-ng

Лог-хаб / демон

Централизация syslog, маршрутизация, TLS

Доступен (CLI-ориентирован)

Datadog Logs

SaaS-платформа

Поиск, ML, корреляция

Недоступен

Monq

Платформа

Сбор логов и метрик, парсинг, алерты, автоматика

Доступен, российский разработчик

Logtail

SaaS-платформа

Сбор логов, SQL-поиск, JSON-парсинг, алерты

Доступен, российский разработчик

Наконец, не стоит забывать, что помимо этих «тяжёлых» решений, в арсенале любого сисадмина остаются встроенные средства Windows Server (Event Viewer, WEF и Get-WinEvent), а также классические консольные утилиты в Linux:

  • grep / awk — поиск и фильтрация по ключевым словам или шаблонам прямо в текстовых файлах логов;

  • tail (и его более продвинутый аналог less) — просмотр последних строк файла, режим tail -f для онлайнового отслеживания поступающих записей;

  • journalctl — утилита systemd для чтения журнала systemd (фильтрация по сервису, уровню, времени и др.), фактически встроенный лог-менеджер для Linux;

  • logrotate — система ротации лог-файлов, спасающая диски от переполнения: архивирует и сжимает старые логи по расписанию.

Эти инструменты требуют больше ручной работы и знаний, но они проверены временем. В боевых ситуациях комбинация «grep + tail» нередко позволяет решить проблему быстрее, чем поднимается веб-интерфейс.

А какие инструменты для анализа журналов используете вы? Делитесь в комментариях отзывами и советами.