我如何使用 getsftp 从变量中的动态数量的服务器中提取数据?

How can I use getsftp to pull from an dynamic number of servers in a variable?

我们的nifi需要拉取一个splunk生成的文件,但是这个文件似乎可以在任何一个splunk搜索头上结束,我不知道是否可以一直显示该文件相同的搜索头,但很难向 splunk 团队请求这样的更改。

我继承的 nifi 通过拥有 4 个独立的 getSFTP 解决了这个问题,每个 getSFTP 都被硬编码为轮询 4 个服务器中的一个。但是,它根本不是动态的。我现在正在将这个 nifi 流移植到另一个云中的 运行,这包括尝试参数化一些以前硬编码的值。对于 getSFTP,问题是新云中搜索头的数量会有所不同,具体取决于它是 dev、int 还是 prod。

我正在寻找一种干净的方法来重写当前的 getSFTPs 以仍然轮询我们需要的文件,但是根据传递给它的 属性 中定义的服务器数量动态地执行它。所以如果只有一个搜索头,就像在开发中一样,它只会让 getSFTP 命中那个搜索头,但如果有 4 个,它知道轮询所有四台服务器以搜索我们需要的文件。

有没有简单的方法可以做到这一点?

NiFi 的工作方式是,为了将变量传递给处理器,该处理器必须具有上游连接。这意味着必须有一个处理器将数据发送到所需的处理器,以便所需的处理器能够使用变量。

一个例子是 NiFi 处理器 PutS3Object,其中可以提供对象键值作为变量,因为上游处理器可以提供文件名。但是,对于 GetSFTP 处理器,处理器不允许它连接到上游处理器。因此,不能向 GetSFTP 处理器提供变量。

要执行所需的操作,不能使用提供的 GetSFTP 处理器,而是更改处理器代码以按需要执行。