如何为嵌入式Flume代理实施自定义接收器?

时间:2019-06-26 21:31:58

标签: java flume

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

  

由以下原因引起: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很陌生。非常感谢您在此问题上的帮助。

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

  • 创建自定义水槽源,并通过IPC或RPC协议与现有客户端直接通信。

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