为事件网格资源启用诊断日志

本文提供有关为事件网格资源启用诊断设置的分步说明。 诊断设置会捕捉发布和交付失败的信息,以便你诊断和排查事件网格资源的问题。 下表展示了不同类型的事件网格资源的设置:自定义主题、系统主题和域。

诊断设置 事件网格主题 事件网格系统主题 事件领域 事件网格合作伙伴命名空间
DeliveryFailures 是 是 是 否
发布失败 是 否 是 是
DataPlaneRequests 是 否 是 是

重要

有关传送失败、发布失败和数据平面请求的架构,请参阅诊断日志。

先决条件

  • 预配的事件网格资源
  • 用于捕获诊断日志的预配目标:
    • Log Analytics 工作区
    • 存储帐户
    • 事件中心
    • 合作伙伴解决方案

为事件网格主题和域启用诊断日志

注意

以下过程提供了有关如何为主题启用诊断日志的分步说明。 启用域诊断日志的步骤类似。 在步骤 2 中,转到 Azure 门户中的事件网格域。

  1. 登录 Azure 门户。

  2. 导航到要为其启用诊断日志设置的事件网格主题。

    1. 在顶部搜索栏中,搜索“事件网格主题”。

      屏幕截图显示了 Azure 门户,以及搜索框中的事件网格主题。

    2. 从列表中选择要为其配置诊断设置的主题。

  3. 在左侧菜单中的“监视”下,选择“诊断设置”。

  4. 在“诊断设置”页上,选择“添加诊断设置”。

    显示自定义主题诊断设置页面的截图。

  5. 输入诊断设置的名称。

  6. 在“Logs”部分中选择“allLogs”选项。

    屏幕截图显示了“诊断设置”页,其中选择了“所有日志”。

  7. 启用一个或多个日志的捕获目的地,然后通过选择之前创建的捕获资源来配置它们。

    • 如果选择“发送到 Log Analytics”,请选择 Log Analytics 工作区。

      屏幕截图显示了“诊断设置”页,其中选择了“发送到 Log Analytics”。

    • 如果选择“存档到存储帐户”,请选择“存储帐户 - 配置”,然后选择你的 Azure 订阅中的存储帐户。

      屏幕截图显示“诊断设置”页面,其中已选中“存档到 Azure 存储帐户”,并已选择一个存储帐户。

    • 如果选择“流式传输到事件中心”,请选择“事件中心 - 配置”,然后选择事件中心命名空间、事件中心和访问策略。

      显示“诊断设置”页面的屏幕截图,其中已选中“流式传输到事件中心”。

  8. 选择“保存”。 然后,在右上角选择 X 键关闭页面。

  9. 回到 诊断设置 页面,确认你在 诊断设置 表中看到了一个新条目。

    这张截图显示诊断设置页面,诊断设置表中高亮了一个新条目。

你还可以启用该主题的所有指标收集。

为事件网格系统主题启用诊断日志

  1. 登录 Azure 门户。

  2. 进入你想启用诊断日志设置的系统主题。

    1. 在顶部搜索栏中,搜索“事件网格系统主题”。

      截图显示了搜索框中带有事件网格系统主题的 Azure 门户。

    2. 选择你想配置诊断设置的 系统主题 。

      显示事件网格系统主题列表的截图。

  3. 在左侧菜单中的“监视”下选择“诊断设置”,然后选择“添加诊断设置”。

    这是一张显示系统主题诊断设置页面的截图,带有添加诊断设置按钮。

  4. 输入诊断设置的名称。

  5. 在“Logs”部分中选择“allLogs”选项。

    显示系统主题的“诊断设置”页面且已选择“所有日志”的屏幕截图。

  6. 启用一个或多个日志的捕获目的地,然后通过选择之前创建的捕获资源来配置它们。

    • 如果选择“发送到 Log Analytics”,请选择 Log Analytics 工作区。

      显示系统主题的诊断设置页面且已选中“发送到 Log Analytics”的屏幕截图。

    • 如果选择“存档到存储帐户”,请选择“存储帐户 - 配置”,然后选择你的 Azure 订阅中的存储帐户。

      显示系统主题的“诊断设置”页面的屏幕截图,其中已选中“存档到存储帐户”。

    • 如果选择“流式传输到事件中心”,请选择“事件中心 - 配置”,然后选择事件中心命名空间、事件中心和访问策略。

      显示系统主题的诊断设置页面的屏幕截图,其中已选择“流式传输到事件中心”。

  7. 选择“保存”。 然后,在右上角选择 X 键关闭页面。

  8. 回到 诊断设置 页面,确认你在 诊断设置 表中看到了一个新条目。

    显示系统主题的“诊断设置”页面且表格中新增了一个条目的屏幕截图。

你还可以为系统主题启用所有指标的收集。

截图显示系统主题的诊断设置页面,所有指标都已选中。

查看 Azure 存储中的诊断日志

  1. 当你启用存储账户作为捕获目的地时,事件网格会开始发送诊断日志。 你会在存储帐户中看到名为 insights-logs-deliveryfailures 和 insights-logs-publishfailures 的新容器。

    截图显示了用于诊断日志的存储账户容器。

  2. 当你在其中一个容器中导航时,会看到一个JSON格式的blob。 该文件包含传递失败或发布失败的日志条目。 导航路径代表事件网格主题的 ResourceId 以及事件网格发出日志条目时的时间戳(分钟级别)。 你可以下载的blob/JSON文件遵循下一节描述的模式。

    截图显示存储账户里有一个JSON blob文件。

  3. 你会在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 架构的详细信息,请参阅诊断日志。

后续步骤

有关主题或域的诊断日志的日志架构和其他概念性信息,请参阅诊断日志。