【发布时间】:2021-08-15 01:32:46
【问题描述】:
如何确定 EventGrid 消息传递失败的原因?
目前尝试过:
- 在 EventGrid 系统主题上设置
Diagnostic Setting - 打开 Log Analytics 并使用以下命令查询
AEGDeliveryFailureLogs表
//==================================================//
// Assign variables
//==================================================//
let varStart = ago(5h);
let varEnd = now();
//==================================================//
// Query table
//==================================================//
AegDeliveryFailureLogs
| where TimeGenerated between (varStart .. varEnd)
| project split(Message, ',')
- 在我的案例中产生了 1700 多条记录
- 示例结果:
[
"outcome=Aborted",
" latencyInMs=180004",
" id=<redacted>",
" outputEventSystemId=<redacted>",
" state=Filtered",
" deliveryTime=5/26/2021 3:22:01 PM",
" deliveryCount=3",
" probationCount=1",
" deliverySchema=EventGridEvent",
" eventSubscriptionDeliverySchema=EventGridEvent",
" outputEventFields=InputEvent| EventSubscriptionId| DeliveryTime| DeliveryCount| State| Id| ProbationCount| LastDeliveryOutcome| DeliverySchema| LastDeliveryAttemptTime| SystemId| UseMappedResourceArmIdForBilling",
" outputEventFieldCount=12",
" requestExpiration=5/26/2021 3:23:01 PM",
" delivered=False id=<redacted>",
" inputEventSystemId=<redacted> publishTime=5/26/2021 3:14:42 PM",
" eventTime=5/26/2021 3:14:42 PM",
" eventType=Microsoft.Storage.BlobCreated",
" deliveryTime=1/1/0001 12:00:00 AM",
" filteringState=FilteringPending",
" inputSchema=EventGridEvent",
" publisher=MICROSOFT-STORAGE-STORAGEACCOUNTS.<redacted>.EVENTGRID.AZURE.NET",
" size=1162",
" subject=/blobServices/default/containers/<redacted>/blobs/2021-05-25/<redacted>/<redacted>.csv",
" inputEventFields=Id| PublishTime| SerializedBody| EventType| Topic| Subject| FilteringHashCode| SystemId| Publisher| FilteringTopic| TopicCategory| DataVersion| MetadataVersion| InputSchema| EventTime| FilteringPolicy",
" inputEventFieldCount=16",
" type=AzureFunction",
" subType=NotApplicable",
" supportsBatching=False",
" aadIntegration=False",
" useSystemIdentity=False",
"armId=/subscriptions/<redacted>/resourceGroups/<redacted>/providers/Microsoft.Web/sites/<redacted>/functions/<redacted>",
" deliveryResponse=",
" httpStatusCode=InternalServerError",
" errorType=UnexpectedError",
" errorMessage=An unexpected error has occurred. Please report the x-ms-request-id header value to our forums for assistance or raise a support ticket.",
" errorMessage=The operation timed out after: 00:03:00"
]
有一个明确的outcome=Aborted 和一个httpStatusCode/errorType/errorMessage 表明存在问题,但这就是调查停止的地方。
是什么导致了这些 EventGrid 消息问题,我该如何确定原因?
【问题讨论】:
-
看起来,AEG 在 3 分钟内没有收到来自投递端点(azure 函数)的消息投递状态。
-
您能否描述一下 1.) 您是如何从上述消息中看出这一点的,以及 2.) 在正常工作的 Azure 函数中,由于什么原因可能会在 5 小时内发生 1700 倍?
-
哦,我已阅读所有文档。
InternalServerError的httpStatusCode不在该文档中。 -
您的示例显示,事件消息已尝试传递 3 次,并且根据重试策略,传递过程已中止。在启用死信的情况下,消息将存储(5 分钟后)在死信存储中,并附有传递失败原因的详细信息。您的订阅者在 azure function 高级计划中运行,所以看看它是如何横向扩展的等,另一种选择是将事件消息传递到队列事件处理程序资源,然后通过 azure 函数将其拉出触发。
标签: azure azure-log-analytics kql azure-eventgrid