Обогащение логов в Ключ-АСТРОМ
Содержание
Если вы стремитесь сделать свои логи более информативными и полезными для анализа, вы обратились по адресу. В этой статье мы рассмотрим, что такое обогащение логов, какие методы существуют и как их применять на практике. Также затронем темы маскирования данных и создания метрик на основе логов.
Обогащение логов — это процесс добавления дополнительной информации к вашим логам, что делает их более понятными и полезными для анализа. В Ключ-АСТРОМ этот процесс позволяет связывать логи с трассировками, что упрощает поиск и устранение проблем. Давайте разберемся, как это работает.
Зачем нужно обогащение логов?
Представьте, что у вас есть приложение, которое генерирует огромное количество логов. Как понять, какие логи относятся к конкретной транзакции или пользователю? Здесь на помощь приходит обогащение логов. Добавляя контекстную информацию, такую как атрибуты:
- trace_id – идентификатор всей трассировки
- span_id – идентификатор конкретного спана
- dt.entity.process_group_instance – информация о конкретном экземпляре процесса
вы можете легко связать логи с трассировками и получить полную картину происходящего.
Использование функционала связи логов с трассировками в Ключ-АСТРОМ позволяет вам получить глубокое понимание того, как ваше приложение функционирует на каждом этапе. Это не только упрощает диагностику и устранение проблем, но и дает возможность быстро находить и анализировать критические моменты в работе системы. Благодаря этому вы можете оперативно реагировать на инциденты и повышать надежность вашего приложения.
Вы легко сможете перейти из записи лога в трассировку запроса и наоборот.
Методы обогащения логов
В Ключ-АСТРОМ существует два основных метода обогащения логов: автоматическое и ручное. Давайте рассмотрим каждый из них подробнее.
Автоматическое обогащение
Автоматическое обогащение рекомендуется для распространенных технологий и приложений, генерирующих структурированные данные журнала. Этот метод позволяет быстро и легко добавить контекстную информацию к вашим логам.
Ключ-АСТРОМ поддерживает автоматическое обогащение для следующих технологий:
- .NET: Microsoft Logging Extensions, Serilog, log4net
- Java: Log4J2, Logback, java.util.logging, JBoss LogManager, Apache Tomcat (логи доступа)
- NGINX: error.logs (автоматическое обогащение), access.logs (ручное обогащение)
- Apache HTTP Server: error.logs, access.logs
- Node.js: Bunyan, log4js, pino, winston
- PHP: Monolog
- Go: Lorgus, Zap
Для того, чтобы это заработало в вашем окружении – достаточно глобально или точечно включить в интерфейсе соответствующую функцию Единого Агента (найдете по ключевому слову Enrichment)
Ручное обогащение
Ручное обогащение рекомендуется для пользовательских технологий и приложений, генерирующих неструктурированные данные журнала. Этот метод позволяет гибко настраивать обогащение в зависимости от специфических требований вашего приложения.
Для настройки ручного обогащения необходимо определить шаблон журнала и активировать процесс обогащения. В шаблон журнала следует включить следующие поля: dt.span_id, dt.trace_id, dt.trace_sampled и dt.entity.process_group_instance.
Теперь давайте рассмотрим несколько примеров ручного обогащения данных журналов для различных технологий.
Для обогащения логов NGINX необходимо изменить конфигурационный файл NGINX. Пример конфигурации:
log_format custom '$remote_addr - [$time_local] $request $status $body_bytes_sent [!dt dt.trace_id=$dt_trace_id,dt.span_id=$dt_span_id,dt.trace_sampled=$dt_trace_sampled]'; access_log logs/access.log custom;
Результат будет содержать в файле access.log записи с обогащенными журналами:
127.0.0.1 - [22/Mar/2022:08:50:45 +0100] GET /index.htm HTTP/1.1 200 30 [!dt dt.trace_id=b9e5c9ec08be5fab5071d76f427be7da,dt.span_id=43c5bb9432593963,dt.trace_sampled=true]
Для обогащения логов Log4j можно использовать PatternFormatter:
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} dt.trace_id=%X{dt.trace_id} dt.span_id=%X{dt.span_id} dt.entity.process_group_instance=%X{dt.entity.process_group_instance} - %msg%n"/>
Обогащение логов в Kubernetes
Если вы используете Kubernetes, вы также можете обогатить свои логи с помощью NGINX Ingress. Для этого выполните следующие шаги:
- Поставьте на мониторинг ingress-nginx
- Добавьте в файл configmap.yaml для NGINX Ingress следующую команду:
main-snippet: load_module /<путь установки агента>/oneagent/agent/bin/current/linux-musl-x86-64/liboneagentnginx.so;
log-format-upstream: '$remote_addr - $remote_user [$time_local] "$request" [!dt dt.trace_id=$dt_trace_id,dt.span_id=$dt_span_id,dt.trace_sampled=$dt_trace_sampled] $status $body_bytes_sent "$http_referer" "$http_user_agent" $request_length'
Маскирование чувствительных данных
Обогащение логов — это отличный способ сделать ваши логи более информативными, но не забывайте о безопасности. Ключ-АСТРОМ позволяет маскировать чувствительные данные, такие как пароли, номера кредитных карт и другую конфиденциальную информацию.
Настройка выполняется в разделе «Маскирование конфиденциальных данных», который доступен как на уровне хоста или группы хостов, так и глобально для всего окружения.
- Перейдите в настройки маскирования чувствительных данных и создайте новое правило.
- Укажите регулярное выражение для сопоставления строки, которую вы хотите замаскировать.
- Выберите тип маскирования: вы можете заменить данные строкой или хешем SHA-1.
- Добавьте матчеры. Создайте конкретное соответствие для этого правила, чтобы сузить его область. Вы можете включить несколько матчеров в одно правило. Например, правило маскировки может применяться к логам из конкретного контейнера, пространства имен или источника логов.
- Сохраните изменения.
Создание метрик на основе логов
Обогащение логов позволяет не только улучшить анализ, но и создавать метрики на основе логов. Это полезно для мониторинга и обнаружения проблем.
Создание метрик на основе логов в Ключ-АСТРОМ открывает перед вами множество возможностей для мониторинга и анализа. Эти метрики позволяют вам отслеживать ключевые показатели производительности, выявлять проблемы и улучшать общую стабильность ваших систем.
Ключ-АСТРОМ даёт возможности не только просматривать и анализировать логи, но и создавать метрики на их основе, и использовать их, как и любые другие метрики. Мы можем добавить их на дашборд, включив в анализ, а также создавать настраиваемые оповещения.
Существует два способа создания метрики на основе данных логов:
- Создание метрик с помощью глобальных настроек — В пункте меню навигации Настройки → Мониторинг логов → Извлечение метрик, где вы можете создать метрику следуя простому заполнению предлагаемых полей.
- Создание метрик через раздел Логи, используя инструмент анализа логов — достаточно лишь выбрать интересующие вас атрибуты и нажать кнопку «Создать метрику».
Теперь ваша метрика будет доступна в панели визуализации метрик, и вы сможете использовать её для создания дашбордов и оповещений.
Пример использования: подсчёт количества ошибок
Представьте, что у вас есть веб-приложение, и вы хотите отслеживать количество ошибок, возникающих в процессе его работы. Вы можете создать метрику, которая будет подсчитывать количество строк логов, содержащих слово "ERROR" и связывать это с конкретным приложением.
Пример использования: подсчёт количества успешных/неуспешных входов в систему
Вы можете использовать метрики на основе логов для мониторинга активности пользователей в вашем приложении. Например, можно создать метрики log.login.success и log.login.failure, чтобы отслеживать успешные и неуспешные попытки входа в систему. Затем эти метрики можно визуализировать на дашборде для удобного анализа.
Другие примеры использования
Создание метрик на основе логов в Ключ-АСТРОМ открывает перед вами множество возможностей для мониторинга и анализа. Вы можете отслеживать ошибки, анализировать производительность, отслеживать активность пользователей и мониторить использование ресурсов. Эти метрики помогут вам лучше понимать состояние ваших систем и оперативно реагировать на возникающие проблемы.
Заключение
Обогащение логов в Ключ-АСТРОМ — это мощный инструмент, который позволяет сделать ваши логи более информативными и полезными для анализа. Используя автоматическое или ручное обогащение, вы можете улучшить качество ваших логов и упростить процесс устранения проблем. Не забывайте о безопасности и маскировке чувствительных данных.