如何为嵌入式水槽代理实现自定义水槽



我正在构建一个Spring Boot独立应用程序,该应用程序需要从远程服务器中消耗消息并将其写入Syslog Server。我正在使用Flume Embedded代理可靠地记录消息。但是我会遇到以下错误。

由:org.apache.flume.flumeexception引起:组件类型的类型 com.security.flume.sink.syslogsink不在允许的类型中 [avro]在 org.apache.flume.agent.embedded.embeddedagentConfiguration.Checklowered(embeddedeDeDagentConfiguration.java:308( 〜[flume-ng embedded-agent-1.9.0.jar:1.9.0] org.apache.flume.agent.embedded.embeddedagentConfiguration.validate(embeddedeDedagentConfiguration.java:182( 〜[flume-ng embedded-agent-1.9.0.jar:1.9.0] org.apache.flume.agent.embedded.embeddedagentConfiguration.configure(embeddedeDedagentConfiguration.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的新手。我非常感谢您在这个问题上的帮助。

谢谢!

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

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

  • 通过IPC或RPC协议创建具有直接通信的自定义水流源。

我希望这个答案不会太晚,可以为您提供帮助。感谢您的阅读!

最新更新