Azure Monitor中的自定义指标(预览版)

Azure使某些指标能够立即使用。 这些指标称为标准指标或平台指标。 自定义指标是性能指标或业务特定的指标。 可以通过应用程序的遥测收集它们。 也可以使用Azure Monitor代理或外部监视系统。 将自定义指标发布到Azure Monitor后,可以与标准Azure指标一起浏览、查询和警报。

注释

Azure Monitor自定义指标目前以公共预览版提供。 此功能不会正式发布,因为我们现在提供了一项改进的 GA 功能,可实现相同的功能和更多功能:Azure Monitor 工作区中的Custom 指标

用于发送自定义指标的方法

可以通过多种方法将自定义指标发送到Azure Monitor:

定价模型和保留期

一般情况下,将标准指标(平台指标)引入 Azure Monitor 指标存储是免费的,但自定义指标在达到全局可用性时会产生成本。 对指标 API 的查询确实会产生费用。 有关为自定义指标和指标查询启用计费时间的详细信息,请查看 Azure Monitor 定价页

自定义指标的保留时间与平台指标的保留时间相同

自定义指标的定义

发布的每个指标数据点都包含命名空间、名称和维度信息。 首次将自定义指标发送到 Azure Monitor 时,服务会自动创建度量值定义。 可以在通过指标定义发出指标的任何资源上发现此新指标定义。 在发出自定义指标之前,无需在Azure Monitor中预定义自定义指标。

注释

Application Insights 和 InfluxData Telegraf 代理已配置为针对正确的区域终结点发出指标值,并在每个排放中携带上述所有属性。

使用自定义指标

将自定义指标提交到Azure Monitor后,可以通过Azure门户浏览这些指标,并通过Azure Monitor REST API 对其进行查询。 还可以对其创建警报,以便在满足特定的条件时收到通知。

注释

你需要具有“读取者”或“参与者”角色才能查看自定义指标。 请参阅监视读取者

通过 Azure 门户浏览自定义指标

  1. 转到 Azure 门户
  2. 选择“监视”窗格
  3. 选择指标
  4. 选择发出自定义指标的资源。
  5. 选择自定义指标的指标命名空间。
  6. 选择自定义指标。

有关在 Azure 门户中查看指标的详细信息,请参阅使用 Azure Monitor 指标资源管理器分析指标

延迟和存储保留期

新添加的指标或新添加到指标的维度可能需要最多 3 分钟才能显示。 数据录入系统后,99% 的情况下应会在 30 秒内显示。

如果删除指标或维度,则从系统中删除更改可能需要一周到一个月的时间。

配额和限制

Azure Monitor对自定义指标施加以下使用限制:

类别 限度
订阅中每个地区的活跃时间序列总数 50,000
每个指标的维度键数 10
指标命名空间、指标名称、维度键和维度值的字符串长度 256 个字符
使用 utf-8 编码的所有自定义指标名称的组合长度 64 KB

活动时序是指标、维度键或维度值的任何唯一组合,其指标值在过去 12 小时内发布。

若要理解对时序的 50,000 限制,请考虑以下指标:

包含 Region、Department 和 CustomerID 维度的服务器响应时间

对于这一指标,如果你有 10 个区域、20 个部门和 100 个客户,则共有 10 x 20 x 100 = 20,000 个时序。

如果你有 100 个区域、200 个部门和 2,000 个客户,则结果为 100 x 200 x 2,000 = 4000 万时序。 此数字远远超出单个指标的限制。

同样,这并非单个指标的限制。 它是整个订阅和区域中所有此类指标的总和。

若要查看当前活动时序指标总数并获取故障排除的详细信息,请执行以下步骤。

  1. 导航到Azure门户的“监视”部分。
  2. 选择左侧的指标
  3. 在“选择范围”下,检查适用的订阅和资源组。
  4. 在“优化范围”下,选择“自定义指标使用情况”和所需位置。
  5. 选择 应用 按钮。
  6. 选择“活动时序”、“活动时序限制”或“限制的时序”

Azure Monitor假设每个字符使用 UTF-8 编码或 1 字节,将所有自定义指标名称的组合长度限制为 64 KB。 如果指标名称超出此限制,Azure Monitor阻止访问其他指标的元数据。 Azure门户从选择字段省略这些指标名称,API 在返回指标定义时会跳过这些名称。 即使没有元数据,也可以直接查询指标数据。

超出限制时,请减少要发送的指标数量,或者缩短其名称的长度。 然后,最多需要两天时间就会显示新指标的名称。

为了避免达到限制,不要在指标名称中包含变量或维度方面的内容。 例如,服务器 CPU 使用率的指标 CPU_server_12345678-319d-4a50-b27e-1234567890abCPU_server_abcdef01-319d-4a50-b27e-abcdef012345 应定义为指标 CPU 并具有 Server 维度。

设计限制和注意事项

将 Application Insights 用于审核。 Application Insights 遥测管道经优化后,可将性能影响降至最低,并限制监视应用程序所产生的网络流量。 因此,当初始数据集变得过大时,系统会进行节流或采样(仅获取一部分百分比的遥测数据,并忽略其余数据)。 由于这种行为,不能将其用于审核目的,因为某些记录可能会被删除。

名称中具有变量的指标。 请勿在指标名称中使用变量。 可改用常数。 每次变量更改其值时,Azure Monitor生成新指标。 然后,Azure Monitor 很快达到度量数量的限制。 通常,当开发人员希望在指标名称中包括变量时,他们实际是希望在一个指标内跟踪多个时序,应使用维度代替变量指标名称。

高基数指标维度。 在某一维度中包含太多有效值(称为“高基数”)的指标更有可能达到 50,000 的限制。 通常,不应在维度中使用不断改变的值。 例如,时间戳就不应用作维度。 你可以使用服务器、客户或产品 ID,但只有在每种类型的数量都比较少的情况下才能使用。

作为测试,问问你自己,你是否会在图形上绘制此类数据。 你有 10 台甚至 100 台服务器时,将它们全部显示在图形上进行比较可能会很有帮助。 但是,如果你有 1,000 个,生成的图形可能难以理解或无法理清。 最佳做法是将有效值数量保持在 100 以内。 此数目到 300 是中间区域。 如果需要超过此数量,请改用Azure Monitor自定义日志。

当名称中包含变量,或者使用高基数维度时,可能会出现以下问题:

  • 由于限制,指标变得不可靠。
  • 指标浏览器不起作用。
  • 警报和通知变得不可预测。
  • 成本可能会意外增加。 当此功能以公共预览版提供时,Microsoft 不对具有维度的自定义指标收费。 将来开始收费后,就会产生意外费用。 该计划会根据所监视的时序数以及所执行的 API 调用数对指标使用量进行收费。

如果错误地使用标识符或高基数维度填充指标名称或维度值,则可以通过删除变量部分来轻松地对其进行修复。

但如果高基数对于你的方案来说至关重要,则聚合指标可能不是正确的选择。 改为使用自定义日志(即通过 trackEvent 进行的 trackMetric API 调用)。 请注意,日志并不会聚合数值,因此每个条目都会被独立存储。 因此,如果短时间内有大量的日志(例如,每秒 1 百万条日志),则可能会导致限制和引入延迟。

小窍门

Azure Monitor指标和Azure Monitor工作区以固定的 60 秒间隔引入自定义指标。 更频繁发送的指标会被缓冲,并每隔 60 秒处理一次。 Log Analytics会根据发送的时间间隔记录指标,短时间间隔可能会增加成本,长时间间隔可能会导致可见性延迟。

后续步骤

使用来自各种服务的自定义指标: