Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

修改 UDA、UDF 和工作流引擎

概述

创建规则时,Paragon Insights(以前称为 HealthBot)包括运行用户定义的操作 (UDA) 作为触发器的一部分的功能。UDA 本质上是可由 Paragon Insights 规则执行的 Python 脚本。例如,您可以配置一个带有触发器的规则,该触发器对某些关闭的关键接口做出反应,并通过调用函数发送 SMS 警报来响应事件。您可以编写逻辑以在 UDA python 脚本中发送短信。

从 Paragon Insights 4.1.0 版开始,您可以安排 UDA 和通知。当您在不同位置部署 Paragon Insights 的多个并行实例时,此功能非常有用。您可以从位于不同区域的 UDA 调度程序安排 UDA 交替运行。如果节点发生故障,在并行实例中运行的 UDA 调度程序将继续执行您的 UDA 和通知。有关详细信息,请参阅 在触发器操作中启用 UDA 调度程序

Paragon Insights 还包括运行用户定义函数 (UDF) 的功能。UDF 创建为 Python 脚本,能够处理来自设备的传入遥测数据,并将处理后的值存储在该设备/设备组的时间序列数据库中。例如,设备可能正在以摄氏度为单位发送 FPC 温度,但您希望对其进行处理以将其作为华氏度值存储在数据库中。

从 HealthBot 3.2.0 版开始,UDF/UDA 字段的处理已移至名为 UDF 场的微服务。这种方法允许 Paragon Insights 同时处理来自多个设备和字段的多个数据点(并行处理)。结果是 UDA/UDF 的处理性能提高了 4 到 5 倍。

虽然 UDA 和 UDF 为 Paragon Insights 提供了出色的附加功能,但在某些情况下,脚本可能会导入默认 Paragon Insights 安装中未包含的 Python 模块。鉴于此,您需要能够根据需要将模块添加到运行这些脚本的引擎中。Paragon Insights 2.1.0 及更高版本解决了这一挑战,允许您使用 bash 脚本修改 UDA、UDF 和工作流引擎,其中包含安装任何依赖项的说明。

Python 脚本中的全局变量

TAND 执行使用全局变量的 Python 脚本。全局变量在多个 UDF 中保留一个值。

以下是计算累积总和并将值存储在全局变量 sum中的示例函数。

在 UDF 中使用全局变量可能会阻止您利用 UDF 场保证的处理性能增益。

您可以使用 Python 构造 **kwargs 来捕获必须在不同函数中保留的值,而不是全局变量。当 Paragon Insights 调用函数(在 UDF 中定义)时,它会发送使用该构造 **kwargs捕获的主题名称、规则名称、设备组、点时间和设备 ID。对于 UDA,Paragon Insights 会在执行 Python 脚本时发送主题名称和规则名称。

除了基础架构值,Paragon Insights 还会发送一个名为 in 的hb_store**kwargs参数,用于获取变量的最后一个计算值。

要说明hb_store在累积加法示例中的工作原理,请执行以下操作:

每次调用具有上述代码的函数时,它都会在 'sum' 中执行最后存储值的加法,其值为 和 ab加法运算的新值将显示并存储在“sum”中。

工作原理

您可以使用 Paragon Insights CLI 修改 UDA、UDF 或工作流引擎,如下所示。

这些命令有三个主要选项:

  • 模拟 — 在模拟的 UDA/UDF/工作流引擎环境中测试脚本(并查看其输出),而不会影响正在运行的 Paragon Insights 系统

  • 修改 - 使用脚本修改实际的 UDA/UDF/工作流引擎

  • 回滚 - 恢复到 UDA/UDF/工作流引擎的原始版本

使用说明

  • bash 脚本将在运行 Ubuntu OS 版本 16.04 或 18.04 的容器中运行;相应地编写脚本。

  • 脚本必须是非交互式的;任何问题必须预先回答。例如,使用 apt-get 安装软件包时使用 '-y' 选项。

  • 如果您希望将依赖项模块的源包复制到 Paragon Insights 服务器上,以便引擎可以手动安装它们,而不是从 Internet 下载它们,请将所需的源包放在 /var/local/healthbot/input 目录中。然后在 bash 脚本中,指向 /input 目录。例如,要使用放置在 /var/local/healthbot/input/myfile.txt 中的文件,请将 bash 脚本设置为在 /input/myfile.txt 处访问它。

  • 多次修改 UDA/UDF/工作流引擎 不是一个增量 过程;使用同时包含原始指令和新指令的新 bash 脚本,然后使用新脚本重新运行修改过程。

  • UDA/UDF/工作流修改在升级过程中保持不变。

配置

作为最佳实践,我们建议您使用以下工作流:

此最佳实践方法可确保在修改实际引擎之前,首先在模拟环境中验证脚本。

注意:

以下示例使用 UDA 引擎;这些过程同样适用于 UDF 和工作流引擎。

注意:

以下过程假定您的 Paragon Insights 服务器已安装,包括运行 sudo healthbot setup 命令。

模拟

使用模拟功能在模拟环境中测试 bash 脚本,而不会影响正在运行的 Paragon Insights 系统。

要模拟修改 UDA 引擎,请执行以下操作:

  1. 输入命令 healthbot modify-uda-engine -s /<path>/<script-file> --simulate

  2. 脚本将运行,输出显示在屏幕上,就像您自己输入脚本命令一样。

修改

如果您对模拟结果感到满意,请继续执行实际的修改过程。

要修改 UDA 引擎:

  1. 将所需的 bash 脚本加载到 Paragon Insights 服务器上。

  2. 如果您的 Paragon Insights 服务器已完全启动并正在运行,请发出命令 healthbot stop -s alerta 以停止正在运行的服务。

  3. 运行命令 healthbot modify-uda-engine -s /<path>/<script-file>

  4. (可选)如输出中所述,您可以检查日志文件以进一步验证脚本是否已成功加载。

  5. 使用命令 healthbot start -s alerta重新启动警报服务 。

  6. 完成后,使用命令 healthbot status验证 alerta 服务是否已启动并正在运行。

  7. 要验证 UDA 引擎是否已更新,请使用命令 healthbot version -s alerta 并检查 healthot_alerta 容器是否正在使用 <version>-custom 标记。

UDA 引擎现在根据 bash 脚本使用已安装的依赖项运行。

回 滚

如果需要或希望删除对引擎的更改,可以将引擎恢复到其原始状态。

要回滚 UDA 引擎,请执行以下操作:

  1. 输入命令 healthbot modify-uda-engine --rollback

    请注意,此时没有必要重新启动 alerta 服务。

  2. 完成后,使用命令 healthbot status验证 alerta 服务是否已启动并正在运行。

  3. 要验证 UDA 引擎是否已恢复,请使用命令 healthbot version -s alerta 并检查healthot_alerta容器是否正在使用 <version> 标记。

UDA 引擎现在以其原始状态运行,没有安装其他依赖项。

在触发器操作中启用 UDA 调度程序

在 Paragon Insights 4.1.0 版中,您可以安排在设定的时间间隔内执行 UDA 和通知。要调度 UDA,必须先创建一个离散调度程序,然后在“触发器操作”页中链接该调度程序。

注意:

您只能将一个触发器操作计划程序链接到 Paragon Insights 实例。

要了解有关创建调度程序的详细信息,请参阅 生成报告

触发器操作中设置的调度程序适用于所有设备组和网络组。您可以在设备组或网络组配置中禁用 UDA 调度。若要了解详细信息,请参阅 管理设备、设备组和网络组

要启用调度程序:

  1. 转到 系统>设置

  2. 单击触发操作选项卡。

    此时将显示“触发器操作”页。

  3. 选择要与触发器操作关联的调度程序配置文件。

  4. 执行下列操作之一:

    • 单击 保存 以保存调度程序配置文件。

      配置文件不适用于设备或网络组。此选项使您能够提交或回滚平台中的配置更改。

    • 单击 保存并部署, 在 Paragon Insights 实例中部署配置。

      UDA 和通知是根据调度器中为应用实例配置的时间段和时间间隔生成的。

      您无法回滚通过 “保存并部署”应用的配置更改。然而。您可以移除调度程序配置文件并重复保存并部署选项以取消 UDA 调度。

版本历史记录表
释放
描述
3.2.0
从 HealthBot 3.2.0 版开始,UDF/UDA 字段的处理已移至名为 UDF 场的微服务。