【问题标题】:How to implement Custom Sink for a Embedded Flume Agent?如何为嵌入式 Flume 代理实现自定义接收器?
【发布时间】:2020-04-22 15:30:50
【问题描述】:

我正在构建一个 Spring Boot 独立应用程序,该应用程序需要使用来自远程服务器的消息并将它们写入 Syslog Server。我正在使用 Flume 嵌入式代理来可靠地记录消息。但我收到以下错误。

Caused by: org.apache.flume.FlumeException: 组件类型 com.security.flume.sink.SyslogSink 不在允许的类型中 [AVRO] 在 org.apache.flume.agent.embedded.EmbeddedAgentConfiguration.checkAllowed(EmbeddedAgentConfiguration.java:308) ~[flume-ng-embedded-agent-1.9.0.jar:1.9.0] 在 org.apache.flume.agent.embedded.EmbeddedAgentConfiguration.validate(EmbeddedAgentConfiguration.java:182) ~[flume-ng-embedded-agent-1.9.0.jar:1.9.0] 在 org.apache.flume.agent.embedded.EmbeddedAgentConfiguration.configure(EmbeddedAgentConfiguration.java:199) ~[flume-ng-embedded-agent-1.9.0.jar:1.9.0] 在 org.apache.flume.agent.embedded.EmbeddedAgent.doConfigure(EmbeddedAgent.java:151) ~[flume-ng-embedded-agent-1.9.0.jar:1.9.0] 在 org.apache.flume.agent.embedded.EmbeddedAgent.configure(EmbeddedAgent.java:98) ~[flume-ng-embedded-agent-1.9.0.jar:1.9.0]

根据文档Embedded Agent 仅支持Avro Sink。这是否意味着我们甚至不能编写自定义接收器?

我对 Flume 还很陌生。我非常感谢您在这个问题上的帮助。

谢谢!

【问题讨论】:

    标签: java flume


    【解决方案1】:

    这意味着对于嵌入式代理,您只需将AvroSink 用作自定义接收器。但是,您可以使用一些技术来使用自定义组件从外部来源收集数据:

    • 创建一个能够与之前存在的 Flume 源建立通信的自定义客户端,例如 AvroSourcesSyslogTcpSource

    • 创建一个自定义 Flume 源,通过 IPC 或 RPC 协议与预先存在的客户端直接通信。

    我希望这个答案还不算太晚,并且可以为您提供一些帮助。感谢阅读!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-05
      • 2021-05-30
      • 2015-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多