Правильный способ реализации службы уведомлений и сигналов тревоги Azure Stream Analytics - PullRequest
0 голосов
/ 01 октября 2018

Я работаю с сенсорными системами, где каждый сенсор отправляет новое показание каждые 15 секунд.

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

Предположим, что датчик сИдентификатор «XXX_01» отправляет 2 показания в течение 30 секунд, каждое показание имеет более высокое значение, чем допустимое значение MAX.

Event in: 01/10/2018 12:00:00
{ id:"XXX_01", value: 90, "temperature" } 

Event in: 01/10/2018 12:15:00
{ id:"XXX_01", value: 95, "temperature" }

Теперь я хочу уведомить конечного пользователя о наличии тревоги - я должен отправитьсвоего рода уведомление для конечного пользователя (ей).Проблема и путаница в том, что я не хочу отправлять сигналы тревоги дважды.

Предполагая, что я использую что-то вроде Twilio для отправки SMS или просто для отправки уведомлений по электронной почте, я не хочу спамить своих конечных пользователей новым уведомлением каждые 15 секунд, при условии, что входящие показания датчика остаются выше допустимого значения MAX.

Какую парадигму службы, архитектуры или дизайна Azure можно использовать, чтобы избежать такой проблемы?

Ответы [ 3 ]

0 голосов
/ 02 октября 2018

Я также согласен с ответом Джея о противоречии.

Но еще один способ, которым мы можем справиться с этим, я также столкнулся с аналогичной проблемой в одном из своих назначений, что я пытался отследить после отправки тревоги через кеш(т.е. redi cache, memcache и т. д.) и каждый раз проверяйте, если тревога уже отправлена, то не отправлена.Очевидно, что компромисс заключается в том, что каждый раз, когда нам нужно проверять, но это проблема, которую вы должны решить

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

Надеюсьэто помогает.

0 голосов
/ 03 октября 2018

с помощью Azure Stream Analytics вы можете активировать предупреждение при превышении порога И, например, если это первый раз за последние 30 с.

Я приведу пример SQL для этого примера:

 SELECT *
 FROM input
 WHERE ISFIRST(second, 30) OVER (WHEN value> 90)=1

Сообщите нам, если у вас возникнут дополнительные вопросы.

0 голосов
/ 02 октября 2018

Я должен сказать, что A (не хочу спамить уведомления пользователей) и B (высокая температура тревоги, как только она касается линии MAX) имеют некоторые противоречия. Это трудно реализовать.

InНа мой взгляд, вы можете отправлять уведомления пользователям с фиксированной периодичностью.

1.В этот период частоты, например, в 1 минуту, используйте службу аналитики потока Azure для получения данных датчика каждые 15 секунд.

2. Затем выведите данные в очередь хранения Azure.

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

4.НаконецОчистите очередь.

Надеюсь, она вам поможет.

...