[英]How to implement Custom Sink for a Embedded Flume Agent?
我正在构建一个 spring boot 独立应用程序,它需要使用来自远程服务器的消息并将它们写入Syslog Server
。 我正在使用 Flume 嵌入式代理来可靠地记录消息。 但我收到以下错误。
引起:org.apache.flume.FlumeException:com.security.flume.sink.SyslogSink 的组件类型在 org.apache.flume.agent.embedded.EmbeddedAgentConfiguration.checkAllowed(EmbeddedAgentConfiguration.java) 的 [AVRO] 类型中不允许: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 相当陌生。 我真的很感谢你在这个问题上的帮助。
谢谢!
这意味着对于嵌入式代理,您可以将AvroSink
用作自定义接收器。 但是,您可以使用一些技术来使用自定义组件从外部源收集数据:
创建一个自定义客户端,该客户端能够与之前存在的 Flume 源建立通信,例如AvroSources
或SyslogTcpSource
。
创建一个自定义的水槽源,通过 IPC 或 RPC 协议与预先存在的客户端直接通信。
我希望这个答案还为时不晚,可以帮助您。 谢谢阅读!!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.