参考网上的相关教程,我的netcat配置如下:
agent1.sources.source1.type = netcat
agent1.sources.source1.bind = localhost
agent1.sources.source1.port = 44444
其他的配置就省略了。我启动服务后也正常,出现如下正常日志:
2017-05-09 21:40:21,951 (lifecycleSupervisor-1-0) [INFO - org.apache.flume.source.NetcatSource.start(NetcatSource.java:164)] Created serverSocket:sun.nio.ch.ServerSocketChannelImpl[/127.0.0.1:44444]
然后在windows上开启一个console,telnet 192.168.200.143 44444,结果提示我无法连接主机端口(ps:192.168.200.143就是Flume的主机IP)。
一顿懵逼后,想了想,我并没有开启过44444端口,于是换了下8089端口,这个端口我开了服务,重启启动,报了一堆错:
Caused by: java.net.BindException: Address already in use
at sun.nio.ch.Net.bind(Native Method)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:126)
地址已经被使用,瞬间崩溃!那个地址的配置不正是监听服务器8089端口的数据情况莫,怎么会说地址被占用,难道启动的时候flume会自己开启8089端口?
好吧,我重新改了下配置,改成监听我windows机器的端口:
agent1.sources.source1.type = netcat
agent1.sources.source1.bind = 192.168.205.143 #远程windows机器
agent1.sources.source1.port = 9000 #windows开启的9000服务
再次启动,又是报错:
Caused by: java.net.BindException: Cannot assign requested address
at sun.nio.ch.Net.bind(Native Method)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:126)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:59)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:52)
at org.apache.flume.source.NetcatSource.start(NetcatSource.java:162)
我彻底崩溃,完全被这个配置搞晕了。
在这里我有个问题需要弄清楚,望大神们帮我解答,多谢!
netcat的绑定地址和端口,这个配置到底是什么意思?
1)是Flume自己会根据配置的地址和端口去创建socketServer端口服务,然后客户端程序向这个端口发送日志数据?这显然不符合Flume主动采集日志的特性。
2)还是Flume根据配置的端口和地址去监听着个服务端口和日志数据。我想Flume应该是监听,但是为什么我去监听指定的端口却连启动都不行。
我现在是特地一脸懵逼,被卡在这好难受,大神们快快出现,小弟多谢!