Преобразование Log Plugins для улучшения Observability
Yong Qian
February 24, 2023
В настоящее время логи играют важную роль в API-шлюзах, особенно для обнаружения неисправностей и устранения неполадок, что позволяет снизить затраты на эксплуатацию и техническое обслуживание. Логи API-шлюза также имеют большую ценность для сбора данных. Чтобы повысить наблюдаемость и стабильность системы, открытый API-шлюз Apache APISIX поддерживает множество плагинов для логирования, таких как
elasticsearch-logger,kafka-logger,logglyиerror-log-logger.
Ценность логов шлюза
С быстрым ростом бизнеса в цифровую эпоху архитектура программного обеспечения становится все более сложной, что делает обнаружение и диагностику неисправностей гораздо более сложной задачей. Это вновь подчеркивает важность наблюдаемости программного обеспечения.
Логи являются одним из трех столпов наблюдаемости. Они предоставляют системным администраторам и разработчикам информацию о состоянии работы системы, что способствует своевременному выявлению и устранению проблем.
Кроме того, логи могут служить дополнительным целям, таким как анализ данных, аудит и мониторинг безопасности, помогая поддерживать соответствие системы требованиям и обеспечивать ее безопасность.
API-шлюз соединяет приложение с внешним миром, позволяя организациям лучше управлять и контролировать вызовы API, включая критически важную функцию записи логов вызовов API.

Мы проанализируем ценность логов API-шлюза с двух точек зрения в следующих разделах.
Ценность для эксплуатации и технического обслуживания
Будь то традиционное техническое обслуживание систем или современное SRE (Site Reliability Engineering), обнаружение и устранение неисправностей всегда является приоритетной задачей для обеспечения стабильности системы. Это связано с тем, что каждая секунда простоя может привести к значительным потерям бизнеса и ухудшению пользовательского опыта для любого крупного онлайн-бизнеса.
API-шлюз находится на передовой всей системы и может выполнять роль "часового". Мы можем извлечь множество критически важных данных из его логов доступа, что имеет большое значение для системы эксплуатации и технического обслуживания:
- Анализ кодов состояния вышестоящих и нижестоящих сервисов для мониторинга доступности сайта и доступности конкретных вышестоящих сервисов.
- Использование логов доступа для мониторинга трафика сайта и своевременного обнаружения атак, таких как DDoS.
- Анализ тенденций трафика для предоставления рекомендаций по масштабированию бизнес-систем.
- Отслеживание времени обработки запросов для создания отчетов о производительности на уровне интерфейсов, что служит данными для оптимизации производительности бизнес-систем.
Вышеупомянутые практики являются одними из лучших для логов API-шлюза, которые широко применяются в отрасли и реализованы в системах эксплуатации и технического обслуживания многих предприятий.
Бизнес-ценность
По сравнению с общепризнанной операционной ценностью, бизнес-ценность логов шлюза часто упускается из виду.
Например, в анализе поведения пользователей кодирование является наиболее распространенным способом сбора данных через отслеживание событий в программах. Однако для хорошо спроектированного API логи шлюза могут естественным образом удовлетворять такие требования. В результате мы можем делать многое, например:
- Анализировать IP-адрес клиента для определения географического распределения трафика.
- Анализировать HTTP Referer для понимания источника доступа пользователей к каждой странице.
- Мы можем напрямую получать ключевые бизнес-показатели для агрегированной статистики ключевых API. Например, подсчитывая успешные вызовы API для регистрации пользователей и оформления заказов, мы можем получить количество новых пользователей и заказов за определенный период.
Конечно, логи шлюза менее гибки, чем отслеживание событий, и не могут выполнять пользовательские требования по сбору данных; однако они обладают достаточной бизнес-ценностью для удовлетворения базовых потребностей анализа данных.
Apache APISIX — это динамический, работающий в реальном времени и высокопроизводительный облачный API-шлюз, который предоставляет богатые функции управления трафиком, такие как балансировка нагрузки, динамический вышестоящий сервер, канареечное развертывание, разрыв цепи, аутентификация и наблюдаемость.
Многие из его возможностей предоставляются через плагины, включая десятки плагинов для логирования. В следующем разделе на примере типичного плагина для логирования в APISIX будет объяснено, как интегрировать логи шлюза с системой анализа логов, чтобы раскрыть их дополнительную ценность.
Введение в типичные плагины для логирования APISIX
elasticsearch-logger

Elastic Search — это распределенная поисковая и аналитическая система с открытым исходным кодом, используемая для обработки больших объемов данных и широко известная в области анализа логов. Ее дополнительная панель данных Kibana позволяет легко настраивать различные статистические диаграммы для удовлетворения потребностей организации в визуальном анализе запросов.
В практических приложениях, поскольку большинство традиционных логов программного обеспечения сохраняются в локальных файлах, используется проект Filebeat из экосистемы Elastic Search для мониторинга логов на локальных машинах и отправки инкрементных логов на сервер Elastic Search.
Однако плагин elasticsearch-logger, предоставляемый APISIX, может напрямую отправлять логи доступа APISIX на сервер Elastic Search, что может предоставить несколько преимуществ:
- Не требуется развертывание компонента Filebeat, что сокращает цепочку обработки и снижает потребление вычислительных ресурсов.
- Логи не хранятся на диске, поэтому не нужно беспокоиться о использовании дискового пространства. Однако объем логов доступа может быть огромным, и если ротация файлов не обрабатывается должным образом, это может быстро заполнить диск машины и вызвать сбой. Кроме того, взаимодействие с диском также может снизить производительность шлюза.
kafka-logger
Логи доступа шлюза имеют одну яркую особенность: объем данных логов пропорционален объему бизнес-запросов: чем больше запросов, тем больше логов.
Онлайн-бизнесы обычно демонстрируют периодические закономерности в объеме запросов. Например, платформы доставки еды обычно испытывают высокий трафик во время приемов пищи, а видеосайты — пики в послерабочее время.
Это представляет собой значительную проблему для систем хранения логов, и обеспечение того, что система может адекватно функционировать в периоды пикового трафика, является важным навыком для каждого администратора ElasticSearch.

Очередь сообщений — это лучший инструмент для балансировки трафика. Введение очереди сообщений между шлюзом и системой хранения для предоставления буфера логов значительно снизит нагрузку на систему хранения в периоды пикового трафика.
Для этой цели APISIX предоставляет kafka-logger, который доставляет логи доступа на серверы Kafka, избегая прямого воздействия на систему хранения логов.
loggly
В последние годы концепция [SaaS (Программное обеспечение как услуга)] (https://en.wikipedia.org/wiki/Software_as_a_service) постепенно становится популярной, привлекательной для многих малых и средних предприятий благодаря низкому порогу входа и модели оплаты по факту использования. В области анализа логов появилось множество SaaS-продуктов, и loggly стала лидером благодаря своим богатым источникам логов и аналитическим возможностям.
На этом фоне активное сообщество APISIX разработало готовые к использованию плагины Loggly, которые требуют только настройки учетных данных для прямой отправки логов доступа APISIX в сервис Loggly, что делает их очень удобными в использовании.
Как и плагин Loggly, APISIX также предоставляет google-cloud-logging, sls-logger и tencent-cloud-cls, которые могут легко интегрироваться с лог-сервисами основных облачных провайдеров.

error-log-logger
Плагины, представленные выше, используются для сбора логов доступа. Однако в APISIX есть еще один тип логов, а именно логи ошибок (error.log), которые имеют критическое значение для диагностики неисправностей шлюза.
Поэтому APISIX предоставляет error-log-logger для отправки логов ошибок на удаленный сервер для хранения и анализа. На практике конфигурация уровня логирования APISIX может использоваться для вывода более подробных логов уровня debug или info, которые содержат более детальные логи состояния работы шлюза. Используя эти логи, мы можем локализовать большинство проблем.
Итог
Логи шлюза содержат огромную ценность, и мы видим из обилия плагинов для логирования в проекте Apache APISIX, что пользователи из сообщества признают ценность логов шлюза. Кроме того, эти плагины дополнительно снижают стоимость настройки системы логирования для новых пользователей.
Кроме того, APISIX имеет два других типа плагинов для наблюдаемости: metrics и tracing. В сочетании с плагинами для логирования они еще больше повысят наблюдаемость шлюза и помогут обеспечить стабильность системы.