你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用指标、警报和诊断监视 Azure 数字孪生

Azure 数字孪生与 Azure Monitor 集成,提供可用于监视 Azure 数字孪生资源的指标和诊断信息。 指标是默认启用的,可让你了解 Azure 订阅中的 Azure 数字孪生资源的状态。 警报可以在指标数据中出现某些状况时主动通知你。 你也可以收集服务实例的诊断日志,以监视该实例的性能、访问和其他数据

这些监视功能可帮助你评估 Azure 数字孪生服务及其关联资源的整体运行状况。 你可以使用它们来了解 Azure 数字孪生实例中发生的情况,并分析问题的根本原因,而无需联系 Azure 支持。

可以从 Azure 门户访问它们,它们分组在 Azure 数字孪生资源的“监视”标题下。

Azure 门户的屏幕截图,其中显示了“监视”选项。

指标和警报

若要大致了解如何查看 Azure 资源指标,请参阅 Azure Monitor 文档中的指标资源管理器入门。 若要大致了解如何为 Azure 指标配置警报,请参阅创建新的预警规则

此部分的其余内容描述了每个 Azure 数字孪生实例跟踪的指标,以及每个指标与实例整体状态之间的关系。

用于跟踪服务限制的指标

你可配置这些指标,在解决方案的某些方面快要达到已发布的服务限制时进行跟踪。

若要设置跟踪,请使用 Azure Monitor 中的警报功能。 你可为这些指标定义阈值,以便在指标达到其发布限制的某个百分比时接收警报。

指标 指标显示名称 单位 聚合类型 说明 维度
TwinCount 孪生体计数(预览) 计数 总计 Azure 数字孪生实例中的孪生体总数。 使用此指标来确定是否快要达到每个实例允许的最大孪生体数的服务限制
ModelCount 模型计数(预览) 计数 总计 Azure 数字孪生实例中的模型总数。 使用此指标来确定是否快要达到每个实例允许的最大模型数的服务限制

API 请求指标

与 API 请求相关的指标:

指标 指标显示名称 单位 聚合类型 说明 维度
ApiRequests API 请求 计数 总计 为数字孪生读取、写入、删除和查询操作发出的 API 请求数。 身份验证、
操作、
协议、
状态代码、
状态代码类、
状态文本
ApiRequestsFailureRate API 请求失败率 百分比 平均值 服务为实例收到的,针对数字孪生读取、写入、删除和查询操作显示内部错误 (500) 响应代码的 API 请求百分比。 身份验证、
操作、
协议、
状态代码、
状态代码类、
状态文本
ApiRequestsLatency API 请求延迟 毫秒 平均值 API 请求的响应时间。 此值指从 Azure 数字孪生收到请求到服务发送数字孪生读取、写入、删除和查询操作的结果(成功/失败)之间的时间。 身份验证、
操作、
协议

计费指标

与计费相关的指标:

指标 指标显示名称 单位 聚合类型 说明 维度
BillingApiOperations 计费 API 操作数 计数 总计 针对 Azure 数字孪生服务发出的所有 API 请求计数的计费指标。 Meter ID
BillingMessagesProcessed 已处理的计费消息 计数 总计 从 Azure 数字孪生发送到外部终结点的消息数的计费指标。

若要在计费时将其看作一条消息,一个有效负载不得大于 1 KB。 大于此限值的有效负载将按 1 KB 的增量计为附加消息(因此,1 KB 到 2 KB 之间的消息将计为 2 条消息,2 KB 到 3 KB 之间的消息将计为 3 条消息,依此类推)。
此限制也适用于响应;例如,在响应正文中返回 1.5 KB 内容的调用将作为 2 个操作进行计费。
Meter ID
BillingQueryUnits 计费查询单位 计数 总计 用于执行查询的查询单位数(服务资源使用情况的内部计算度量值)。 还有一个可用于度量查询单元的帮助程序 API:QueryChargeHelper 类 Meter ID

若要更详细地了解 Azure 数字孪生的计费方式,请参阅 Azure 数字孪生定价

入口指标

与数据入口相关的指标:

指标 指标显示名称 单位 聚合类型 说明 维度
IngressEvents 入口事件 计数 总计 传入 Azure 数字孪生的设备遥测事件数。 结果
IngressEventsFailureRate 入口事件失败率 百分比 平均值 服务对其返回内部错误 (500) 响应代码的传入设备遥测事件百分比。 结果
IngressEventsLatency 入口事件延迟 毫秒 平均值 从事件到达到可由 Azure 数字孪生传出之间的时间,传出时服务会发送结果(成功/失败)。 结果

批量操作指标(来自作业 API)

作业 API 中的批量操作相关的指标:

指标 指标显示名称 单位 聚合类型 说明 维度
ImportJobLatency 导入作业延迟 毫秒 平均值 完成导入作业所使用的总时间。 操作、
身份验证、
协议
ImportJobEntityCount 导入作业实体计数 Count 总计 导入作业处理的孪生、模型或关系数量。 操作、
结果
DeleteJobLatency 删除作业延迟 毫秒 平均值 删除作业完成所花费的总时间。 操作、
身份验证、
协议
DeleteJobEntityCount 删除作业实体计数 计数 总计 在删除作业中删除的模型、孪生体和/或关系的数量。 操作、
结果

路由指标

与路由相关的指标:

指标 指标显示名称 单位 聚合类型 说明 维度
MessagesRouted 路由的消息数 计数 总计 路由到终结点 Azure 服务(例如事件中心、服务总线或事件网格)的消息数。 终结点类型、
结果
RoutingFailureRate 路由失败率 百分比 平均值 在将事件从 Azure 数字孪生路由到终结点 Azure 服务(如事件中心、服务总线或事件网格)时导致出现错误的事件百分比。 终结点类型、
结果
RoutingLatency 路由延迟 毫秒 平均值 事件从 Azure 数字孪生路由到将其发布到终结点 Azure 服务(如事件中心、服务总线或事件网格)之间经过的时间。 终结点类型、
结果

指标维度

维度有助于标识有关指标的更多详细信息。 某些路由指标提供了每个终结点的信息。 下表列出了这些维度可能具有的值。

维度
身份验证 OAuth
操作(对于 API 请求) Microsoft.DigitalTwins/digitaltwins/delete、
Microsoft.DigitalTwins/digitaltwins/write、
Microsoft.DigitalTwins/digitaltwins/read、
Microsoft.DigitalTwins/eventroutes/read、
Microsoft.DigitalTwins/eventroutes/write、
Microsoft.DigitalTwins/eventroutes/delete、
Microsoft.DigitalTwins/models/read、
Microsoft.DigitalTwins/models/write、
Microsoft.DigitalTwins/models/delete、
Microsoft.DigitalTwins/query/action
终结点类型 事件网格、
事件中心、
服务总线
协议 HTTPS
结果 成功、
失败
状态代码 200、404、500 等等。
状态代码类 2xx、4xx、5xx 等等。
状态文本 “内部服务器错误”、“找不到”等等。

诊断日志

有关 Azure 诊断设置的一般信息(包括如何启用它们),请参阅 Azure Monitor 中的诊断设置。 若要了解如何使用 Log Analytics 来查询诊断日志,请参阅 Azure Monitor 中的 Log Analytics 概述

本部分的其余内容介绍 Azure 数字孪生可以收集的诊断日志类别及其架构。

日志类别

下面提供了有关 Azure 数字孪生收集的日志类别的更多详细信息。

日志类别 说明
ADTModelsOperation 记录与模型相关的所有 API 调用
ADTQueryOperation 记录与查询相关的所有 API 调用
ADTEventRoutesOperation 记录与事件路由相关的所有 API 调用,以及从 Azure 数字孪生到事件网格、事件中心和服务总线等终结点服务的出口事件
ADTDigitalTwinsOperation 记录与单个孪生相关的所有 API 调用

每个日志类别包括写入、读取、删除和动作操作。 这些类别按如下所示映射到 REST API 调用:

事件类型 REST API 操作
写入 PUT 和 PATCH
读取 GET
删除 DELETE
操作 POST

下面是在每个类别中记录的操作和相应 Azure 数字孪生 REST API 调用的完整列表。

注意

每个日志类别包含若干操作/REST API 调用。 在下表中,每个日志类别映射到其下面的所有操作/REST API 调用,直到列出下一个日志类别。

日志类别 操作 REST API 调用和其他事件
ADTModelsOperation Microsoft.DigitalTwins/models/write 数字孪生模型更新 API
Microsoft.DigitalTwins/models/read 数字孪生模型按 ID 获取 API 和列出 API
Microsoft.DigitalTwins/models/delete 数字孪生模型删除 API
Microsoft.DigitalTwins/models/action 数字孪生模型添加 API
ADTQueryOperation Microsoft.DigitalTwins/query/action 查询孪生 API
ADTEventRoutesOperation Microsoft.DigitalTwins/eventroutes/write 事件路由添加 API
Microsoft.DigitalTwins/eventroutes/read 事件路由按 ID 获取 API 和列出 API
Microsoft.DigitalTwins/eventroutes/delete 事件路由删除 API
Microsoft.DigitalTwins/eventroutes/action 尝试将事件发布到终结点服务时失败(不是 API 调用)
ADTDigitalTwinsOperation Microsoft.DigitalTwins/digitaltwins/write 数字孪生添加、添加关系、更新、更新组件
Microsoft.DigitalTwins/digitaltwins/read 数字孪生按 ID 获取、获取组件、按 ID 获取关系、列出传入关系、列出关系
Microsoft.DigitalTwins/digitaltwins/delete 数字孪生删除、删除关系
Microsoft.DigitalTwins/digitaltwins/action 数字孪生发送组件遥测数据、发送遥测数据

日志架构

每个日志类别都有一个架构,该架构定义如何报告该类别中的事件。 每个日志条目以文本形式存储,采用 JSON Blob 格式。 下面针对每种日志类型提供了日志中的字段和示例 JSON 正文。

ADTDigitalTwinsOperationADTModelsOperationADTQueryOperation 使用一致的 API 日志架构。 ADTEventRoutesOperation 扩展架构以包含属性中的 endpointName 字段。

API 日志架构

对于 ADTDigitalTwinsOperationADTModelsOperationADTQueryOperation,此日志架构是一致的。 同一架构还用于 ADTEventRoutesOperation,但 Microsoft.DigitalTwins/eventroutes/action 操作名称除外(有关该架构的详细信息,请参阅下一部分:出口日志架构)。

该架构包含与 Azure 数字孪生实例的 API 调用相关的信息。

下面是 API 日志的字段和属性说明。

字段名称 数据类型 描述
Time DateTime 此事件发生的日期和时间 (UTC)
ResourceId 字符串 发生该事件的资源的 Azure 资源管理器资源 ID
OperationName 字符串 发生该事件期间执行的操作类型
OperationVersion 字符串 发生该事件期间使用的 API 版本
Category 字符串 正在发出的资源的类型
ResultType 字符串 事件结果
ResultSignature 字符串 事件的 HTTP 状态代码
ResultDescription 字符串 有关事件的其他详细信息
DurationMs 字符串 执行事件所花费的时间,以毫秒为单位
CallerIpAddress 字符串 事件的掩码源 IP 地址
CorrelationId Guid 事件的唯一标识符
ApplicationId Guid 持有者授权中使用的应用程序 ID
Level int 事件的日志记录严重性
Location 字符串 发生该事件的区域
RequestUri Uri 发生该事件期间使用的终结点
TraceId 字符串 TraceId,作为 W3C 跟踪上下文的一部分。 用于唯一标识跨系统分布式跟踪的整个跟踪的 ID。
SpanId 字符串 SpanId,作为 W3C 跟踪上下文的一部分。 跟踪中此请求的 ID。
ParentId 字符串 ParentId,作为 W3C 跟踪上下文的一部分。 没有父 ID 的请求是跟踪的根。
TraceFlags 字符串 TraceFlags,作为 W3C 跟踪上下文的一部分。 控制采样、跟踪级别等跟踪标志。
TraceState 字符串 TraceState,作为 W3C 跟踪上下文的一部分。 跨越不同分布式跟踪系统的其他供应商特定跟踪标识信息。

下面是这些类型的日志的示例 JSON 正文。

ADTDigitalTwinsOperation
{
  "time": "2020-03-14T21:11:14.9918922Z",
  "resourceId": "/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.DIGITALTWINS/DIGITALTWINSINSTANCES/MYINSTANCENAME",
  "operationName": "Microsoft.DigitalTwins/digitaltwins/write",
  "operationVersion": "2020-10-31",
  "category": "DigitalTwinOperation",
  "resultType": "Success",
  "resultSignature": "200",
  "resultDescription": "",
  "durationMs": 8,
  "callerIpAddress": "13.68.244.*",
  "correlationId": "aaaa0000-bb11-2222-33cc-444444dddddd",
  "identity": {
    "claims": {
      "appId": "00001111-aaaa-2222-bbbb-3333cccc4444"
    }
  },
  "level": "4",
  "location": "southcentralus",
  "uri": "https://myinstancename.api.scus.digitaltwins.azure.net/digitaltwins/factory-58d81613-2e54-4faa-a930-d980e6e2a884?api-version=2020-10-31",
  "properties": {},
  "traceContext": {
    "traceId": "95ff77cfb300b04f80d83e64d13831e7",
    "spanId": "b630da57026dd046",
    "parentId": "9f0de6dadae85945",
    "traceFlags": "01",
    "tracestate": "k1=v1,k2=v2"
  }
}
ADTModelsOperation
{
  "time": "2020-10-29T21:12:24.2337302Z",
  "resourceId": "/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.DIGITALTWINS/DIGITALTWINSINSTANCES/MYINSTANCENAME",
  "operationName": "Microsoft.DigitalTwins/models/write",
  "operationVersion": "2020-10-31",
  "category": "ModelsOperation",
  "resultType": "Success",
  "resultSignature": "201",
  "resultDescription": "",
  "durationMs": "80",
  "callerIpAddress": "13.68.244.*",
  "correlationId": "bbbb1111-cc22-3333-44dd-555555eeeeee",
  "identity": {
    "claims": {
      "appId": "00001111-aaaa-2222-bbbb-3333cccc4444"
    }
  },
  "level": "4",
  "location": "southcentralus",
  "uri": "https://myinstancename.api.scus.digitaltwins.azure.net/Models?api-version=2020-10-31",
  "properties": {},
  "traceContext": {
    "traceId": "95ff77cfb300b04f80d83e64d13831e7",
    "spanId": "b630da57026dd046",
    "parentId": "9f0de6dadae85945",
    "traceFlags": "01",
    "tracestate": "k1=v1,k2=v2"
  }
}
ADTQueryOperation
{
  "time": "2020-12-04T21:11:44.1690031Z",
  "resourceId": "/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.DIGITALTWINS/DIGITALTWINSINSTANCES/MYINSTANCENAME",
  "operationName": "Microsoft.DigitalTwins/query/action",
  "operationVersion": "2020-10-31",
  "category": "QueryOperation",
  "resultType": "Success",
  "resultSignature": "200",
  "resultDescription": "",
  "durationMs": "314",
  "callerIpAddress": "13.68.244.*",
  "correlationId": "cccc2222-dd33-4444-55ee-666666ffffff",
  "identity": {
    "claims": {
      "appId": "00001111-aaaa-2222-bbbb-3333cccc4444"
    }
  },
  "level": "4",
  "location": "southcentralus",
  "uri": "https://myinstancename.api.scus.digitaltwins.azure.net/query?api-version=2020-10-31",
  "properties": {},
  "traceContext": {
    "traceId": "95ff77cfb300b04f80d83e64d13831e7",
    "spanId": "b630da57026dd046",
    "parentId": "9f0de6dadae85945",
    "traceFlags": "01",
    "tracestate": "k1=v1,k2=v2"
  }
}
ADTEventRoutesOperation

下面是一个非 Microsoft.DigitalTwins/eventroutes/action 类型的 ADTEventRoutesOperation 的 JSON 正文示例(有关该架构的详细信息,请参阅下一部分:出口日志架构)。

  {
    "time": "2020-10-30T22:18:38.0708705Z",
    "resourceId": "/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.DIGITALTWINS/DIGITALTWINSINSTANCES/MYINSTANCENAME",
    "operationName": "Microsoft.DigitalTwins/eventroutes/write",
    "operationVersion": "2020-10-31",
    "category": "EventRoutesOperation",
    "resultType": "Success",
    "resultSignature": "204",
    "resultDescription": "",
    "durationMs": 42,
    "callerIpAddress": "212.100.32.*",
    "correlationId": "dddd3333-ee44-5555-66ff-777777aaaaaa",
    "identity": {
      "claims": {
        "appId": "00001111-aaaa-2222-bbbb-3333cccc4444"
      }
    },
    "level": "4",
    "location": "southcentralus",
    "uri": "https://myinstancename.api.scus.digitaltwins.azure.net/EventRoutes/egressRouteForEventHub?api-version=2020-10-31",
    "properties": {},
    "traceContext": {
      "traceId": "95ff77cfb300b04f80d83e64d13831e7",
      "spanId": "b630da57026dd046",
      "parentId": "9f0de6dadae85945",
      "traceFlags": "01",
      "tracestate": "k1=v1,k2=v2"
    }
  },

出口日志架构

以下示例是特定于 Microsoft.DigitalTwins/eventroutes/action 操作名称的 ADTEventRoutesOperation 日志的架构。 这些日志包含有关连接到 Azure 数字孪生实例的出口终结点的异常和 API 操作的详细信息。

字段名称 数据类型 描述
Time DateTime 此事件发生的日期和时间 (UTC)
ResourceId 字符串 发生该事件的资源的 Azure 资源管理器资源 ID
OperationName 字符串 发生该事件期间执行的操作类型
Category 字符串 正在发出的资源的类型
ResultDescription 字符串 有关事件的其他详细信息
CorrelationId Guid 客户提供的事件唯一标识符
ApplicationId Guid 持有者授权中使用的应用程序 ID
Level int 事件的日志记录严重性
Location 字符串 发生该事件的区域
TraceId 字符串 TraceId,作为 W3C 跟踪上下文的一部分。 用于唯一标识跨系统分布式跟踪的整个跟踪的 ID。
SpanId 字符串 SpanId,作为 W3C 跟踪上下文的一部分。 跟踪中此请求的 ID。
ParentId 字符串 ParentId,作为 W3C 跟踪上下文的一部分。 没有父 ID 的请求是跟踪的根。
TraceFlags 字符串 TraceFlags,作为 W3C 跟踪上下文的一部分。 控制采样、跟踪级别等跟踪标志。
TraceState 字符串 TraceState,作为 W3C 跟踪上下文的一部分。 跨越不同分布式跟踪系统的其他供应商特定跟踪标识信息。
EndpointName 字符串 在 Azure 数字孪生中创建的出口终结点的名称

下面是 Microsoft.DigitalTwins/eventroutes/action 类型的 ADTEventRoutesOperation 的 JSON 正文示例。

{
  "time": "2020-11-05T22:18:38.0708705Z",
  "resourceId": "/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.DIGITALTWINS/DIGITALTWINSINSTANCES/MYINSTANCENAME",
  "operationName": "Microsoft.DigitalTwins/eventroutes/action",
  "operationVersion": "",
  "category": "EventRoutesOperation",
  "resultType": "",
  "resultSignature": "",
  "resultDescription": "Unable to send EventHub message to [myPath] for event Id [f6f45831-55d0-408b-8366-058e81ca6089].",
  "durationMs": -1,
  "callerIpAddress": "",
  "correlationId": "dddd3333-ee44-5555-66ff-777777aaaaaa",
  "identity": {
    "claims": {
      "appId": "00001111-aaaa-2222-bbbb-3333cccc4444"
    }
  },
  "level": "4",
  "location": "southcentralus",
  "uri": "",
  "properties": {
    "endpointName": "myEventHub"
  },
  "traceContext": {
    "traceId": "95ff77cfb300b04f80d83e64d13831e7",
    "spanId": "b630da57026dd046",
    "parentId": "9f0de6dadae85945",
    "traceFlags": "01",
    "tracestate": "k1=v1,k2=v2"
  }
},

后续步骤

Azure Monitor 文档中阅读有关 Azure Monitor 及其功能的详细信息。