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

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

诊断设置 事件网格主题 事件网格系统主题 事件领域 事件网格合作伙伴命名空间
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-deliveryfailuresinsights-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 架构的详细信息,请参阅诊断日志

后续步骤

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