Apache APISIX интегрируется с Google Cloud Logging для улучшения обработки логов

API7.ai

December 22, 2021

Ecosystem

Apache APISIX-Google Cloud Logging cover

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

Google Cloud Logging — это сервис управления журналами в реальном времени, предоставляемый Google Cloud, который предлагает хранилище, поиск, анализ и оповещения на уровне эксабайт. Браузер журналов Google Cloud Logging позволяет легко и эффективно искать, сортировать и анализировать логи, а также предоставляет сохраненные запросы и богатые графические функции, чтобы сделать результаты фильтрации журналов доступными и более интуитивно понятными.

Apache APISIX ранее уже поддерживал интеграцию с HTTP Logger, TCP Logger, Kafka Logger, UDP Logger, RocketMQ Logger, SkyWalking Logger, Aliyun Cloud Logging(SLS) и многими другими решениями для логирования с открытым исходным кодом и облачными сервисами.

Недавно Apache APISIX также добавил поддержку Google Cloud Logging, предоставив пользователям новое решение для логирования при использовании Apache APISIX в качестве шлюза: использование google-cloud-logging для пересылки журналов запросов Apache APISIX в сервис Google Cloud Logging для анализа и хранения.

Когда плагин включен, Apache APISIX берет информацию о контексте запроса в фазе Log и сериализует ее в LogEntry Google Cloud Logging, затем отправляет сериализованные данные журнала в пакетную очередь, и когда пакетная очередь достигает установленного пользователем временного или количественного порога, данные журнала будут пересылаться в сервис Google Cloud Logging через API Google Cloud.

В этой статье будет объяснено, как настроить и использовать сервис Google Cloud Logging в Apache APISIX.

Настройка Google Cloud

  1. Откройте браузер и перейдите на главную страницу Google Cloud.
  2. Введите имя пользователя и пароль для входа в консоль Google Cloud.
  3. Нажмите на левое меню консоли Google Cloud и выберите "IAM & Admin > Create a Project", чтобы начать создание проекта. create a project
  4. Введите имя проекта, выберите название организации и нажмите "CREATE", чтобы создать проект. create a project-2
  5. Когда проект будет успешно создан, в правом верхнем углу консоли появится уведомление об успешном создании. project notification
  6. Нажмите в окне, чтобы выбрать проект, или выберите путь к проекту в верхней навигационной панели на главной странице консоли. После выбора проекта вы будете перенаправлены на главную страницу консоли, где уже можно увидеть данные о текущем проекте в верхней навигационной панели и информацию о проекте в информационном центре. view your project
  7. После завершения создания проекта необходимо создать сервисный аккаунт для проекта. Вернитесь на главную страницу консоли Google Cloud и нажмите "IAM & Admin > Service Account" в левом меню, чтобы начать создание сервисного аккаунта. start creating a service account
  8. Нажмите "CREATE SERVICE ACCOUNT", чтобы создать сервисный аккаунт. create a service account
  9. Введите имя сервисного аккаунта и ID (ID обычно генерируется автоматически), затем нажмите "CREATE AND CONTINUE". create a service account-2
  10. Нажмите на "Role" и введите "Logging Admin" в поле поиска, чтобы найти эту роль, и выберите "Logging Admin" в качестве роли. create a service account-3
  11. Нажмите "DONE", чтобы завершить создание сервисного аккаунта и перейти на главную страницу сервисного аккаунта. На этом этапе вы можете увидеть только что созданный аккаунт и его детали в списке. service account information
  12. Нажмите "Manage keys" в последнем столбце сервисного аккаунта, чтобы перейти в интерфейс управления секретными ключами. enter secret key management interface
  13. Нажмите "ADD KEY > Create new key", чтобы начать создание нового секретного ключа. create a new secret key
  14. Выберите тип секретного ключа как "JSON" на всплывающей странице, затем нажмите "CREATE", чтобы создать новый секретный ключ. create a new secret key-2
  15. Информация о приватном ключе будет автоматически загружена в системную папку Downloads через ваш браузер. При включении плагина google-cloud-logging вам потребуется использовать информацию из этого приватного ключа, поэтому сохраните файл приватного ключа. Download your key

Настройка Apache APISIX

Включение плагина google-cloud-logging

Вариант 1: Загрузка файла ключа

  1. Загрузите файл приватного ключа на сервер узла Apache APISIX.
  2. Настройте путь к файлу в google-cloud-logging.auth_file, как показано ниже:
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "uri":"/logging.do", "upstream":{ "type":"roundrobin", "nodes":{ "127.0.0.1:1980":1 } }, "plugins":{ "google-cloud-logging":{ // Файл приватного ключа Google Cloud Logging "auth_file":"/path/to/apache-apisix-fcafc68c2f41.json", // Максимальное количество записей в пакетной очереди. "batch_max_size": 1, // Максимальное время обновления буфера в секундах. "inactive_timeout": 10 } } }'

Вариант 2: Объявление конфигураций в JSON

  1. Откройте файл приватного ключа.
  2. Настройте значение project_id в google-cloud-logging.auth_config.project_id.
  3. Настройте значение private_key в google-cloud-logging.auth_config.private_key. Как показано ниже:
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "uri":"/logging.do", "upstream":{ "type":"roundrobin", "nodes":{ "127.0.0.1:1980":1 } }, "plugins":{ "google-cloud-logging":{ // Файл приватного ключа Google Cloud Logging "auth_config":{ "project_id":"apache-apisix", "private_key":"-----BEGIN RSA PRIVATE KEY-----ваш приватный ключ-----END RSA PRIVATE KEY-----" }, // Максимальное количество записей в пакетной очереди. "batch_max_size": 1, // Максимальное время обновления буфера в секундах. "inactive_timeout": 10 } } }'

Параметры

ИмяОбязательноЗначение по умолчаниюОписание
auth_configНетn/aФайл приватного ключа Google Cloud Logging. Должна быть настроена либо auth_config, либо auth_file.
auth_config.private_keyДаn/aПриватный ключ Google Cloud Logging.
auth_config.project_idДаn/aID проекта сервисного аккаунта Google.
auth_config.token_uriНетoauth2.googleapis.com/tokenURI для запроса токена сервисного аккаунта Google.
auth_config.entries_uriНетlogging.googleapis.com/v2/entries
API для записи журналов в Google Log Service.
auth_config.scopesНет["https://www.googleapis.com/auth/logging.read","https://www.googleapis.com/auth/logging.write","https://www.googleapis.com/auth/logging.admin","https://www.googleapis.com/auth/cloud-platform"]Область доступа сервисного аккаунта Google, см.: OAuth 2.0 Scopes for Google APIs
auth_fileНетn/aПуть к JSON-файлу сервисного аккаунта Google (должна быть настроена либо auth_config, либо auth_file)
ssl_verifyНетTRUEВключение SSL-аутентификации, настраивается в соответствии с документацией OpenResty.
resourceНет{"type": "global"}Ресурсы, отслеживаемые Google, см.: MonitoredResource.
log_idНетapisix.apache.org%2FlogsID журнала Google, см.: LogEntry.
max_retry_countНет0Максимальное количество попыток перед удалением из конвейера обработки.
retry_delayНет1Количество секунд задержки выполнения процесса в случае сбоя.
buffer_durationНет60Максимальная продолжительность (в секундах) самой старой записи в пакете, которая должна быть обработана первой.
inactive_timeoutНет10Максимальное время обновления буфера в секундах.
batch_max_sizeНет100Максимальное время обновления буфера в секундах.

Проверка работы плагина

  1. Выполните следующую команду, чтобы отправить запрос в Google Cloud Logging.

    curl -i http://127.0.0.1:9080/logging.do HTTP/1.1 200 OK Content-Type: text/html; charset=utf-8 Transfer-Encoding: chunked Connection: keep-alive Date: Fri, 10 Dec 2021 09:57:52 GMT Server: APISIX/2.11.0 Hello, Google Cloud Logging
  2. Откройте браузер и перейдите на главную страницу Google Cloud.

  3. Введите имя пользователя и пароль для входа в консоль Google Cloud.

  4. Просмотрите журнал запросов, отправленных через браузер журналов, и результаты возврата показаны ниже. View the log

Отключение плагина google-cloud-logging

Вы можете удалить блок конфигурации, связанный с google-cloud-logging, чтобы деактивировать плагин, если закончили его использование.

curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "uri":"/logging.do", "upstream":{ "type":"roundrobin", "nodes":{ "127.0.0.1:1980":1 } }, "plugins":{ } }'

Итог

В этой статье описаны подробные шаги для интеграции Apache APISIX и Google Cloud Logging. Мы надеемся, что эта статья даст вам более четкое понимание использования Google Cloud Logging в Apache APISIX и облегчит последующие практические действия.

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

Если у вас есть потребность в интеграции с другими журналами, посетите GitHub Apache APISIX и оставьте свои предложения через issue; или подпишитесь на рассылку Apache APISIX и выразите свои мысли по электронной почте.

Связанные статьи

Интеграция Apache APISIX с SkyWalking для создания полного спектра обработки журналов

Apache APISIX & RocketMQ помогает в мониторинге журналов API пользователей

Tags: