自动执行NIFI模板

时间:2017-02-18 04:49:45

标签: apache-nifi

我是nifi的新手,我正在尝试理解(因为它看起来很多基于GUI),如果有一种方法可以自动扩展和缩小Nifi,以及如何使用xml Nifi模板并将其部署到集群。

基本上我们要做的是使用Nifi从kafka服务器收集JMX和日志文件,因为它们以自动方式出现,因此日志记录和JMX计数器开始流入,比如说和Elasticsearch集群。

例如,现在我们使用Ansible自动部署kafka服务器,因此希望配置和部署Nifi xml teamplates以及集群部署,因此无需手动干预来收集kafka jmx计数器和日志文件。

如何在Nifi中实现自动化?

4 个答案:

答案 0 :(得分:5)

有许多工具和技术可用于自动部署模板,包括:

困难的部分是从现有流迁移到新流,特别是在现有流可能具有排队流文件的情况下,起源历史引用现有流。但是,如果要自动完成NiFi群集的整个部署并将模板部署到空白画布,这可能不是问题。

您可以在Configuration Management of Flows中阅读有关问题和未来计划的完整处理方法。

答案 1 :(得分:2)

为了自动执行NIFI模板,有一个效果很好的工具:https://github.com/hermannpencole/nifi-config

  • 准备你的nifi开发

    1. 在nifi上创建模板
    2. 并下载
    3. 使用工具
    4. 提取示例配置
  • 将其部署在生产中
    1. 使用工具取消部署旧版本
    2. 使用工具
    3. 部署模板
    4. 使用工具
    5. 更新生产配置

答案 2 :(得分:1)

基本上您需要将下载的模板导入目标生产实例;你可以使用nifi-rest-api

创建nifi模板并手动下载到文件夹之后,您应该使用脚本或工具将模板导入目标nifi实例,并在导入后更改一些设置。

您可以使用一些工具:

  1. this 是一个基于脚本的部署项目。
  2. this一个是基于java的
  3. 如果对你不够;你可以创建一个熟悉上述工具的工具。您可以在所有步骤中使用nifi-rest-api。部署步骤应如下所示:

    • 获取现有模板(GET / flow / templates)
    • 删除现有模板(与模板同名的模板)
    • 删除相关的控制器服务(数据库连接池,Http上下文)
    • 上传模板
    • 删除模板前创建的数据流
    • 从新更新的模板创建数据流

    Probaply你在导入过程中存在一些子步骤,这取决于你的模板和数据流属性。所有步骤都有一个rest-api服务电话,您可以在上面的第一个链接找到。

答案 3 :(得分:0)

您可以使用提供CLI的Nifi工具包与NIFI实例和NIFI Registry实例进行交互。

然后可以编写Powershell脚本来自动化整个部署过程。

您需要向Nifi实例注册注册表客户端。在您的注册表实例中为每个环境创建适当的存储桶并将该实例连接到Nifi流之后,您就可以使用Nifi工具箱,该工具包提供了从一个环境导出流并将其通过注册表存储桶导入到另一个环境的命令。

例如从nifi-toolkit代码库中找到的Cli.sh或cli.bat运行以下命令。

注册表导出流版本-f $ fromFlowidentifier -fv $ flowversion -o temp-flow.json -ot json -u $ registrylink;

此处fromflowidentifier是在注册表存储桶中找到的流标识符。 temp.json是它将在其中导出流的文件。导出后,您可以使用以下命令导入流。

注册表导入流版本-f $ toflowidentifier -i temp-flow.json -u $ registrylink;

在此假设您已将nifi实例与Registryclient中的存储桶相关联。

这是我的示例自动部署powershell脚本,用于导入nifi流:它不仅将部署流,还将设置流变量。如果由于某种原因部署失败,它也会发送一封电子邮件。假设您使用的是Nifi注册表,并且已经安装了Nifi-toolkit。请仔细阅读自述文件,并对脚本进行注释以便正确理解。

以下是示例powershell脚本:https://anp8729.github.io/Nifi_AutoDeploymentScript/