これがSO、SuperUser、またはServerFaultの質問であるかどうかはわかりませんが、WindowsマシンにFlumeNodeサービスをインストールしたばかりで、名前付きパイプを介してログイン情報をFlumeNodeに送信したいと思いました。
Flume Cookbookには、名前付きパイプをFlumeに合わせることができると記載されていますが、これにはcygwinが必要であり、すべてのFlumeノードにcygwinをインストールする可能性は低いようです。クックブックの手順は次のとおりです。
データをFlumeに直接パイプできるため、コンソールソースは便利です。次の例では、プログラムから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;'
このアイデアに関するグーグルグループの議論も見つけました。Clauderaの人々はそれが可能だと言っているようですが、Flumeがパイプに接続する方法と、その場合にサーバーまたはクライアントとして機能するかどうかを具体的に説明するものはありません。
理想的には、アプリケーションでNamedPipeClientSteram
またはを作成できるはずです。NamedPipeServerStream
クライアントは名前付きパイプサーバーが実行されている必要があり、クライアントはそれに接続するクライアントを探します。Flumeがサーバーとして機能すると思いますが、確認できません。例えば
NamedPipeClientStream pipeClient = new NamedPipeClientStream(".", "FlumeNamedPipe", PipeDirection.Out, pIpeOptions.None);
pipeClient.Connect();
WindowsでFlumeサービスを開始するときに、パイプを調整するためにコマンドライン引数に追加できるものはありますか?