我试图Non-Deterministic workflow detected: TaskScheduledEvent: 0 TaskScheduled ...在我们的持久功能项目中追踪一些偶然的错误。这种情况很少见(10,000 次左右的情况下为 3 次)。
将协调器代码与此处记录的约束进行比较时,我们使用了一种我不清楚的模式。为了使编排器代码更干净/可读,我们使用一些私有的异步辅助函数来进行实际CallActivityWithRetryAsync调用,有时包装在异常处理程序中以进行日志记录,然后await在此辅助函数上使用主编排器函数。
类似这个简化示例的东西:
[FunctionName(Name)]
public static async Task RunPipelineAsync(
[OrchestrationTrigger]
DurableOrchestrationContextBase context,
ILogger log)
{
// other steps
await WriteStatusAsync(context, "Started", log);
// other steps
await WriteStatusAsync(context, "Completed", log);
}
private static async Task WriteStatusAsync(
DurableOrchestrationContextBase context,
string status,
ILogger log
)
{
log.LogInformationOnce(context, "log message...");
try
{
var request = new WriteAppDocumentStatusRequest
{
//...
};
await context.CallActivityWithRetryAsync(
"WriteAppStatus",
RetryPolicy,
request
);
} …Run Code Online (Sandbox Code Playgroud) 我希望在某个函数应用程序失败时触发 Azure 警报。我将其设置为 [函数名称] 失败指标上的 GTE 1 阈值,认为这将产生预期结果。但是,当它每天运行时,我会收到警报已触发的通知,但我在 Application Insights 中找不到任何指示失败的内容,并且它似乎正在成功运行并完成。
以下是触发的警报摘要:
以下是来自门户的调用监控,显示过去几天相同的功能,没有出现任何故障:
以下是该时间段内的应用程序洞察搜索,显示没有异常以及所有成功的依赖项操作:
问题是 - 什么可能导致 Azure Function Failed 指标在 Application Insights 中注册非零值而没有任何遥测?
更新 - 这是警报配置
以及具体的条件设置——
更宽时间范围的故障刀片:
Blob 404 上存在一些依赖项失败,但我认为这是来自另一个函数,该函数显式检查路径中是否存在 Blob,以了解要从外部源下载哪些文件。此外,时间戳不属于采样周期。
没有例外:
azure azure-application-insights azure-functions azure-alerts