Apache APISIX интегрируется с Google Cloud Logging для улучшения обработки логов
API7.ai
December 22, 2021

Логирование является важной инфраструктурой для распределенных систем. Оно помогает разработчикам наблюдать за состоянием работы сервисов, повышать эффективность устранения неполадок и диагностики, а также проводить многомерный анализ для улучшения общей стабильности и операционной эффективности системы.
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
- Откройте браузер и перейдите на главную страницу Google Cloud.
- Введите имя пользователя и пароль для входа в консоль Google Cloud.
- Нажмите на левое меню консоли Google Cloud и выберите "IAM & Admin > Create a Project", чтобы начать создание проекта.

- Введите имя проекта, выберите название организации и нажмите "CREATE", чтобы создать проект.

- Когда проект будет успешно создан, в правом верхнем углу консоли появится уведомление об успешном создании.

- Нажмите в окне, чтобы выбрать проект, или выберите путь к проекту в верхней навигационной панели на главной странице консоли. После выбора проекта вы будете перенаправлены на главную страницу консоли, где уже можно увидеть данные о текущем проекте в верхней навигационной панели и информацию о проекте в информационном центре.

- После завершения создания проекта необходимо создать сервисный аккаунт для проекта. Вернитесь на главную страницу консоли Google Cloud и нажмите "IAM & Admin > Service Account" в левом меню, чтобы начать создание сервисного аккаунта.

- Нажмите "CREATE SERVICE ACCOUNT", чтобы создать сервисный аккаунт.

- Введите имя сервисного аккаунта и ID (ID обычно генерируется автоматически), затем нажмите "CREATE AND CONTINUE".

- Нажмите на "Role" и введите "Logging Admin" в поле поиска, чтобы найти эту роль, и выберите "Logging Admin" в качестве роли.

- Нажмите "DONE", чтобы завершить создание сервисного аккаунта и перейти на главную страницу сервисного аккаунта. На этом этапе вы можете увидеть только что созданный аккаунт и его детали в списке.

- Нажмите "Manage keys" в последнем столбце сервисного аккаунта, чтобы перейти в интерфейс управления секретными ключами.

- Нажмите "ADD KEY > Create new key", чтобы начать создание нового секретного ключа.

- Выберите тип секретного ключа как "JSON" на всплывающей странице, затем нажмите "CREATE", чтобы создать новый секретный ключ.

- Информация о приватном ключе будет автоматически загружена в системную папку Downloads через ваш браузер. При включении плагина google-cloud-logging вам потребуется использовать информацию из этого приватного ключа, поэтому сохраните файл приватного ключа.

Настройка Apache APISIX
Включение плагина google-cloud-logging
Вариант 1: Загрузка файла ключа
- Загрузите файл приватного ключа на сервер узла Apache APISIX.
- Настройте путь к файлу в
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
- Откройте файл приватного ключа.
- Настройте значение
project_idвgoogle-cloud-logging.auth_config.project_id. - Настройте значение
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/a | ID проекта сервисного аккаунта Google. |
| auth_config.token_uri | Нет | oauth2.googleapis.com/token | URI для запроса токена сервисного аккаунта 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%2Flogs | ID журнала Google, см.: LogEntry. |
| max_retry_count | Нет | 0 | Максимальное количество попыток перед удалением из конвейера обработки. |
| retry_delay | Нет | 1 | Количество секунд задержки выполнения процесса в случае сбоя. |
| buffer_duration | Нет | 60 | Максимальная продолжительность (в секундах) самой старой записи в пакете, которая должна быть обработана первой. |
| inactive_timeout | Нет | 10 | Максимальное время обновления буфера в секундах. |
| batch_max_size | Нет | 100 | Максимальное время обновления буфера в секундах. |
Проверка работы плагина
-
Выполните следующую команду, чтобы отправить запрос в 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 -
Откройте браузер и перейдите на главную страницу Google Cloud.
-
Введите имя пользователя и пароль для входа в консоль Google Cloud.
-
Просмотрите журнал запросов, отправленных через браузер журналов, и результаты возврата показаны ниже.

Отключение плагина 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 пользователей