Строительство SMS в реальном времени, WhatsApp и Slack оповещения

Influxdata спонсировала этот пост.

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

Это руководство проведет вас через создание комплексной системы оповещения, используя встроенный новый двигатель базы данных базы данных PlupuxDB. Мы установим оповещения по трем критическим каналам: SMS, WhatsApp и Slack с использованием популярных сторонних услуг, таких как Twilio и Slack’s API. Результат? Надежная система уведомлений, которая гарантирует, что ваша команда никогда не пропускает критическое предупреждение.

Наш вариант использования: многоканальный мониторинг температуры

SMS -предупреждение

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

  • SMS: Для немедленных мобильных уведомлений, которые прорезают шум.
  • WhatsApp: Для богатых сообщений с международным охватом и поддержкой мультимедиа.
  • Пролечить: Для сотрудничества команды, реагирования на инцидент и истории предупреждения об поиске.
  • Influxdb 3: Для встроенной обработки, которая устраняет внешние инструменты оркестровки. Он беспрепятственно работает от развертываний облаков до края устройств, таких как Raspberry Pi 5, со встроенным двигателем обработки, который обрабатывает данные у источника.

Этот многоканальный подход обеспечивает избыточность и достигает членов команды с помощью их предпочтительных методов связи, в то время как встраиваемая обработка InfluxDB 3 устраняет сложные трубопроводы данных. Та же схема относится к бесчисленным сценариям:

Приложения IoT:

WhatsApp оповещение

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

DevOps и безопасность:

  • Деградация производительности сервера
  • Скорость ошибки приложения шипы
  • Уведомления о нарушении безопасности
  • Подозрительное обнаружение активности

Системная архитектура

Наша система оповещения использует механизм обработки InfluxDB 3, встроенный виртуальный компьютер Python, который запускает код непосредственно внутри базы данных. Он является частью как Plupuxdb 3 Core, так и Enterprise. Вы можете скачать базу данных бесплатно и следовать.

Эта архитектура дает несколько преимуществ:

  • Снижение задержки: Обработка происходит на уровне данных.
  • Упрощенная инфраструктура: Не требуется внешней задачи.
  • Встроенная масштабируемость: Использует характеристики производительности InpluxDB.
  • Поток данных

  • Проглатывание данных: Датчики температуры записывают данные с помощью API клиента InfluxDB.
  • Обработка двигателя: Встроенный Python VM-процессы потоковые данные с использованием триггеров и плагинов.
  • Распределение оповещения: Пользовательский код Python отправляет уведомления по нескольким каналам.
  • Понимание триггеров

    Influxdb 3 предоставляет три типа триггеров для различных вариантов использования:

    • Wal Flush Trigger: Процессы пакетные записи (по умолчанию: каждую секунду), что идеально подходит для наших температурных оповещений.
    • Расписание триггер: Выполняется по расписанию, похожим на Cron-идеально подходит для периодических проверок здоровья.
    • На триггере: Создает пользовательские http-конечные точки для интеграций в стиле веб-хука.

    #Wal-flush Trigger def process_writes (plupuxdb3_local, table_batches, args): успех, config = get_config (args), если не успех: #… обрабатывать ошибки … return process_wal_flush (plupuxdb3_local, table_batches, config) 123456 #wal-flush triggerdef, table_batches, config) 123456 #wal-flush (table_batches, config) 1234567 #wal-flush (table_batches, config). table_batches, args): успех, config = get_config (args), если не успех: # … обрабатывать ошибки … return procep_wal_flus

    Руководство по реализации

    Полный пример кода для конфигурации SMS/WhatsApp доступен на GitHub.

    Шаг 1: Настройте свои услуги

    Создайте файл конфигурации с учетными данными для всех трех служб:

    # .env file twilio_account_sid = acxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Twilio_from_whatsapp_number = xxxxxxxxxxx twilio_to_whatsapp_number = xxxxxxxxxxx #slack configuration slack_bot_token = xoxb-your-bot-token slack_channel = #предупреждения 1234578910111213 #.env fileTWILIO_ACCOUNT_SID=ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxTWILIO_AUTH_TOKEN=your_auth_tokenTWILIO_FROM_NUMBER=xxxxxxxxxxTWILIO_TO_NUMBER=xxxxxxxxxx # WhatsApp ConfigurationTwilio_FROM_WHATSAPP_NUMBE = XXXXXXXXXXXXXXXTWILIO>

    Шаг 2: запустите Influxdb 3 с помощью двигателя обработки

    Включите двигатель обработки, указав на свой каталог плагинов:

    plupuxdb3 File vome vom-node-id host01 \ -object store \-data-dir ~/.influxdb3-pplugin-dir ~/.plugins 12345 plupuxdb3 vom-node-id host01 \ -object-store \-data-dir ~/.influxdb3-pplugin-dir ~./.

    Шаг 3: Установите необходимые зависимости

    Установите пакеты, необходимые для нашего многоканального оповещения:

    PlupuxDB3 Установка пакет Twilio Python-Dotenv Slack-Sdk 1 Influxdb3 Установка пакет Twilio python-dotenv Slack-Sdk

    Шаг 4: Настройка базы данных и таблицы

    Influxdb3 Создание базы данных комната TEMP InfluxDB3 Создание таблицы Temp 12 plupuxdb3 Создание базы данных комната-tempinfluxdb3 Создание таблицы температура

    Шаг 5: Создайте и включите предупреждающий триггер

    Influxdb3 Создать триггер \-trigger-spec «all_tables:» \-plugin-filename «многоканальный alert.py» \-database Room-Temp \ multi_channel_alert \-trigger-arguments » -Database Room-TEMP MULTI_CHANLER_ALERT 12345678 InfluxDB3 Создать триггер \-trigger-spec «all_tables:» \-pplugin-filename «многоканальный alert.py» \-database Room-temp \ multi_channel_alert \-trigger-arguments «field_name = температура, threshold = 22,5, enable_sms = true, enable_whatsapp = true, enable_slack = true» plupuxdb3 enable trigger-database Комната-TEMP multi_channel_alert

    Шаг 6: Проверьте свои многоканальные оповещения

    plupuxdb3 test wal_plugin \—lp «temp, location = заводская температура = 90i 1678886400000000000» \—input-arguments «field_name = температура, порог = 80, enable_sms = true, ensable_whatsapp = true, enable_slack = true» \—database room-temp \ multi-aleart-al-al-al-al-al-al-al-al-al-al. wal_plugin \—lp «Temp, location = температура завода = 90i 1678886400000000000» \—input-arguments «field_name = температура, порог = 80, enable_sms = true, enable_whatsapp = true, enable_slack = true» \-database room-temp \ multi-channel-alert.pypy

    Добавление интеграции Slack

    В то время как SMS и WhatsApp предоставляют немедленные личные уведомления, Slack Integration добавляет мощные функции сотрудничества команды. Вот как расширить вашу систему оповещения с Slack:

    Настройка интеграции Slack

    Во -первых, создайте приложение Slack и пользователя бота:

  • Посетите приборную панель API Slack.
  • Создайте новое приложение для вашей рабочей области.
  • Добавьте чат: напишите применение токена бота.
  • Установите приложение в свою рабочую область.
  • Скопируйте токен пользователя бота OAuth.
  • Усовершенствованный подключаемый код

    Ваш плагин теперь может отправлять скоординированные оповещения по всем каналам:

    def send_slack_alert (config, message, message): «» «» Отправить оповещение на Slack Channel «» Try: от Slack_sdk import webclient client = webclient (token = config[‘slack_bot_token’]) response = client.chat_postmessage (канал = канал, текст = сообщение, вложения =[{
    «color»: «danger»,
    «fields»: [{
    «title»: «Alert Type»,
    «value»: «Temperature Threshold Exceeded»,
    «short»: True
    }]
    }]) ответный ответ[‘ok’]
    За исключением исключения как e: print (f «Slack Alert Faile: {e}») вернуть false 12345678910111213141516171819202122 def send_slack_alert (config, сообщение, канал): «» «Отправить оповещение на Slack» «Попробуйте: от Slack_sdk Import WebClient клиент = webclient (token = configen = configen = configen = configen = configen = configen = configen = configen = configen = configen = configen = configen = configen = configen = configen = configen = ward waler[‘slack_bot_token’]) response = client.chat_postmessage (канал = канал, текст = сообщение, вложения =[{                «color»: «danger»,                «fields»: [{                    «title»: «Alert Type»,                    «value»: «Temperature Threshold Exceeded»,                    «short»: True                }] }]) ответный ответ[‘ok’] За исключением исключения как e: print (f «Slack Alert не удалось: {e}») вернуть false

    Преимущества многоканального оповещения

    • Избыточность: Если одна услуга не работает, другие продолжают работать.
    • Аудитория таргетинг: SMS для инженеров по вызову, Slack for Team.
    • Богатый контекст: Slack допускает резьбовые дискуссии и управление инцидентами.
    • Аудиторская тропа: Slack обеспечивает историю предупреждения об поиске.

    Расширенные параметры конфигурации

    Вы можете настроить поведение оповещения через триггерные аргументы:

    -Trigger-arguments «field_name = температура, threshold = 80, cooldown_minutes = 5, enable_sms = true, enable_whatsapp = false, enable_slack = true, slack_channel =#critical-alerts» 1-trigger-arguments «field_name = температура, threshold = 80, cooldown_minutes = 5, enable_sms = true, enable_whatsapp = false, enable_slack = true, slack_channel =#critical-alerts»

    Ключевые параметры:

    • couldown_minutes: Предотвращает предупреждение спама во время устойчивых пороговых нарушений.
    • revility_levels: Различные пороги для предупреждения против критических оповещений.
    • Business_hours_only: Ограничьте определенные типы предупреждения в рабочее время.
    • Escalation_rules: Прогрессивное предупреждение на основе продолжительности или тяжести.

    Соображения производства

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

    Готовы создать пуленепробиваемое предупреждение для ваших критических систем? Инструменты у вас под рукой, и теперь пришло время поставить их на работу.

    InfluxData является создателем PlupuxDB, ведущей платформы временных рядов, используемой для сбора, хранения и анализа данных всех временных рядов в любом масштабе. Разработчики могут запрашивать и анализировать свои данные, отмеченные временем в режиме реального времени, чтобы открыть, интерпретировать и обмениваться новыми идеями, чтобы получить конкурентное преимущество. Узнайте больше новейших из InfluxData Trending Stories YouTube.com/ThenewStack Tech движется быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. Suyash Joshi — старший инженер -программист и адвокат разработчиков в InfluxData. Его карьера охватывает ведущие ключевые проекты в Oracle и RingCentral в прошлом. Держа как BS в информатике, так и MA в игровом дизайне, он смешивает … Подробнее от Suyash Joshi

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *