我是nifi的新手,我正在尝试理解(因为它看起来很多基于GUI),如果有一种方法可以自动扩展和缩小Nifi,以及如何使用xml Nifi模板并将其部署到集群。
基本上我们要做的是使用Nifi从kafka服务器收集JMX和日志文件,因为它们以自动方式出现,因此日志记录和JMX计数器开始流入,比如说和Elasticsearch集群。
例如,现在我们使用Ansible自动部署kafka服务器,因此希望配置和部署Nifi xml teamplates以及集群部署,因此无需手动干预来收集kafka jmx计数器和日志文件。
如何在Nifi中实现自动化?
答案 0 :(得分:5)
有许多工具和技术可用于自动部署模板,包括:
困难的部分是从现有流迁移到新流,特别是在现有流可能具有排队流文件的情况下,起源历史引用现有流。但是,如果要自动完成NiFi群集的整个部署并将模板部署到空白画布,这可能不是问题。
您可以在Configuration Management of Flows中阅读有关问题和未来计划的完整处理方法。
答案 1 :(得分:2)
为了自动执行NIFI模板,有一个效果很好的工具:https://github.com/hermannpencole/nifi-config
准备你的nifi开发
答案 2 :(得分:1)
基本上您需要将下载的模板导入目标生产实例;你可以使用nifi-rest-api。
创建nifi模板并手动下载到文件夹之后,您应该使用脚本或工具将模板导入目标nifi实例,并在导入后更改一些设置。
您可以使用一些工具:
答案 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/