Уведомление о функциях Azure при сбое

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

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

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

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

Я вижу, что функции могут передавать свой статус $ return в качестве входных данных другим функциям, но эта операция не объясняется подробно в документации. Кроме того, в этом случае мне нужно написать другую функцию для обработки статуса ошибки, и я искал что-то встроенное.

Я спросил об этом у @AzureSupport, но их ответ не имел ничего общего с функциями Azure, а вместо этого отсылал меня к обработчикам уведомлений DLL, а затем рекомендовал подать в пользовательский голос.

Я уверен, что здесь должны быть люди, которые внедрили какое-то уведомление о статусе ошибки. Я предпочитаю решение, не требующее кода.


person Leigh007    schedule 05.05.2017    source источник


Ответы (5)


Рекомендуемый способ отслеживания сбоев и оповещения о них - использование AppInsights, которое теперь полностью интегрируется с Функциями Azure.

https://blogs.msdn.microsoft.com/appserviceteam/2017/04/06/azure-functions-application-insights/

Поскольку все журналы доступны в AppInsights, легко отслеживать сбои и настраивать оповещения на основе ваших собственных критериев.

Однако, если вас интересуют только предупреждения, а не такие вещи, как мониторинг и т. Д., Вы можете вместо этого использовать Azure Monitor: https://docs.microsoft.com/en-us/azure/monitoring-and-diagnostics/monitoring-get-start

person Chris    schedule 31.05.2017

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

...

Я предпочитаю решение, не требующее кода.

Это решение без кода:

Я уже однажды наткнулся на @AzureFunctions по этой теме, и я предложил использовать Application Insights. Он может обрабатывать предупреждения при сбое, а также может использовать веб-перехватчики.

Информацию о том, как чтобы связать приложение-функцию с App Insights. Затем настройте любые оповещения, которые хотите.

person flyte    schedule 08.05.2017

К сожалению, этого крючка не существует.

Можете ли вы переключиться с триггера таймера на триггер очереди?

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

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

person Matt Mason    schedule 05.05.2017
comment
Спасибо. Посмотрим на это и доложим. Также будет на // BUILD на следующей неделе в семинаре по бессерверным вычислениям. - person Leigh007; 06.05.2017
comment
Только что вернулся к этому. Если я вас правильно понимаю, мне следует 1) создать очередь 2) написать функцию таймера, которая добавляет сообщение в очередь по расписанию, используя тайм-аут для сообщения, чтобы оно исчезло через некоторое время 3) изменить мою фактическую рабочую функцию это была функция таймера, которая должна была стать функцией очереди. 4) Напишите другую функцию, которая читает подозрительную очередь с тем же именем 'orig-queue'-Poid, которая затем имеет сетку отправки или вывод twilio, или обрабатывает сообщение каким-либо другим способом. Это о правде? Спасибо - person Leigh007; 06.05.2017
comment
Это сработает. Вы также можете запланировать выполнение каждой очереди для следующего выполнения. Чтобы запустить ее, запустите функцию вручную или добавьте элемент в очередь. У Джонни также есть хороший ввод - если вас не беспокоят ошибки привязки или тайм-ауты, вам может помочь попытка уловки. - person Matt Mason; 08.05.2017

Чтобы получать предупреждения о сбое, у вас есть два варианта:

  1. Триггер таймера сканирует журналы выполнения (через SFTP) на предмет сбоев.
  2. Оберните всю функцию в блок try / catch, а в блоке catch напишите несколько строк, чтобы отправить вам электронное письмо с подробностями об ошибке.

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

person Jonny Leigh    schedule 07.05.2017

Нет кода:

  1. Перейдите в свою учетную запись в лазурном облаке

  2. В меню выберите Монитор.

  3. Затем выберите Добавить новое правило.

  4. Затем выберите свое условие, действие и добавьте сведения о предупреждении.

person MarwaAhmad    schedule 17.10.2019
comment
Это действительно работает, но я не видел, как проверить, нет ли сбоев при выполнении. Произошла ошибка при плохой компиляции. Он действительно запускался, но просто выдавал ошибки. Смотрел разные варианты, но не нашел ничего, что включало бы это. - person Dan Parker; 11.11.2019
comment
ваш код возвращает код ответа 4xx в случае сбоя выполнения? если да, то вы можете поставить условие правила лазурного, когда произойдет 4xx. Если нет, то я думаю, вам может понадобиться внешний журнал, чтобы вы могли ссылаться на него, когда что-то случится. - person MarwaAhmad; 16.11.2019