使用 MiNiFi 将日志安全地传送到远程进程组

Shipping Logs Securely to a Remote Process Group using MiNiFi

我对 NiFi 有点挑战……准确地说是 MiNiFi。我们使用 MiNiFi 将日志从远程系统传输到 NiFi 实例,从那里传输到 Kafka 并传输到 Elasticsearch。我们可以在没有 https 的情况下成功地做到这一点,但是,最近我的任务是使用 https 安全地做同样的事情。

使用证书,我可以连接到 NiFi UI,挑战是 MiNiFi 无法连接到远程 NiFi 上的 RPG,错误为 "Unable to communicate with Remote NiFi at URI https://xxxx.com:9443/nifi due to: Received fatal alert: handshake_failure"。我怀疑这是因为下面的错误

2018-07-23 16:27:23,083 INFO [main] o.apache.nifi.controller.FlowController 未启用 RAW Socket 站点到站点功能,因为 nifi.remote.input.socket.port 未设置

2018-07-23 16:27:23,083 INFO [main] o.apache.nifi.controller.FlowController 未启用 HTTP(S) 站点到站点功能,因为 'nifi.remote.input.http.enabled' 属性 不正确

我曾尝试在 MiNiFi 的 nifi.properties 文件中设置这些属性,但每次重启时文件总是被覆盖并加载默认值。 请问,您对如何解决这个问题有什么想法吗?

如何在 config.yml 文件或任何其他地方启动时 bootstrap 这些设置?

您需要在从 NiFi 导出到 MiNiFi 的原始流程中设置这些。 MiNiFi 实例的 nifi.properties 是从提供的 config.yml 文件自动生成的。该文件是使用 MiNiFi Converter Toolkit 转换导出的模板 XML 文件生成的。

更多内容,可以观看these videos or read the Getting Started Guide

您需要在 config.yml 中查找如下行:

Security Properties:
    keystore: /tmp/ssl/localhost-ks.jks
    keystore type: JKS
    keystore password: localtest
    key password: localtest
    truststore: /tmp/ssl/localhost-ts.jks
    truststore type: JKS
    truststore password: localtest
    ssl protocol: TLS
    Sensitive Props:
        key:
        algorithm: PBEWITHMD5AND256BITAES-CBC-OPENSSL
        provider: BC

Remote Processing Groups:
- name: http://localhost:8080/nifi
  url: http://localhost:8080/nifi
  comment: ''
  timeout: 30 sec
  yield period: 10 sec
  Input Ports:
  - id: AUTOGENERATED_NIFI_PORT_ID_HERE
    name: MiNiFi-input
    comment: ''
    max concurrent tasks: 1
    use compression: false
    Properties: # Deviates from spec and will later be removed when this is autonegotiated      
        Port: 1026      
        Host Name: localhost