我正在构建一个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源建立通信的自定义客户端,例如
AvroSources
或SyslogTcpSource
。 -
通过IPC或RPC协议创建具有直接通信的自定义水流源。
我希望这个答案不会太晚,可以为您提供帮助。感谢您的阅读!