诊断和解决 Azure 时序见解 Gen1 环境中的问题
Nota
时序见解服务将于 2024 年 7 月 7 日停用。 请考虑尽快将现有环境迁移到备用解决方案。
Precaución
这是一篇 Gen1 文章。
本文描述你可能会在 Azure 时序见解环境中遇到的问题。 本文将提供问题的潜在原因和解决方法。
如果 Azure 时序见解资源管理器中未显示数据,请考虑以下常见原因。
Azure 时序见解仅支持 JSON 数据。 有关 JSON 示例,请参阅支持的 JSON 形状。
对于 Azure IoT 中心内的某个 IoT 中心,需要提供具有“服务连接”权限的密钥。 选择 iothubowner 或 service 策略。 两者都具有“服务连接”权限。
对于 Azure 事件中心内的某个事件中心,需要提供具有“侦听”权限的密钥。 read 和 manage 策略都可正常运行,因为两者都具有“侦听”权限。
注册 IoT 中心或事件中心时,必须设置用于读取数据的使用者组。 不能共享此使用者组。 如果共享此使用者组,底层 IoT 中心或事件中心会随机自动断开某个读取者的连接。 请提供唯一的使用者组,供 Azure 时序见解从中读取。
在环境及其数据首次创建之后的几分钟内,数据显示在 Azure 时间序列见解资源管理器中。
如果仅显示了一部分数据,并且数据似乎滞后,请考虑以下可能的问题。
如果在创建包含数据的事件源之后预配了环境,则经常会发生限制问题。 Azure IoT 中心和 Azure 事件中心将数据存储最长 7 天。 Azure 时序见解始终最先处理事件源中的最早事件(先进先出,也被称为 FIFO)。
例如,如果某个事件源中有 500 万个事件,当你连接到 S1(单一单位 Azure 时序见解环境)时,Azure 时序见解每天会读取大约 100 万个事件。 Azure 时序见解似乎遇到了 5 天的延迟。 但是,实际原因是环境受到了限制。
如果事件源中有旧事件,可通过以下两种方式之一来解决限制:
- 更改事件源的保留限制,以帮助删除不想要显示在 Azure 时序见解中的旧事件。
- 预配一个更大的环境大小(以单位数计),以提高旧事件的吞吐量。 在上面的示例中,如果在某一天将同一 S1 环境增大到 5 个单位,则环境在一天内就能赶上进度。 如果每天以稳定状态生成 100 万或更少的事件,在 Azure 时序见解赶上进度后,你可将事件容量减少为 1 个单位。
强制的限制基于环境的 SKU 类型和容量。 环境中的所有事件源都共享此容量。 如果 IoT 中心或事件中心的事件源推送的数据超过了实施的限制,则会遇到限制和滞后现象。
下图显示了一个 SKU 为 S1 且容量为 3 的 Azure 时序见解环境。 它每天可以引入 300 万个事件。
假设某个环境从事件中心引入消息。 每日流入速率大约为 67,000 条消息。 此速率相当于每分钟大约引入 46 条消息。
- 如果将每条事件中心消息平展为单个 Azure 时序见解事件,则不会发生限制。
- 如果将每条事件中心消息平展为 100 个 Azure 时序见解事件,则每分钟应引入 4,600 个事件。
容量为 3 的 S1 SKU 环境每分钟只能流入 2,100 个事件(每天 100 万个事件 = 每分钟 700 个事件,3 个单位 = 每分钟 2,100 个事件)。
有关平展逻辑工作原理的深入介绍,请参阅支持的 JSON 形状。
若要解决延迟问题,请增加环境的 SKU 容量。 有关详细信息,请参阅缩放 Azure 时序见解环境。
如果连接现有事件源,则 IoT 中心或事件中心可能已包含数据。 环境将开始从事件源消息保留期的起始时间点拉取数据。 这是默认的处理方式,不能将其覆盖。 可以触发限制。 限制可能需要一段时间才能赶上进度,因为要引入历史数据。
解决滞后问题:
将 SKU 容量增大到允许的最大值(本例中为 10)。 增大容量后,流入进程很快就能开始赶上进度。 增加容量需要付费。 若要观察赶上进度的速度,可以查看 Azure 时序见解资源管理器中的可用性图表。
消除滞后问题之后,将 SKU 容量降低至正常流入速率。
如果 Azure 时序见解不再引入数据,但事件仍流式传输到 IoT 中心或事件中心,请考虑以下可能的原因。
如果创建事件源时提供的密钥不再有效,则会出现此问题。 你会在中心看到遥测数据,但不会在 Azure 时序见解中收到入口接收的消息。 如果不确定是否重新生成了密钥,可以在事件中心的活动日志中搜索“创建或更新命名空间授权规则”对于 IoT 中心,搜索“创建或更新物 IoT 中心资源”。
若要用新密钥更新 Azure 时序见解环境,请在 Azure 门户中打开中心资源并复制新密钥。 转到你的 Azure 时序见解资源并选择“事件源”:
选择已停止从其引入的一个或多个事件源,粘贴新密钥,然后选择“保存”:
确保来自事件源的时间戳属性值(JSON 字符串)的格式为 yyyy-MM-ddTHH:mm:ss.FFFFFFFK。 下面是一个示例:2008-04-12T12:53Z。
请注意,时间戳属性名称区分大小写。
使用 Azure 时序见解资源管理器是确保捕获时间戳属性名称并让其正常运行的最简单方法。 在 Azure 时序见解资源管理器中使用图表,并在输入时间戳属性名称之后选择一个时间段。 右键单击选定项,然后选择“浏览事件”。
第一个列标头应是时间戳属性名称。 在单词 Timestamp 旁边,将显示 ($ts) 。
不会显示以下值:
- (abc) :指示 Azure 时序见解正在读取字符串形式的数据值。
- 日历图标:指示 Azure 时序见解正在读取日期时间值形式的数据值。
- # :指示 Azure 时序见解正在读取整数形式的数据值。