Azure使某些指标能够立即使用。 这些指标称为标准指标或平台指标。 自定义指标是性能指标或业务特定的指标。 可以通过应用程序的遥测收集它们。 也可以使用Azure Monitor代理或外部监视系统。 将自定义指标发布到Azure Monitor后,可以与标准Azure指标一起浏览、查询和警报。
注释
Azure Monitor自定义指标目前以公共预览版提供。 此功能不会正式发布,因为我们现在提供了一项改进的 GA 功能,可实现相同的功能和更多功能:Azure Monitor 工作区中的Custom 指标。
用于发送自定义指标的方法
可以通过多种方法将自定义指标发送到Azure Monitor:
- 使用 Azure 应用程序 Insights SDK 通过向Azure Monitor发送自定义遥测数据来检测应用程序。
- 在 Windows 或 Linux Azure 虚拟机或虚拟机规模集上安装 Azure Monitor Agent,并使用 数据收集规则将性能计数器发送到 Azure Monitor 指标。
- 在 Azure Linux VM 上安装 InfluxData Telegraf 代理。 使用Azure Monitor输出插件发送指标。
- 将自定义指标直接发送到Azure Monitor REST API。
定价模型和保留期
一般情况下,将标准指标(平台指标)引入 Azure Monitor 指标存储是免费的,但自定义指标在达到全局可用性时会产生成本。 对指标 API 的查询确实会产生费用。 有关为自定义指标和指标查询启用计费时间的详细信息,请查看 Azure Monitor 定价页。
自定义指标的保留时间与平台指标的保留时间相同。
自定义指标的定义
发布的每个指标数据点都包含命名空间、名称和维度信息。 首次将自定义指标发送到 Azure Monitor 时,服务会自动创建度量值定义。 可以在通过指标定义发出指标的任何资源上发现此新指标定义。 在发出自定义指标之前,无需在Azure Monitor中预定义自定义指标。
注释
Application Insights 和 InfluxData Telegraf 代理已配置为针对正确的区域终结点发出指标值,并在每个排放中携带上述所有属性。
使用自定义指标
将自定义指标提交到Azure Monitor后,可以通过Azure门户浏览这些指标,并通过Azure Monitor REST API 对其进行查询。 还可以对其创建警报,以便在满足特定的条件时收到通知。
注释
你需要具有“读取者”或“参与者”角色才能查看自定义指标。 请参阅监视读取者。
通过 Azure 门户浏览自定义指标
- 转到 Azure 门户。
- 选择“监视”窗格。
- 选择指标。
- 选择发出自定义指标的资源。
- 选择自定义指标的指标命名空间。
- 选择自定义指标。
有关在 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 万时序。 此数字远远超出单个指标的限制。
同样,这并非单个指标的限制。 它是整个订阅和区域中所有此类指标的总和。
若要查看当前活动时序指标总数并获取故障排除的详细信息,请执行以下步骤。
- 导航到Azure门户的“监视”部分。
- 选择左侧的指标。
- 在“选择范围”下,检查适用的订阅和资源组。
- 在“优化范围”下,选择“自定义指标使用情况”和所需位置。
- 选择 应用 按钮。
- 选择“活动时序”、“活动时序限制”或“限制的时序”。
Azure Monitor假设每个字符使用 UTF-8 编码或 1 字节,将所有自定义指标名称的组合长度限制为 64 KB。 如果指标名称超出此限制,Azure Monitor阻止访问其他指标的元数据。 Azure门户从选择字段省略这些指标名称,API 在返回指标定义时会跳过这些名称。 即使没有元数据,也可以直接查询指标数据。
超出限制时,请减少要发送的指标数量,或者缩短其名称的长度。 然后,最多需要两天时间就会显示新指标的名称。
为了避免达到限制,不要在指标名称中包含变量或维度方面的内容。
例如,服务器 CPU 使用率的指标 CPU_server_12345678-319d-4a50-b27e-1234567890ab 和 CPU_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会根据发送的时间间隔记录指标,短时间间隔可能会增加成本,长时间间隔可能会导致可见性延迟。
后续步骤
使用来自各种服务的自定义指标: