你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
监视 Azure 服务总线数据参考
有关收集和分析 Azure 服务总线监视数据的详细信息,请参阅监视 Azure 服务总线。
注意
Azure Monitor 不会将维度包括在在发送到目标(如 Azure 存储、Azure 事件中心、Log Analytics 等)的导出指标数据中。
指标
本部分列出了为 Azure 服务总线自动收集的所有平台指标。 这些指标的资源提供程序是 Microsoft.ServiceBus/namespaces。
请求指标
计算数据量和管理操作请求数。
标准名称 | 可通过诊断设置导出 | 计价单位 | 聚合类型 | 说明 | 维度 |
---|---|---|---|---|---|
传入请求数 | 是 | 计数 | 总计 | 在指定的期间内向服务总线服务发出的请求数。 | EntityName |
成功的请求数 | 否 | 计数 | 总计 | 在指定的期间内向服务总线服务发出的成功请求数。 | 实体名称 OperationResult |
服务器错误数 | 否 | 计数 | 总计 | 由于服务总线服务发生错误,在指定期间内未处理的请求数。 | 实体名称 OperationResult |
用户错误 | 否 | 计数 | 总计 | 由于存在用户错误,在指定期间内未处理的请求数。 | 实体名称 |
限制的请求数 | 否 | 计数 | 总计 | 由于使用量超标,而被限制的请求数。 MessagingErrorSubCode 维度具有以下可能的值:
|
实体名称 MessagingErrorSubCode |
挂起的检查点操作计数 | 否 | count | 平均值 | 命名空间上挂起的检查点操作数目。 当挂起的检查点计数超过 (500,000 + (500,000 * 消息传送单元)) 操作数目限制时,服务开始实施限制。 此指标仅适用于使用高级层的命名空间。 | MessagingErrorSubCode |
服务器发送延迟 | 否 | 毫秒 | 平均值 | 服务总线服务完成请求所花的时间。 | 实体名称 |
下面两种类型的错误被归类为用户错误:
- 客户端错误(在 HTTP 中为 400 错误)。
- 在处理消息时发生的错误,如 MessageLockLostException。
消息指标
标准名称 | 可通过诊断设置导出 | 计价单位 | 聚合类型 | 说明 | 维度 |
---|---|---|---|---|---|
传入消息数 | 是 | 计数 | 总计 | 在指定的期间内发送到服务总线的事件或消息数。 对于基本层和标准层,此指标中包含传入的自动转发消息。 对于高级层,此指标不包含它们。 | 实体名称 |
传出消息数 | 是 | 计数 | 总计 | 在指定的期间内从服务总线收到的事件或消息数。 此指标中不包含传出的自动转发消息。 | 实体名称 |
消息 | 否 | 计数 | 平均值 | 队列/主题中的消息计数。 此指标包括处于所有不同状态(如活动、死信、计划等)的消息。 | 实体名称 |
活动消息 | 否 | 计数 | 平均值 | 队列/主题中的活动消息的计数。 活动消息是队列或订阅中处于活动状态且已准备发送的消息。 消息可供接收。 | 实体名称 |
死信消息 | 否 | 计数 | 平均值 | 队列/主题中的死信消息计数。 | 实体名称 |
计划的消息 | 否 | 计数 | 平均值 | 队列/主题中的计划消息计数。 | 实体名称 |
完成的消息数 | 是 | 计数 | 总计 | 在指定时段内完成的消息数。 | 实体名称 |
已放弃的消息数 | 是 | 计数 | 总计 | 在指定时段内放弃的消息数。 | 实体名称 |
大小 | 否 | 字节 | 平均值 | 实体(队列或主题)的大小,以字节为单位。 | 实体名称 |
重要
消息的值,活动、死信、计划、已完成和已放弃的消息的值都是时间点值。 在该时间点之后立即使用的传入消息可能不会反映在这些指标中。
注意
当客户端尝试获取有关队列或主题的信息时,服务总线服务会返回一些静态信息,例如名称、上次更新时间、创建时间、是否需要会话等,以及一些动态信息(如消息计数)。 如果请求受到限制,则该服务将返回静态信息和空动态信息。 这就是在命名空间受到限制时消息计数显示为 0 的原因。 此行为是设计使然。
连接指标
标准名称 | 可通过诊断设置导出 | 计价单位 | 聚合类型 | 说明 | 维度 |
---|---|---|---|---|---|
活动连接数 | 否 | 计数 | 总计 | 命名空间上及其中实体上的活动连接数。 此指标的值为时间点值。 在该时间点之后立即处于活动状态的连接可能不会反映在这些指标中。 | |
打开的连接数 | 否 | 计数 | 平均值 | 打开的连接数。 此指标的值是一个聚合,包括在聚合时间窗口中打开的所有连接。 | 实体名称 |
关闭的连接数 | 否 | 计数 | 平均值 | 关闭的连接数。 此指标的值是一个聚合,包括在聚合时间窗口中打开的所有连接。 | 实体名称 |
资源使用情况指标
注意
以下指标仅适用于高级层。
用于监视高级层命名空间中是否存在中断的重要指标包括:每个命名空间的 CPU 使用率和每个命名空间的内存大小。 使用 Azure Monitor 为这些指标设置警报。
你可以监视的另一个指标是:限制的请求数。 不过,只要命名空间保持在其内存、CPU 和中转连接限制内,就不会出现问题。 有关详细信息,请参阅 Azure 服务总线高级层中的限制
标准名称 | 可通过诊断设置导出 | 计价单位 | 聚合类型 | 说明 | 维度 |
---|---|---|---|---|---|
每个命名空间的 CPU 使用率 | 否 | CPU | 百分比 | 命名空间的 CPU 使用百分比。 | 副本 |
每个命名空间的内存使用量 | 否 | 内存用量 | 百分比 | 命名空间的内存使用百分比。 | 副本 |
错误指标
标准名称 | 可通过诊断设置导出 | 计价单位 | 聚合类型 | 说明 | 维度 |
---|---|---|---|---|---|
服务器错误数 | 否 | 计数 | 总计 | 由于服务总线服务发生错误,在指定期间内未处理的请求数。 | 实体名称 操作结果 |
用户错误数 | 否 | 计数 | 总计 | 由于存在用户错误,在指定期间内未处理的请求数。 | 实体名称 操作结果 |
指标维度
Azure 总线服务支持对 Azure Monitor 中的指标使用以下维度。 为指标添加维度是可选的。 如果不添加维度,则指标是在命名空间级别指定的。
维度名称 | 说明 |
---|---|
实体名称 | 总线服务支持命名空间下的消息实体。 使用“传入请求”指标时,除了所有队列和主题外,“实体名称”维度还将具有“-NamespaceOnlyMetric-”值。 这表示在命名空间级别发出的请求。 示例包括列出命名空间下所有队列/主题的请求,或对身份验证或授权失败的实体的请求。 |
资源日志
本节列出了可为 Azure 服务总线收集的资源日志类型。
- 操作日志
- 虚拟网络和 IP 筛选日志
- 运行时审核日志
Azure 服务总线现在能够将日志调度到两个目标表之一 - Azure 诊断表或 Log Analytics 中特定于资源的表。 可以使用 Azure 门户上提供的切换按钮来选择目标表。
操作日志
运行日志条目包括下表列出的元素:
名称 | 描述 | 在 AzureDiagnostics 中受支持 | 在 AZMSOperationalLogs(特定于资源的表)中受支持 |
---|---|---|---|
ActivityId |
内部 ID,用于标识指定的活动 | 是 | 是 |
EventName |
操作名称 | 是 | 是 |
ResourceId |
Azure Resource Manager 资源 ID | 是 | 是 |
SubscriptionId |
订阅 ID | 是 | 是 |
EventtimeString |
操作时间 | 是 | 否 |
TimeGenerated [UTC] |
执行操作的时间 (UTC) | 否 | 是 |
EventProperties |
操作属性 | 是 | 是 |
Status |
操作状态 | 是 | 是 |
Caller |
操作的调用方(Azure 门户或管理客户端) | 是 | 是 |
Provider |
发出日志的服务名称,例如 ServiceBus | 否 | 是 |
Type |
发出的日志类型 | 否 | 是 |
Category |
日志类别 | 是 | 否 |
下面是运行日志 JSON 字符串的示例:
AzureDiagnostics:
{
"ActivityId": "0000000000-0000-0000-0000-00000000000000",
"EventName": "Create Queue",
"resourceId": "/SUBSCRIPTIONS/<AZURE SUBSCRPTION ID>/RESOURCEGROUPS/<RESOURCE GROUP NAME>/PROVIDERS/MICROSOFT.SERVICEBUS/NAMESPACES/<SERVICE BUS NAMESPACE NAME>",
"SubscriptionId": "0000000000-0000-0000-0000-00000000000000",
"EventTimeString": "9/28/2016 8:40:06 PM +00:00",
"EventProperties": "{\"SubscriptionId\":\"0000000000-0000-0000-0000-00000000000000\",\"Namespace\":\"mynamespace\",\"Via\":\"https://mynamespace.servicebus.windows.net/f8096791adb448579ee83d30e006a13e/?api-version=2016-07\",\"TrackingId\":\"5ee74c9e-72b5-4e98-97c4-08a62e56e221_G1\"}",
"Status": "Succeeded",
"Caller": "ServiceBus Client",
"category": "OperationalLogs"
}
特定于资源的表条目:
{
"ActivityId": "0000000000-0000-0000-0000-00000000000000",
"EventName": "Retrieve Queue",
"resourceId": "/SUBSCRIPTIONS/<AZURE SUBSCRPTION ID>/RESOURCEGROUPS/<RESOURCE GROUP NAME>/PROVIDERS/MICROSOFT.SERVICEBUS/NAMESPACES/<SERVICE BUS NAMESPACE NAME>",
"SubscriptionId": "0000000000-0000-0000-0000-00000000000000",
"TimeGenerated(UTC)": "9/28/2023 8:40:06 PM +00:00",
"EventProperties": "{\"SubscriptionId\":\"0000000000-0000-0000-0000-00000000000000\",\"Namespace\":\"mynamespace\",\"Via\":\"https://mynamespace.servicebus.windows.net/f8096791adb448579ee83d30e006a13e/?api-version=2016-07\",\"TrackingId\":\"5ee74c9e-72b5-4e98-97c4-08a62e56e221_G1\"}",
"Status": "Succeeded",
"Caller": "ServiceBus Client",
"type": "AZMSOperationalLogs",
"Provider" : "SERVICEBUS"
}
在操作日志中捕获的事件和操作
操作日志捕获针对 Azure 服务总线命名空间执行的所有管理操作。 针对 Azure 服务总线执行的数据操作量很大,因此系统不会捕获数据操作。
注意
为了帮助你更好地跟踪数据操作,我们建议使用客户端跟踪。
在操作日志中捕获以下管理操作:
作用域 | 操作 |
---|---|
命名空间 | - 创建命名空间 - 更新命名空间 - 删除命名空间 - 更新命名空间 - 检索命名空间 - SharedAccess 策略 |
队列 | - 创建队列 - 更新队列 - 删除队列 - AutoDelete 删除队列 - 检索队列 |
主题 | - 创建主题 - 更新主题 - 删除主题 - AutoDelete 删除主题 - 检索主题 |
订阅 | - 创建订阅 - 更新订阅 - 删除订阅 - AutoDelete 删除订阅 - 检索订阅 |
注意
目前,不会在操作日志中跟踪“读取”操作。
虚拟网络和 IP 筛选日志
服务总线虚拟网络 (VNet) 连接事件 JSON 包括下表中列出的元素:
名称 | 描述 | 在 Azure 诊断中受支持 | 在 AZMSVnetConnectionEvents(特定于资源的表)中受支持 |
---|---|---|---|
SubscriptionId |
Azure 订阅 ID | 是 | 是 |
NamespaceName |
命名空间名称 | 是 | 是 |
IPAddress |
连接到服务总线服务的客户端的 IP 地址 | 是 | 是 |
AddressIP |
连接到服务总线的客户端的 IP地址 | 是 | 是 |
TimeGenerated [UTC] |
执行操作的时间 (UTC) | 是 | 是 |
Action |
服务总线服务在评估连接请求时执行的操作。 支持的操作为“接受连接”和“拒绝连接” 。 | 是 | 是 |
Reason |
提供执行操作的原因 | 是 | 是 |
Count |
给定操作的发生次数 | 是 | 是 |
ResourceId |
Azure 资源管理器资源 ID。 | 是 | 是 |
Category |
日志类别 | 是 | 否 |
Provider |
发出日志的服务名称,例如 ServiceBus | 否 | 是 |
Type |
发出的日志类型 | 否 | 是 |
注意
只有当命名空间允许从选定的网络或从特定的 IP 地址(IP 筛选器规则)进行访问时,才会生成虚拟网络日志 。
下面是一个虚拟网络日志 JSON 字符串的示例:
AzureDiagnostics;
{
"SubscriptionId": "0000000-0000-0000-0000-000000000000",
"NamespaceName": "namespace-name",
"IPAddress": "1.2.3.4",
"Action": "Accept Connection",
"Reason": "IP is accepted by IPAddress filter.",
"Count": 1,
"ResourceId": "/SUBSCRIPTIONS/<AZURE SUBSCRIPTION ID>/RESOURCEGROUPS/<RESOURCE GROUP NAME>/PROVIDERS/MICROSOFT.SERVICEBUS/NAMESPACES/<SERVICE BUS NAMESPACE NAME>",
"Category": "ServiceBusVNetConnectionEvent"
}
特定于资源的表条目:
{
"SubscriptionId": "0000000-0000-0000-0000-000000000000",
"NamespaceName": "namespace-name",
"AddressIp": "1.2.3.4",
"Action": "Accept Connection",
"Message": "IP is accepted by IPAddress filter.",
"Count": 1,
"ResourceId": "/SUBSCRIPTIONS/<AZURE SUBSCRIPTION ID>/RESOURCEGROUPS/<RESOURCE GROUP NAME>/PROVIDERS/MICROSOFT.SERVICEBUS/NAMESPACES/<SERVICE BUS NAMESPACE NAME>",
"Provider" : "SERVICEBUS",
"Type": "AZMSVNetConnectionEvents"
}
运行时审核日志
运行时审核日志捕获服务总线中各种数据平面访问操作(例如发送或接收消息)的聚合诊断信息。
注意
运行时审核日志目前仅在“高级”层中可用。
运行时审计日志包括下表中列出的元素:
名称 | 描述 | 在 Azure 诊断中受支持 | 在 AZMSRuntimeAuditLogs(特定于资源的表)中受支持 |
---|---|---|---|
ActivityId |
随机生成的 UUID,确保审核活动的唯一性。 | 是 | 是 |
ActivityName |
运行时操作名称。 | 是 | 是 |
ResourceId |
与活动关联的资源。 | 是 | 是 |
Timestamp |
聚合时间。 | 是 | 否 |
time Generated (UTC) |
聚合时间 | 否 | 是 |
Status |
活动的状态(成功或失败)。 | 是 | 是 |
Protocol |
与操作关联的协议类型。 | 是 | 是 |
AuthType |
身份验证类型(Microsoft Entra ID 或 SAS 策略)。 | 是 | 是 |
AuthKey |
用于向资源进行身份验证的 Microsoft Entra 应用程序 ID 或 SAS 策略名称。 | 是 | 是 |
NetworkType |
网络访问类型:Public 或 Private 。 |
是 | 是 |
ClientIP |
客户端应用程序的 IP 地址。 | 是 | 是 |
Count |
在 1 分钟的聚合时间段内执行的操作总数。 | 是 | 是 |
Properties |
特定于数据平面操作的元数据。 | 是 | 是 |
Category |
日志类别 | 是 | 否 |
Provider |
发出日志的服务名称,例如 ServiceBus | 否 | 是 |
Type |
发出的日志类型 | 否 | 是 |
以下是运行时审核日志条目的示例:
AzureDiagnostics:
{
"ActivityId": "<activity id>",
"ActivityName": "ConnectionOpen | Authorization | SendMessage | ReceiveMessage | PeekLockMessage",
"ResourceId": "/SUBSCRIPTIONS/xxx/RESOURCEGROUPS/<Resource Group Name>/PROVIDERS/MICROSOFT.SERVICEBUS/NAMESPACES/<Service Bus namespace>/servicebus/<service bus name>",
"Time": "1/1/2021 8:40:06 PM +00:00",
"Status": "Success | Failure",
"Protocol": "AMQP | HTTP | SBMP",
"AuthType": "SAS | AAD",
"AuthKey": "<AAD Application Name| SAS policy name>",
"NetworkType": "Public | Private",
"ClientIp": "x.x.x.x",
"Count": 1,
"Category": "RuntimeAuditLogs"
}
特定于资源的表条目:
{
"ActivityId": "<activity id>",
"ActivityName": "ConnectionOpen | Authorization | SendMessage | ReceiveMessage | PeekLockMessage",
"ResourceId": "/SUBSCRIPTIONS/xxx/RESOURCEGROUPS/<Resource Group Name>/PROVIDERS/MICROSOFT.SERVICEBUS/NAMESPACES/<Service Bus namespace>/servicebus/<service bus name>",
"TimeGenerated (UTC)": "1/1/2021 8:40:06 PM +00:00",
"Status": "Success | Failure",
"Protocol": "AMQP | HTTP | SBMP",
"AuthType": "SAS | AAD",
"AuthKey": "<AAD Application Name| SAS policy name>",
"NetworkType": "Public | Private",
"ClientIp": "x.x.x.x",
"Count": 1,
"Provider": "SERVICEBUS",
"Type" : "AZMSRuntimeAuditLogs"
}
诊断错误日志
诊断错误日志捕获任何客户端的错误消息,限制和配额超出错误。 它们提供错误识别的详细诊断。
诊断错误日志包括下表中列出的元素:
名称 | 描述 | 在 Azure 诊断中受支持 | 在 AZMSDiagnosticErrorLogs 中受支持(特定于资源表) |
---|---|---|---|
ActivityId |
随机生成的 UUID,确保审核活动的唯一性。 | 是 | 是 |
ActivityName |
操作名称 | 是 | 是 |
NamespaceName |
命名空间的名称 | 是 | 是 |
EntityType |
实体类型 | 是 | 是 |
EntityName |
实体的名称 | 是 | 是 |
OperationResult |
操作中的错误类型(Clienterror 或 Serverbusy 或 quotaexceeded) | 是 | 是 |
ErrorCount |
聚合期间 1 分钟的相同错误计数。 | 是 | 是 |
ErrorMessage |
详细错误消息 | 是 | 是 |
Provider |
发出日志的服务的名称。 可能的值:eventhub、relay 和 servicebus | 是 | 是 |
Time Generated (UTC) |
操作时间 | 否 | 是 |
EventTimestamp |
操作时间 | 是 | 否 |
Category |
日志类别 | 是 | 否 |
Type |
发出的日志类型 | 否 | 是 |
下面是诊断错误日志条目的示例:
{
"ActivityId": "0000000000-0000-0000-0000-00000000000000",
"SubscriptionId": "<Azure Subscription Id",
"NamespaceName": "Name of Service Bus Namespace",
"EntityType": "Queue",
"EntityName": "Name of Service Bus Queue",
"ActivityName": "SendMessage",
"ResourceId": "/SUBSCRIPTIONS/xxx/RESOURCEGROUPS/<Resource Group Name>/PROVIDERS/MICROSOFT.SERVICEBUS/NAMESPACES/<service bus namespace name>",,
"OperationResult": "ClientError",
"ErrorCount": 1,
"EventTimestamp": "3/27/2024 1:02:29.126 PM +00:00",
"ErrorMessage": "the sessionid was not set on a message, and it cannot be sent to the entity. entities that have session support enabled can only receive messages that have the sessionid set to a valid value.",
"category": "DiagnosticErrorLogs"
}
特定于资源的表条目:
{
"ActivityId": "0000000000-0000-0000-0000-00000000000000",
"NamespaceName": "Name of Service Bus Namespace",
"EntityType": "Queue",
"EntityName": "Name of Service Bus Queue",
"ActivityName": "SendMessage",
"ResourceId": "/SUBSCRIPTIONS/xxx/RESOURCEGROUPS/<Resource Group Name>/PROVIDERS/MICROSOFT.SERVICEBUS/NAMESPACES/<service bus namespace name>",,
"OperationResult": "ClientError",
"ErrorCount": 1,
"TimeGenerated [UTC]": "1/27/2024 4:02:29.126 PM +00:00",
"ErrorMessage": "the sessionid was not set on a message, and it cannot be sent to the entity. entities that have session support enabled can only receive messages that have the sessionid set to a valid value.",
"Type": "AZMSDiagnosticErrorLogs"
}
2026 年 9 月 30 日,我们将不再支持 Azure 服务总线的 SBMP 协议,因此在 2026 年 9 月 30 日之后,你将无法再使用此协议。 请在该日期之前迁移到最新的使用 AMQP 协议的 Azure 服务总线 SDK 库,新库提供了关键安全更新和改进功能。
有关详细信息,请参阅支持停用公告。
Azure Monitor 日志表
Azure 服务总线使用 Azure Monitor 日志中的 Kusto 表。 可以通过 Log Analytics 查询这些表。 有关服务使用的 Kusto 表的列表,请参阅 Azure Monitor 日志表参考。
后续步骤
- 有关监视 Azure 服务总线的详细信息,请参阅监视 Azure 服务总线。
- 有关监视 Azure 资源的详细信息,请参阅通过 Azure Monitor 监视 Azure 资源。