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

使用作业关系图进行数据驱动调试

使用 Azure 门户中“监视”边栏选项卡里的作业关系图,可以可视化作业管道。 它显示了输入、输出和查询步骤。 可使用作业关系图检查每个步骤的指标,并且在解决问题时,更快速地隔离问题源。

使用作业关系图

在 Azure 门户的流分析作业中,在“支持和故障排除”下,选择“作业关系图”:

Job diagram with metrics - location

选择每个查询步骤,在查询编辑窗格中查看相应的部分。 步骤的指标图表显示在页面下方的窗格中。

Job diagram with metrics - basic job

要查看 Azure 事件中心输入的分区,请选择“. . .”。此时显示一个上下文菜单。 还可查看输入合并。

Job diagram with metrics - expand partition

要查看单个分区的指标图表,请选择分区节点。 指标显示在页面底部。

Job diagram with metrics - more metrics

要查看合并的指标图表,请选择合并节点。 下表显示没有删除或调整事件。

Job diagram with metrics - grid

要查看指标值和时间的详细信息,请指向图表。

Job diagram with metrics - hover

使用指标进行故障排除

QueryLastProcessedTime 指标指示特定步骤收到数据的时间。 通过查看拓扑,可以从输出处理器开始反向检查,判断哪个步骤未接收数据。 如果一个步骤未收到数据,请转到它之前的查询步骤。 检查前面的查询步骤是否具有时间范围,以及是否经过了充足的、用于输出数据的时间。 (注意:时间范围会对齐到小时。)

如果前一个查询步骤是输入处理器,请使用输入指标帮助解答下列针对性问题。 它们可以帮助判断作业是否正从其输入源获取数据。 如果查询已分区,请检查每个分区。

正在读取的数据量有多少?

  • InputEventsSourcesTotal 是已读取的数据单元的数目。 例如,blob 的数目。
  • InputEventsTotal 是已读取的事件数目。 此指标按分区提供。
  • InputEventsInBytesTotal 是已读取的字节数。
  • 在接收每个事件时,使用该事件的排队时间更新 InputEventsLastArrivalTime。

时间是否在不断前进? 如果已读取实际事件,可能不会发出停顿。

  • InputEventsLastPunctuationTime 表示发出停顿,从而使时间不断前进的时间。 如果不发出停顿,数据流可能会阻塞。

输入中是否有任何错误?

  • InputEventsEventDataNullTotal 是包含 null 数据的事件计数。
  • InputEventsSerializerErrorsTotal 是无法正确反序列化的事件计数。
  • InputEventsDegradedTotal 是出现了问题、但该问题不是反序列化问题的事件计数。

事件是否被删除或调整?

  • InputEventsEarlyTotal 是应用程序时间戳在高水位线之前的事件数目。
  • InputEventsLateTotal是应用程序时间戳在高水位线之后的事件数目。
  • InputEventsDroppedBeforeApplicationStartTimeTotal 是作业开始时间之前删除的事件数目。

在读取数据上是否落后于人?

  • 囤积的输入事件数(总计) 告知还需要为事件中心和 Azure IoT 中心输入读取多少条消息。 当此数字大于 0 时,表示作业不能以数据传入速度快速处理数据。 在这种情况下,可能需要增加流单元数和/或确保作业可以并行化。 可以在查询并行化页上看到有关此内容的更多信息。

获取帮助

如需获取进一步的帮助,请阅读关于 Azure 流分析的 Microsoft 问答页

后续步骤