Как настроить внешний мониторинг и оповещения по электронной почте

Мэтью Руньон

Зачем нужно отслеживать постоянные запросы?

Настойчивые вопросы Deephaven должны быть, как следует из названия, настойчивыми. Но это не значит, что они застрахованы от ошибок. Возможно, обновление прошло не так, как планировалось, или вашему серверу не хватает ресурсов для распределения ежедневных запросов, или вашему запросу не хватает оперативной памяти. Это могло привести к проблемным сбоям. К счастью, Deephaven делает методы устранения неполадок доступными. Один из таких вариантов - внешний мониторинг Deephaven с помощью OpenAPI и Node.js.

Мониторинг можно выполнить в 4 простых шага:

  1. Подключитесь к инстансу Deephaven (узнайте об этом здесь)
  2. Настроить службу уведомлений
  3. Слушайте неудачи
  4. Отправлять уведомления о сбоях на электронную почту, в Slack и т. Д.

В этой статье показан пример использования OpenAPI Deephaven с Node.js, чтобы легко отслеживать статус постоянного запроса и отправлять электронные письма с предупреждениями об ошибках или сбоях (вы, конечно, можете настроить оповещения о чем угодно, например об обновлениях таблиц).

Подключение к Deephaven

Мы будем использовать базовый проект из Начало работы с Deephaven OpenAPI и Node.js в качестве отправной точки. Обратите внимание, что в коде app.js используются примеры значений местоположения сервера и учетных данных, которые необходимо изменить в соответствии с вашими данными аутентификации. В этом руководстве предполагается, что у вас уже есть постоянные запросы, которые вы хотите отслеживать.

Ниже приведен пример кода на основе стартового кода для подключения к Deephaven. После подключения он получает конфигурацию уведомления (детали конфигурации), а затем создает наш монитор отказов.

Настройка службы уведомлений

После подключения к Deephaven нам нужно настроить нашу службу аутентификации. Для уведомлений по электронной почте хорошим выбором будет пакет Nodemailer (https://nodemailer.com/). Чтобы использовать Nodemailer, нам нужно будет создать транспортный объект с параметрами нашего почтового сервера. Затем этот транспортер можно использовать для отправки сообщений.

Чтобы упростить тестирование нашей электронной почты (и предотвратить спам в нашем почтовом ящике), мы будем использовать тестовую учетную запись от Ethereal (https://ethereal.email/), которая удобно включена в Nodemailer. Ethereal позволяет просматривать электронные письма в браузере, не отправляя их. Если вы хотите отправлять настоящие электронные письма, то транспортер должен отражать вашу фактическую конфигурацию почтового сервера.

Код для создания транспортера Nodemailer приведен ниже:

Прислушиваясь к неудачам

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

  • Приобретение
  • Инициализация
  • Бег
  • Не удалось
  • Ошибка
  • Отключен
  • Остановлен

Текущее состояние - это часть конфигурации запроса. Для удобства OpenAPI предоставляет метод для прослушивания обновлений конфигурации, которые часто запускаются изменениями состояния. Затем мы можем проверять состояние при каждом обновлении конфигурации, чтобы увидеть, перешел ли запрос в одно из состояний сбоя («Отключен», «Ошибка» или «Сбой») и отправить уведомление.

В этом примере мы создадим класс под названием «PQAlertMonitor» для отслеживания сбоев и отправки уведомлений. В конструкторе этого класса мы добавим наш прослушиватель событий для постоянных обновлений конфигурации запросов, чтобы мониторинг запускался, как только мы создаем экземпляр класса.

Код конструктора ниже:

Как упоминалось выше, есть три плохих состояния, о которых мы хотели бы получать уведомления: «Отключено», «Ошибка» и «Сбой». Нам также нужно будет собрать дополнительную информацию о запросе, который не удался, из конфигурации, что поможет в устранении неполадок. Несколько полезных свойств конфигурации: name - удобочитаемое имя для запроса (например, «Мой запрос») и серийный - уникальный идентификатор, который более полезен. чтобы быстро определить точный запрос в журналах.

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

Отправка сообщений об ошибках

Последняя часть нашей системы мониторинга - это фактическая отправка сообщения. Мы просто отправим простое сообщение, содержащее имя нашего запроса, серийный номер и хост запроса. Этой информации должно быть достаточно, чтобы точно определить, какой запрос вы ищете, даже если выполняются сотни постоянных запросов. (Пользователи Deephaven могут захотеть ознакомиться с нашей документацией по внутренним таблицам Deephaven, например QueryPerformanceLog, чтобы узнать больше о поиске деталей по вашему запросу и о том, как исправить его плохое состояние.)

Код для отправки электронного письма показан ниже:

Эти сообщения можно легко отправить с помощью любого другого сервиса (Slack, SMS и т. Д.), Переключив объект мессенджера и соответствующие функции. Мы используем Ethereal, чтобы легко просматривать форматирование электронной почты и, при необходимости, вносить изменения, не забывая спам в нашем почтовом ящике. Nodemailer позволяет получить URL-адрес сообщения на Ethereal. Пример предварительного просмотра сообщения показан ниже.

Когда вы будете удовлетворены форматированием своего электронного письма, вы можете изменить конфигурацию Nodemailer, чтобы использовать реальный почтовый сервер вместо Ethereal.

Заключение

В этой статье мы рассмотрели, как осуществлять внешний мониторинг постоянных запросов Deephaven с помощью Node.js, чтобы мы могли отправлять уведомления, если что-то пойдет не так. Благодаря OpenAPI Deephaven код получается коротким, простым и понятным. Теперь мы можем отдыхать спокойно, зная, что о любом постоянном сбое запроса, который у нас может быть, будет немедленно сообщено с достаточной подробностью, чтобы быстро найти файл журнала и решить проблему.

Ознакомьтесь с полной версией проекта на GitHub.