2017-05-05 129 views
3

我在生产中运行了定时器触发的Azure函数,但现在我希望在函数失败时收到通知。Azure函数失败通知

在我的情况下,访问各种连接的服务可能导致崩溃,并且有很多故障排除。崩溃是我需要通知的错误类型。

当函数失败时,日志条目指示失败,所以我想知道系统中是否有钩子可以让系统生成通知。

例如,我知道blob和队列绑定支持创建毒性队列条目,但是定时器触发绑定并没有说出任何有关该性质的触发输出。

我看到函数可以将其$返回状态作为输入传递给其他函数,但该操作在文档中没有深入解释。另外,在这种情况下,我需要编写另一个函数来处理错误状态,并且我正在寻找内置的东西。

我曾就此询问了@AzureSupport,但他们的答案与Azure函数无关,而是将我引用到DLL通知挂钩,然后在uservoice上推荐I文件。

我确定这里一定有人实施了某种错误状态通知。我更喜欢不需要代码的解决方案。

回答

1

不幸的是,这个挂钩不存在。

你可以从定时器触发器切换到队列触发器吗?

您可以获得重试(如果您需要),并且在指定的尝试次数后将消息发送到毒性队列。

要计划执行,您可以添加具有可见性超时的队列消息以匹配您的计划。

+0

感谢。将调查并报告。此外,将于下周在无服务器计算研讨会上发布BUILD。 – Leigh007

+0

刚刚回到这里。如果我正确理解你,我应该1)创建一个队列2)编写一个定时器函数,它根据消息在队列中添加一条消息,使用消息的超时时间,以便在一段时间后消失3)改变我的实际工作者函数那是一个定时器函数,它是一个队列函数。 4)编写另一个函数,读取具有相同名称'orig-queue'-poison,然后具有发送网格或twilio输出的毒性队列,或者以其他方式处理消息。这是对的吗? Thx – Leigh007

+0

这将工作。您也可以让每个队列执行计划下一次执行。要启动它,请手动运行该功能或将项目添加到队列中。 Jonny也有一些很好的输入 - 如果你不担心绑定错误或超时,try try可以为你工作。 –

0

为了得到对故障警报有两个选项:

  1. 定时器触发比扫描执行日志(通过SFTP)的故障。
  2. 将整个函数包装在try/catch块中,并在catch块中写几行,向您发送包含错误详细信息的电子邮件。

希望这会有所帮助。

2

当函数确实失败时,日志条目指示失败,所以我想知道系统中是否有钩子可以让系统生成通知。

...

我宁愿不需要代码的解决方案。

这是一个零代码解决方案:

我对这个话题之前曾经戳@AzureFunctions,以及建议的反应是使用应用程序的启示。它可以处理失败时的警报,也可以使用webhook。

请参阅Azure Functions App-Insights关于如何将您的功能应用程序链接到App Insights的文档。然后设置你想要的任何提醒。

2

监测和故障警报的推荐方法是使用,因为所有的日志都是AppInsights可以很容易监控故障和设置警报充分与Azure的功能,现在

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

集成AppInsights根据您自己的标准。

但是,如果你只关心报警和不喜欢的事情等监控,你可以使用Azure的显示器来代替:https://docs.microsoft.com/en-us/azure/monitoring-and-diagnostics/monitoring-get-started