当持久性业务流程链中的活动功能发生未知异常时,我想通过电子邮件警报得到通知。问题在于,当“活动功能”中引发异常时,Application Insights中记录的错误显示状态代码为零。在Azure警报中,没有警报配置会查找日志消息状态代码为零,仅1xx,2xx,4xx等。无论我在代码上尝试了什么,我都无法获得返回a的函数。 5xx错误代码中的4xx。
如何在Azure Monitor Alert中进行设置以捕获失败的业务流程?引发异常时,有没有办法强制非零状态代码?
背景信息
如以下屏幕快照所示,用于持久功能的Azure Monitor显示失败,这是我所期望的...
但是,我无法弄清楚如何设置警报来检测此故障。在Application Insights中找到异常,导致失败的响应代码为零...
转到Azure Monitor Alerts,在设置新警报以检测此状况时,没有状态码为零的警报状况(这是有道理的,但对我没有帮助)。 ..
这是Activity Function的外壳,有意引发异常以帮助我设置警报并知道其正在运行...
[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.");
}
这是调用活动功能的协调器功能。如果未捕获并重新抛出所有异常,协调器功能将显示“成功”状态,这无济于事……我想知道某些失败。但是,此异常导致的响应状态代码零不会帮助设置警报。有关如何解决此问题的任何建议?
[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;
}
}