Оповещения: проверка работоспособности тем Pub/Sub

1. Введение

Последнее обновление: 21 июня 2023 г.

Оповещения о проверках доступности и времени безотказной работы

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

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

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

Для получения дополнительной информации о том, когда следует использовать проверки доступности, см. раздел «Обеспечение доступности ваших ресурсов Google Cloud» .

Темы публикаций/подписок как канал оповещений

Тема Pub/Sub может использоваться в качестве канала уведомлений Google Cloud Monitoring для отправки оповещений по подписке Pub/Sub. Это позволяет интегрировать оповещения Cloud Monitoring с другими системами, включая сторонние сервисы уведомлений.

Чтобы использовать тему Pub/Sub в качестве канала уведомлений, сначала необходимо создать тему Pub/Sub и подписку Pub/Sub. Затем нужно создать канал уведомлений Cloud Monitoring, который будет использовать тему Pub/Sub в качестве целевого канала.

При срабатывании оповещения система Cloud Monitoring отправляет сообщение в тему Pub/Sub. Подписчик подписки Pub/Sub может обработать сообщение и предпринять соответствующие действия.

Что вы построите

В этом практическом задании вы развернете приложение, создадите тему Pub/Sub и настроите оповещение о проверке доступности приложения, используя тему Pub/Sub в качестве канала уведомлений.

Что вы узнаете

  • Как создать тему Pub/Sub
  • Как создать проверку доступности и оповещение

Данный практический урок посвящен созданию оповещения о проверке доступности системы. Несущественные концепции и код приложения опущены, и вы можете просто скопировать и вставить их.

Что вам понадобится

  • Учетная запись Google Cloud с правами доступа к:
  • Развертывание приложений Cloud Run
  • Создание тем для публикации/подписки
  • Создать проверки времени безотказной работы
  • Создать оповещения

2. Настройка

Выберите или создайте проект Google Cloud.

Чтобы выбрать существующий проект, воспользуйтесь выпадающим списком:

b35bf95b8bf3d5d8.png

Для создания нового проекта в Google Cloud выполните следующие действия:

  1. Перейдите в консоль Google Cloud Platform .
  2. Нажмите кнопку «Создать проект» .
  3. Введите название для вашего проекта.
  4. Выберите платежный аккаунт для вашего проекта.
  5. Нажмите кнопку «Создать» .

Ваш проект будет создан, и вы перейдете на панель управления проектом. Оттуда вы сможете начать использовать сервисы Google Cloud.

Вот дополнительная информация о каждом этапе:

  • Название: Название вашего проекта должно быть уникальным в рамках вашей организации.
  • Платежный аккаунт: Вы можете использовать существующий платежный аккаунт или создать новый.
  • Создание: После ввода всей необходимой информации нажмите кнопку «Создать» , чтобы создать свой проект.

Для получения более подробной информации см. документацию Google Cloud по созданию проектов .

3. Разверните API-приложение

О чём рассказывается в примере приложения или API?

Наше приложение представляет собой простое приложение для управления запасами через API, которое предоставляет REST API-интерфейс с несколькими операциями для отображения списка товаров на складе и получения количества конкретного товара.

После развертывания API и при условии, что он размещен по адресу https://<somehost>, мы можем получить доступ к конечным точкам API следующим образом:

https://<somehost>/inventory

Это отобразит список всех товаров с указанием уровня их наличия на складе.

https://<somehost>/inventory/{productid}

Это позволит получить единую запись, содержащую идентификатор продукта и уровень запасов данного товара.

Возвращаемые данные в ответе имеют формат JSON.

Примечание : Данное API-приложение предназначено только для демонстрационных целей и не представляет собой безопасную и надежную реализацию API. Оно предназначено для быстрого ознакомления с основной целью лабораторной работы, а именно с операциями в Google Cloud.

Пример данных и запросы/ответы API

Для простоты приложение не использует базу данных в качестве бэкэнда. Оно содержит 3 примера идентификаторов товаров и информацию об уровне их наличия на складе.

Идентификатор продукта

Уровень запасов на складе

И-1

10

И-2

20

И-3

30

Ниже приведены примеры запроса и ответа API:

API-запрос

Ответ API

https://<somehost>/inventory

[ { "I-1": 10, "I-2": 20, "I-3": 30 }]

https://<somehost>/inventory/I-1

{ "productid": "I-1", "qty": 10}

https://<somehost>/inventory/I-2

{ "productid": "I-2", "qty": 20}

https://<somehost>/inventory/I-200

{ "productid": I-200, "qty": -1}

Клонируйте репозиторий

Хотя Google Cloud можно управлять удаленно с ноутбука, в этом практическом занятии вы будете использовать Google Cloud Shell — среду командной строки, работающую в облаке.

В консоли GCP щелкните значок Cloud Shell на панели инструментов в правом верхнем углу:

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

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

Настройка gcloud

В Cloud Shell задайте идентификатор проекта и сохраните его в качестве переменной PROJECT_ID.

PROJECT_ID=[YOUR-PROJECT-ID]

gcloud config set project $PROJECT_ID

Теперь выполните следующую команду:

$ git clone https://github.com/rominirani/cloud-code-sample-repository.git

В результате в этой папке будет создана папка с названием cloud-code-sample-repository.

(Необязательно) Запустите приложение в Cloud Shell.

Вы можете запустить приложение локально, выполнив следующие действия:

  1. В терминале перейдите к версии API для Python, используя следующую команду:

$ cd cloud-code-sample-repository

$ cd python-flask-api

  1. В терминале введите следующую команду (на момент написания статьи Cloud Shell поставляется с предустановленным Python 3.9.x, и мы будем использовать версию по умолчанию. Если вы планируете запускать его локально на своем ноутбуке, вы можете использовать Python 3.8+):

$ python app.py

  1. Для запуска локального сервера Python можно выполнить следующую команду.

1f798fbddfdc2c8e.png46edf454cc70c5a6.png

Нажмите «Предварительный просмотр» на порту 8080. 5. Откроется окно браузера. Вы увидите ошибку 404, это нормально. Измените URL-адрес, добавив после имени хоста только /inventory.

Например, на моём компьютере это выглядит так:

https://8080-cs-557561579860-default.cs-asia-southeast1-yelo.cloudshell.dev/inventory

Это отобразит список товаров на складе, как объяснялось ранее:

709d57ee2f0137e4.png

  1. Теперь вы можете остановить сервер, перейдя в Терминал и нажав Ctrl-C.

Разверните приложение

Теперь мы развернем это API-приложение в Cloud Run. Для этого мы использовали клиент командной строки gcloud, чтобы выполнить команду развертывания кода в Cloud Run .

В терминале выполните следующую команду gcloud:

$ gcloud run deploy --source .

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

  1. Название сервиса (python-flask-api): либо используйте это имя по умолчанию, либо выберите что-то вроде my-inventory-api.
  2. API [run.googleapis.com] не включен в проекте [613162942481]. Хотите включить и повторить попытку (это займет несколько минут)? (да/нет)? Да
  3. Пожалуйста, укажите регион: выберите 31 (us-west-1)
  4. API [artifactregistry.googleapis.com] не включен в проекте [613162942481]. Хотите включить и повторить попытку (это займет несколько минут)? (да/нет)? Да
  5. Для развертывания из исходного кода требуется репозиторий Docker в реестре артефактов для хранения собранных контейнеров. Будет создан репозиторий с именем [cloud-run-source-deploy] в регионе [us-west1].
  6. Вы хотите продолжить (Да/Нет)? Да
  7. Разрешить неаутентифицированные вызовы к [my-inventory-api] (да/нет)? Да

В конечном итоге, это запустит процесс, в ходе которого ваш исходный код будет упакован в контейнер, отправлен в реестр артефактов, а затем развернут сервис Cloud Run с указанием ревизии. Наберитесь терпения (это может занять 3-4 минуты), и вы увидите, как процесс завершается, а вам будет показан URL-адрес сервиса.

Пример выполнения показан ниже:

87ba8dbf88e8cfa4.png

Протестируйте приложение

Теперь, когда мы развернули приложение в Cloud Run, вы можете получить доступ к API-приложению следующим образом:

  1. Обратите внимание на URL-адрес сервиса из предыдущего шага. Например, в моей конфигурации он отображается как https://my-inventory-api-bt2r5243dq-uw.a.run.app . Назовем его <SERVICE_URL> .
  2. Откройте браузер и перейдите по следующим трем URL-адресам, чтобы получить доступ к конечным точкам API:
  3. <SERVICE_URL>/inventory
  4. <SERVICE_URL>/inventory/I-1
  5. <SERVICE_URL>/inventory/I-100

Оно должно соответствовать спецификациям, которые мы предоставили в предыдущем разделе, включая пример запроса и ответа API.

Получение сведений об услуге из Cloud Run

Мы развернули наш API-сервис в Cloud Run, бессерверной вычислительной среде. Мы можем в любой момент получить доступ к сервису Cloud Run через консоль Google Cloud.

В главном меню перейдите в раздел Cloud Run. Отобразится список запущенных вами служб в Cloud Run. Вы должны увидеть службу, которую только что развернули. В зависимости от выбранного вами имени, вы должны увидеть что-то подобное:

2633965c4bc957cc.png

Нажмите на название услуги, чтобы просмотреть подробную информацию. Примерные данные приведены ниже:

33042ae64322ce07.png

Обратите внимание на URL-адрес, который представляет собой URL-адрес сервиса, который вы можете ввести в браузер и получить доступ к только что развернутому API инвентаризации. Ознакомьтесь с метриками и другими подробностями.

Давайте начнём с Google Cloud Operations Suite.

4. Создайте тему Pub/Sub для получения уведомлений.

Для создания темы Pub/Sub выполните следующие действия в консоли Google Cloud :

  1. Введите Pub/Sub в поле поиска и перейдите на сайт Pub/Sub. 935028bd8f6328ef.png
  2. Если вы еще не находитесь на вкладке «Темы», нажмите на нее. 7fd8bf91386a88fd.png
  3. Нажмите кнопку «Создать тему» . cd9d197f9023c41b.png
  4. Введите название для вашей темы.

173f313b4a3c4934.png

  1. Нажмите кнопку «Создать» . ca9a02477da21a44.png
  2. Скопируйте название темы с помощью кнопки «Копировать». Оно понадобится вам в следующем разделе.

20848252ee83df93.png

5. Создайте проверку времени безотказной работы.

Чтобы создать проверку доступности для приложения Google Cloud Run:

  1. Перейдите в консоль Google Cloud Platform .
  2. Перейдите на вкладку «Мониторинг» .
  3. Перейдите на вкладку «Проверки доступности» .
  4. В верхней части страницы нажмите кнопку «Создать проверку доступности» .

96561799ca500777.png

  1. Используйте следующие значения:
  2. Протокол: HTTPS
  3. Тип ресурса: URL
  4. Имя хоста: Введите URL-адрес службы Cloud Run без https . Пример приведен на скриншоте ниже. Если вы не уверены в URL-адресе службы, перейдите в Cloud Run из главной консоли Google Cloud и, как описано ранее, перейдите к сведениям о службе Cloud Run, чтобы получить URL-адрес службы.
  5. Путь: здоровый
  6. Частота проверки: 1 минута

342865c6d921ff41.png

  1. Нажмите «Продолжить»
  2. Включение функции сопоставления контента.
  3. В поле «Содержание ответа » введите «All Izz Well»; эта строка уже присутствует в приложении при отправке полных ответов.
  4. Держать

6c9ad336b5479478.png

  1. В параметре Acceptable HTTP Response Code оставьте значение Response Code Classes и укажите 2xx в качестве единственного класса кодов ответа. Таким образом, для проверки строки будут учитываться только коды ответов с 2xx, а все остальные автоматически будут считаться неудачной проверкой. 5a75d8a9e8a11dd4.png
  2. Нажмите «Продолжить»
  3. Выберите тему Cloud Pub/Sub в качестве канала уведомлений и нажмите OK.

d00db9f6ac56d07c.png

  1. Нажмите «Продолжить»
  2. Добавьте узнаваемый заголовок. d639135da780cce3.png
  3. Нажмите кнопку «Тест» .

968753a66ed43a75.png

  1. Просмотрите список необходимых документов и нажмите кнопку «Создать» , когда будете готовы. 72e5e2081a36d902.png

Будет создана проверка доступности, и начнется мониторинг вашего приложения Cloud Run. Вы можете просмотреть статус проверки доступности на вкладке «Проверки доступности» .

3fd026b0c07ef4ec.png

6. Поздравляем!

Поздравляем, вы успешно настроили проверку доступности системы для отправки оповещений в Pub/Sub!