Azure functions 如何为失败的持久功能编排设置Azure警报?

Azure functions 如何为失败的持久功能编排设置Azure警报?,azure-functions,azure-monitoring,azure-durable-functions,azure-alerts,Azure Functions,Azure Monitoring,Azure Durable Functions,Azure Alerts,当作为持久业务流程链一部分的活动功能中发生未知异常时,我希望通过电子邮件警报得到通知。问题在于,当在活动函数中引发异常时,Application Insights中记录的错误显示的状态代码为零。在Azure警报中,没有警报配置会查找日志消息状态代码为零,只有1xx、2xx、4xx等。无论我在代码上尝试了什么,我都无法让函数返回4xx或5xx错误代码 如何在Azure Monitor Alert中设置以捕获失败的业务流程?有没有一种方法可以在抛出异常时强制执行非零状态代码 背景信息 正如下面的屏幕

当作为持久业务流程链一部分的活动功能中发生未知异常时,我希望通过电子邮件警报得到通知。问题在于,当在活动函数中引发异常时,Application Insights中记录的错误显示的状态代码为零。在Azure警报中,没有警报配置会查找日志消息状态代码为零,只有1xx、2xx、4xx等。无论我在代码上尝试了什么,我都无法让函数返回4xx或5xx错误代码

如何在Azure Monitor Alert中设置以捕获失败的业务流程?有没有一种方法可以在抛出异常时强制执行非零状态代码

背景信息

正如下面的屏幕截图所示,Azure Monitor for the durable功能显示出故障,这正是我所期望的

但是,我不知道如何设置警报来检测此故障。在Application Insights中发现异常时,导致失败的响应代码为零

转到Azure Monitor Alerts,在设置新警报以检测此情况时,没有状态代码为零的警报条件(这很有意义,但对我没有帮助)

下面是Activity函数的一个shell,它故意抛出一个异常,以帮助我设置警报并知道它正在工作

[FunctionName("SearchProductIndexFunctionActivity")]
public static async Task Run(
    [ActivityTrigger]string input,
    ILogger logger,
    ExecutionContext context)
{
    logger.LogInformation("Started SearchProductIndexFunctionActivity...");

    throw new ArgumentException("Oops...");

    logger.LogInformation("Finished SearchProductIndexFunctionActivity successfully.");
}
下面是调用Activity函数的Orchestrator函数。如果未捕获并重试所有异常,Orchestrator函数将显示一个“成功”状态,这没有帮助。。。我想知道有什么失败了。但是,此异常导致的响应状态代码为零无助于设置警报。有没有关于如何解决这个问题的建议

[FunctionName("SearchOrchestration")]
public static async Task Run(
    [OrchestrationTrigger]DurableOrchestrationContext orchestrationContext,
    ExecutionContext context,
    ILogger logger)
{
    try
    {
        await orchestrationContext.CallActivityAsync(PART_INDEX_UPDATE_ACTIVITY_NAME, null);

        await orchestrationContext.CallActivityAsync(PRODUCT_INDEX_UPDATE_ACTIVITY_NAME, null);
    }
    catch (Exception ex)
    {
        logger.LogError(ex, $"Search index orchestration failed.");
        throw;
    }
}

由于您正在使用应用程序洞察力,因此可以考虑使用创建一个“强”>自定义日志搜索警报< /强>。 对于“资源”,您应该选择azure功能使用的应用程序洞察

对于“条件”,选择“自定义日志搜索”。然后在“搜索查询”文本框中,您可以编写查询。在您的情况下,错误应该出现在application insights的异常表中,因此查询看起来像是
异常|您的_query _for _error


如果您不熟悉ApplicationInsights中类似sql的查询,可以参考以下内容。您可以先在ApplicationInsights中编写查询,以确保它能够按预期工作。application insights中查询的屏幕截图:


谢谢你,伊万。我不知道自定义日志搜索警报。