本文提供有关为事件网格资源启用诊断设置的分步说明。 诊断设置会捕捉发布和交付失败的信息,以便你诊断和排查事件网格资源的问题。 下表展示了不同类型的事件网格资源的设置:自定义主题、系统主题和域。
| 诊断设置 | 事件网格主题 | 事件网格系统主题 | 事件领域 | 事件网格合作伙伴命名空间 |
|---|---|---|---|---|
| DeliveryFailures | 是 | 是 | 是 | 否 |
| 发布失败 | 是 | 否 | 是 | 是 |
| DataPlaneRequests | 是 | 否 | 是 | 是 |
重要
有关传送失败、发布失败和数据平面请求的架构,请参阅诊断日志。
先决条件
- 预配的事件网格资源
- 用于捕获诊断日志的预配目标:
- Log Analytics 工作区
- 存储帐户
- 事件中心
- 合作伙伴解决方案
为事件网格主题和域启用诊断日志
注意
以下过程提供了有关如何为主题启用诊断日志的分步说明。 启用域诊断日志的步骤类似。 在步骤 2 中,转到 Azure 门户中的事件网格域。
登录 Azure 门户。
导航到要为其启用诊断日志设置的事件网格主题。
在顶部搜索栏中,搜索“事件网格主题”。
从列表中选择要为其配置诊断设置的主题。
在左侧菜单中的“监视”下,选择“诊断设置”。
在“诊断设置”页上,选择“添加诊断设置”。
输入诊断设置的名称。
在“Logs”部分中选择“allLogs”选项。
启用一个或多个日志的捕获目的地,然后通过选择之前创建的捕获资源来配置它们。
如果选择“发送到 Log Analytics”,请选择 Log Analytics 工作区。
如果选择“存档到存储帐户”,请选择“存储帐户 - 配置”,然后选择你的 Azure 订阅中的存储帐户。
如果选择“流式传输到事件中心”,请选择“事件中心 - 配置”,然后选择事件中心命名空间、事件中心和访问策略。
选择“保存”。 然后,在右上角选择 X 键关闭页面。
回到 诊断设置 页面,确认你在 诊断设置 表中看到了一个新条目。
你还可以启用该主题的所有指标收集。
为事件网格系统主题启用诊断日志
登录 Azure 门户。
进入你想启用诊断日志设置的系统主题。
在顶部搜索栏中,搜索“事件网格系统主题”。
选择你想配置诊断设置的 系统主题 。
在左侧菜单中的“监视”下选择“诊断设置”,然后选择“添加诊断设置”。
输入诊断设置的名称。
在“Logs”部分中选择“allLogs”选项。
启用一个或多个日志的捕获目的地,然后通过选择之前创建的捕获资源来配置它们。
如果选择“发送到 Log Analytics”,请选择 Log Analytics 工作区。
如果选择“存档到存储帐户”,请选择“存储帐户 - 配置”,然后选择你的 Azure 订阅中的存储帐户。
如果选择“流式传输到事件中心”,请选择“事件中心 - 配置”,然后选择事件中心命名空间、事件中心和访问策略。
选择“保存”。 然后,在右上角选择 X 键关闭页面。
回到 诊断设置 页面,确认你在 诊断设置 表中看到了一个新条目。
你还可以为系统主题启用所有指标的收集。
查看 Azure 存储中的诊断日志
当你启用存储账户作为捕获目的地时,事件网格会开始发送诊断日志。 你会在存储帐户中看到名为 insights-logs-deliveryfailures 和 insights-logs-publishfailures 的新容器。
当你在其中一个容器中导航时,会看到一个JSON格式的blob。 该文件包含传递失败或发布失败的日志条目。 导航路径代表事件网格主题的 ResourceId 以及事件网格发出日志条目时的时间戳(分钟级别)。 你可以下载的blob/JSON文件遵循下一节描述的模式。
你会在JSON文件中看到类似以下示例的内容:
{ "time": "2019-11-01T00:17:13.4389048Z", "resourceId": "/SUBSCRIPTIONS/SAMPLE-SUBSCRIPTION-ID /RESOURCEGROUPS/SAMPLE-RESOURCEGROUP-NAME/PROVIDERS/MICROSOFT.EVENTGRID/TOPICS/SAMPLE-TOPIC-NAME ", "eventSubscriptionName": "SAMPLEDESTINATION", "category": "DeliveryFailures", "operationName": "Deliver", "message": "Message:outcome=NotFound, latencyInMs=2635, id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx, systemId=xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, state=FilteredFailingDelivery, deliveryTime=11/1/2019 12:17:10 AM, deliveryCount=0, probationCount=0, deliverySchema=EventGridEvent, eventSubscriptionDeliverySchema=EventGridEvent, fields=InputEvent, EventSubscriptionId, DeliveryTime, State, Id, DeliverySchema, LastDeliveryAttemptTime, SystemId, fieldCount=, requestExpiration=1/1/0001 12:00:00 AM, delivered=False publishTime=11/1/2019 12:17:10 AM, eventTime=11/1/2019 12:17:09 AM, eventType=Type, deliveryTime=11/1/2019 12:17:10 AM, filteringState=FilteredWithRpc, inputSchema=EventGridEvent, publisher=SAMPLE-TOPIC-NAME.EASTUS-1.EVENTGRID.AZURE.NET, size=363, fields=Id, PublishTime, SerializedBody, EventType, Topic, Subject, FilteringHashCode, SystemId, Publisher, FilteringTopic, TopicCategory, DataVersion, MetadataVersion, InputSchema, EventTime, fieldCount=15, url=sb://sample-namespace.servicebus.chinacloudapi.cn/, deliveryResponse=NotFound: The messaging entity 'sb://sample-namespace.servicebus.chinacloudapi.cn/sample-eventhub' could not be found. TrackingId:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_G14, SystemTracker:sample-namespace.servicebus.chinacloudapi.cn:sample-eventhub, Timestamp:2019-11-01T00:17:13, referenceId: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_G14:" }
使用 Azure 资源管理器 模板
下面是一个示例 Azure 资源管理器模板,用于为事件网格主题启用诊断设置。 当你部署这个示例模板时,它会生成以下资源:
- 事件网格主题
- Log Analytics 工作区
然后,它会针对该主题创建诊断设置,以将诊断信息发送到 Log Analytics 工作区。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"topic_name": {
"defaultValue": "spegrid0917topic",
"type": "String"
},
"log_analytics_workspace_name": {
"defaultValue": "splogaw0625",
"type": "String"
},
"location": {
"defaultValue": "chinaeast2",
"type": "String"
},
"sku": {
"defaultValue": "Free",
"type": "String"
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.EventGrid/topics",
"apiVersion": "2020-10-15-preview",
"name": "[parameters('topic_name')]",
"location": "[parameters('location')]",
"sku": {
"name": "Basic"
},
"kind": "Azure",
"identity": {
"type": "None"
},
"properties": {
"inputSchema": "EventGridSchema",
"publicNetworkAccess": "Enabled"
}
},
{
"apiVersion": "2017-03-15-preview",
"name": "[parameters('log_analytics_workspace_name')]",
"location": "[parameters('location')]",
"type": "Microsoft.OperationalInsights/workspaces",
"properties": {
"sku": {
"name": "[parameters('sku')]"
}
}
},
{
"type": "Microsoft.EventGrid/topics/providers/diagnosticSettings",
"apiVersion": "2017-05-01-preview",
"name": "[concat(parameters('topic_name'), '/', 'Microsoft.Insights/', parameters('log_analytics_workspace_name'))]",
"location": "[parameters('location')]",
"dependsOn": [
"[resourceId('Microsoft.EventGrid/topics', parameters('topic_name'))]",
"[resourceId('Microsoft.OperationalInsights/workspaces', parameters('log_analytics_workspace_name'))]"
],
"properties": {
"workspaceId": "[resourceId('Microsoft.OperationalInsights/workspaces', parameters('log_analytics_workspace_name'))]",
"metrics": [
{
"category": "AllMetrics",
"enabled": true
}
],
"logs": [
{
"category": "DeliveryFailures",
"enabled": true
},
{
"category": "PublishFailures",
"enabled": true
}
]
}
}
]
}
为审计跟踪启用诊断日志
事件网格可以发布数据平面操作的审计跟踪。 若要启用此功能,请在“类别组”部分选择“审核”,或在“类别”部分中选择“DataPlaneRequests”。
利用审计追踪确保数据访问仅允许用于授权目的。 它收集有关安全控制的信息,如资源名称、操作类型、网络访问、级别和区域。 有关如何启用诊断设置的更多信息,请参见 “为事件网格主题和域启用诊断日志”。
重要
有关 DataPlaneRequests 架构的详细信息,请参阅诊断日志。
后续步骤
有关主题或域的诊断日志的日志架构和其他概念性信息,请参阅诊断日志。