不确定这是一个SO,SuperUser还是ServerFault问题,但是我只是在我的windows机器上安装了FlumeNode服务,我想通过一个指定的管道向FlumeNode发送日志信息。
水槽烹饪本说我们可以将命名的管道跟踪到Flume,但是这似乎需要cygwin,而且我们不太可能在所有的Flume节点上安装cygwin。下面是食谱上的说明:
控制台源非常有用,因为我们可以直接将数据输送到水槽中。下一个示例将数据从一个程序导入到Flume中,然后由Flume来传递数据。
$ <external process> | flume node_nowatch -1 -s -n foo -c
'foo:console|agentBESink("collector");'理想情况下,您可以将数据写入命名管道,并让Flume使用文本或尾从命名管道读取数据。不幸的是,这个版本的Flume的文本和尾部目前与Linux环境中的命名管道不兼容。但是,您可以将数据输送到侦听stdin控制台的Flume节点:
$ tail -f namedpipe | flume node_nowatch -1 -s -n foo -c
'foo:console|agentBESink;'也可以使用exec源获取其输出数据:
$ flume node_nowatch -1 -s -n bar -c 'bar:exec("cat
pipe")|agentBESink;'我还发现了关于谷歌集团对这一想法的讨论,克劳代拉的人似乎认为这是可能的,但没有具体解释Flume将如何连接到管道,以及在这种情况下它是否充当服务器或客户端。
理想情况下,我应该能够在我的应用程序中创建一个NamedPipeClientSteram或NamedPipeServerStream。客户端需要一个命名管道服务器才能运行,并且客户端查找连接到它的客户端。我假设Flume将充当服务器,但我无法证实这一点。例如。
NamedPipeClientStream pipeClient = new NamedPipeClientStream(".", "FlumeNamedPipe", PipeDirection.Out, pIpeOptions.None);
pipeClient.Connect();在Windows中启动Flume服务时,是否可以将某些内容添加到命令行参数中,以便跟踪管道?
发布于 2011-07-20 21:25:35
我收到了Claudera的回复,他们说,由于windows没有内置的tail程序,因此需要使用Cygwin来实现这种功能。我们不想安装cygwin,所以我正在寻找另一种解决方案。
根据Claudera的说法,另一种选择是使用C# 节俭装订,它会将数据发送给在同一个Windows框上有一个窗口源的Flume代理。我不太清楚您是如何为Flume代理指定一个Thrift源的,但据推测这是可以做到的。
发布于 2013-01-11 04:04:02
作为跟踪日志的替代方法,我为NLog和log4net创建了一个NLog Flume附录。它使用的是由水槽暴露的节俭的装订。这些现在被称为ThriftLegacySource。Flume基于Avro的新绑定目前没有C#客户端,所以这是我能想到的唯一明智的选择。
附加程序与nuget一起安装:
安装包DotNetFlumeNG.Client.log4net
安装包DotNetFlumeNG.Client.NLog
https://stackoverflow.com/questions/6753825
复制相似问题