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

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

О практической работе

subjectПоследнее обновление: июл. 7, 2023
account_circleАвторы: Aron Eidelman

1. Введение

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

Оповещение о проверке доступности

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

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

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

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

Темы Pub/Sub как канал оповещения

Тему 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
  • Создание тем Pub/Sub
  • Создание проверок работоспособности
  • Создание оповещений

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 Operations.

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

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

Идантификационный номер продукта

Уровень имеющихся запасов

Я-1

10

И-2

20

И-3

30

Пример запроса и ответа API показан ниже:

API-запрос

Ответ API

https://<somehost>/inventory

[ { "И-1": 10, "И-2": 20, "И-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 Cloud, что значительно повышает производительность сети и аутентификацию. Всю работу в этой лабораторной работе можно выполнять с помощью простого браузера.

Настройка gcloud

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

PROJECT_ID=[YOUR-PROJECT-ID]

project set config gcloud $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. Для развертывания из исходного кода требуется репозиторий Artifact Registry 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 Console :

  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. Оставьте для параметра «Приемлемый код ответа HTTP» значение «Классы кода ответа» и 2xx в качестве единственного класса кода ответа. Таким образом, для строки будут оцениваться только коды ответов с 2xx, а все остальное автоматически будет считаться неудачной проверкой. 5a75d8a9e8a11dd4.png
  2. Нажмите Продолжить
  3. Выберите тему Cloud Pub/Sub в качестве канала уведомлений и нажмите «ОК».

d00db9f6ac56d07c.png

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

968753a66ed43a75.png

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

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

3fd026b0c07ef4ec.png

6. Поздравления

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