【问题标题】:Setting up an alert for Long Running Pipelines in ADF v2 using Kusto Query使用 Kusto Query 在 ADF v2 中为长时间运行的管道设置警报
【发布时间】:2021-03-08 09:38:58
【问题描述】:

我在 ADF V2 中有一个管道,它通常需要 3 小时才能运行,但有时需要 3 多个小时。因此,如果管道使用 Azure 日志分析(Kusto Query)运行超过 3 小时,我想设置一个警报,我已经编写了一个查询,但它会显示管道成功或失败的结果。如果管道耗时超过 3 小时并且正在进行中,我需要提醒。

我的查询是

ADFPipelineRun
| where PipelineName == "XYZ"
| where (End - Start) > 3h
| project information = 'Expected Time : 3 Hours, Pipeline took more that 3 hours' ,PipelineName,(End - Start)

你能帮我解决这个问题吗?

提前致谢。 拉利特

【问题讨论】:

  • 你的意思是“我已经写了一个查询,但是如果管道成功或失败,它会显示结果。”?
  • 表示管道成功或失败后会抛出警报。但我想在管道正在进行时发出警报。

标签: azure-log-analytics


【解决方案1】:

更新

请按如下方式更改您的查询:

ADFPipelineRun 
| where PipelineName == "pipeline11"
| top 1 by TimeGenerated
| where Status in ("Queued","InProgress")
| where (now() - Start) > 3h //please change the time to 3h in your case
| project information = 'Expected Time : 3 Hours, Pipeline took more that 3 hours' ,PipelineName,(now() - Start)

解释:

管道有一些状态,例如:SucceededFailedQueuedInProgress。如果管道现在正在运行且未完成,则其状态必须是以下两者之一:QueuedInProgress

所以我们只需要使用top 1 by TimeGenerated获取最新的一条记录,然后检查它的状态是Queued还是InProgress(查询时,它的where Status in ("Queued","InProgress"))。

最后,我们只需要使用where (now() - Start) > 3h检查它是否运行超过3小时。

我自己测试过,没问题。如果您还有其他问题,请告诉我。

【讨论】:

  • 谢谢 Ivan,我已经设置了规则,但是如果管道正在进行中,我想要一个警报。
  • @LalitKothawade,你的意思是如果管道已经完成持续时间> 3h,那么不需要警报。只列出那些仍处于运行状态但未在 3 小时内完成的?
  • @LalitKothawade,我更新了我的答案,请看一下。如果它有帮助,请按照this link 接受它作为答案。谢谢:)。
  • I Ivan,是的,您的答案对于在日志分析中设置警报系统是正确的,但我希望 kusto 查询在 adf v2 中找到正在进行的长时间运行的管道(未成功或失败) .对于成功和失败的管道,我的查询运行良好。
  • @LalitKothawade,您是否在更新部分的答案中阅读了我的解释?新查询仅适用于现在正在运行且需要 3 小时的查询。请阅读说明,如果您有任何问题,请告诉我。
猜你喜欢
  • 2019-04-08
  • 1970-01-01
  • 2020-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多