【问题标题】:How to trigger an alert notification of a long-running process in Azure Data Factory V2 using either Azure Monitor or ADF itself?如何使用 Azure Monitor 或 ADF 本身触发 Azure Data Factory V2 中长时间运行的进程的警报通知?
【发布时间】:2019-04-08 10:12:31
【问题描述】:

我一直在尝试寻找在 ADF 任务(即 CopyActivity 或存储过程任务)运行超过 N 小时时触发警报的最佳方式,我想使用 Azure Monitor,因为它是其中之一Azure 中推荐的通知服务,但是我无法找到“运行”标准,因此我不得不使用可用标准(成功和失败)并每 N 小时检查一次,但这仍然不完美,因为我不知道该流程何时开始,我们可能每天手动运行该流程多次,您有什么方法可以推荐这样做吗?比如基于事件的通知,它监听某个时间变量,一旦大于阈值就会触发电子邮件通知?

【问题讨论】:

    标签: azure azure-data-factory-2


    【解决方案1】:

    您有什么方法可以推荐吗?像基于事件的 侦听某个时间变量的通知,一旦它是 大于阈值会触发电子邮件通知?

    根据您的要求,我建议您使用Azure Data Factory SDKs 来监控您的管道和活动。

    您可以创建一个time trigger Azure Function,它每 N 小时触发一次。在那个触发函数中:

    1. 您可以列出数据工厂帐户中的所有running activities

    2. 然后循环它们以监视 ActivityRun Class 中的 DurationInMs 属性,以检查是否有任何活动已运行超过 N 小时并且仍处于进行中 status

    3. 最后,发送电子邮件或终止活动或做任何你想做的事情。

    【讨论】:

    • 感谢您的提示,我最终使用 Python SDK 做了类似的事情并从 VM 运行脚本,不幸的是 Azure Functions 不支持 Python,我最终使用了带有 Python 的 VM。但是,我正在按照相同的步骤来捕捉这一点,最好有一个带有 Running 的 Azure Monitor 标准 :) 。谢谢,我会将您的推荐标记为 anwer,直到找到最佳推荐为止。
    • @SaulCruz 不客气,顺便说一句,据我所知,azure 函数支持 python 代码。请参考我之前的案例:stackoverflow.com/questions/51141674/…
    • 谢谢,是的,我过去确实尝试过这样做,但我不确定我是否遗漏了什么,但在创建我的函数应用程序后找不到 Python 语言,唯一可用的运行时堆栈是 Java、JavaScript 和 .NET,当我选择那些我无法找到 python 的堆栈时,我将再次查看并编辑答案以提供更多信息。再次感谢
    【解决方案2】:

    我建议简单的解决方案: Kusto 查询列出状态为“已排队”的所有管道运行,并将其在 CorrelationId 上与我们不感兴趣的管道连接 - 通常是“成功”、“失败”。 Join flavor leftanti 通过“从左侧返回所有右侧没有匹配的记录”来完成这项工作。 (如 MS 文档中所述)。 下一步是设置您想要的超时值 - 在下面的示例代码中为 30m。 最后,您可以根据此查询配置警报规则并获取您的电子邮件通知,或者您需要的任何内容。

    ADFPipelineRun |其中状态 ==“排队” |加入 kind=leftanti (ADFPipelineRun |其中状态(“失败”,“成功”)) 在 CorrelationId 上 |从哪里开始

    我只是简单地测试了这个,也许缺少一些东西。我有一个想法,可以添加要从结果中删除的其他状态 - 例如“已取消”。

    【讨论】:

    • 您知道如何排除“已取消”的运行吗?似乎没有显示“已取消”状态。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 2020-12-30
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多