0

クラスター化されたアプリケーションの各ノードの出力を、一目でわかる簡単な場所に統合しようとしています。データを永続的に保存する必要はありません。すべての標準出力を同じ場所に表示したいだけです。最終的には、おそらくログ ファイルを使用して、はるかに少ない情報を保存したいと思うでしょう。

ドキュメントでは、標準出力に出力するプロセスを使用できるように見えますが、exec ソースを使用して見たすべての例は、tail を使用したコマンドを示しています。私の設定 (以下を参照) は私のアプリケーションをコマンドとして実行しますが、トラブルシューティングのために、設定された間隔で「テスト」をエコーする単純なシェル スクリプトを実行します。

私はすべてを実行しており、IRC シンクは IRC チャネルに参加していますが、メッセージを送信しません。ログの最後のエントリは、Exec が開始されていることです。

編集: flumeバージョンflume-ng-1.2.0+24.43-1~squeeze

Flume.config:

agent.sources = exec1
agent.channels = mem1
agent.sinks = irc1
agent.sources.exec1.type = exec
agent.sources.exec1.command = sh /var/lib/app/test.sh
agent.sources.exec1.channels = mem1
agent.sinks.irc1.type = irc
agent.sinks.irc1.hostname = 192.168.17.16
agent.sinks.irc1.nick = flume
agent.sinks.irc1.chan = agents
agent.sinks.irc1.channel = mem1
agent.channels.mem1.type = memory
agent.channels.mem1.capacity = 100

log4j.プロパティ:

flume.root.logger=INFO,LOGFILE
flume.log.dir=/var/log/flume-ng
flume.log.file=flume.log
log4j.logger.org.apache.flume.lifecycle = INFO
log4j.logger.org.jboss = WARN
log4j.logger.org.mortbay = INFO
log4j.logger.org.apache.avro.ipc.NettyTransceiver = WARN
log4j.rootLogger=${flume.root.logger}
log4j.appender.LOGFILE=org.apache.log4j.RollingFileAppender
log4j.appender.LOGFILE.MaxFileSize=100MB
log4j.appender.LOGFILE.MaxBackupIndex=10
log4j.appender.LOGFILE.File=${flume.log.dir}/${flume.log.file}
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %p %c{2}: %m%n
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d (%t) [%p - %l] %m%n

test.sh:

#!/bin/bash
x=1
while [ $x -ge 1 ]
do
  echo "Test $x"
  x=$(( $x + 1 ))
  sleep 5
done

Flume.log:

2013-01-31 12:45:08,184 INFO nodemanager.DefaultLogicalNodeManager: Node manager starting
2013-01-31 12:45:08,184 INFO properties.PropertiesFileConfigurationProvider: Configuration provider starting
2013-01-31 12:45:08,184 INFO lifecycle.LifecycleSupervisor: Starting lifecycle supervisor 9
2013-01-31 12:45:08,186 INFO properties.PropertiesFileConfigurationProvider: Reloading configuration file:/etc/flume-ng/conf/flume.conf
2013-01-31 12:45:08,194 INFO conf.FlumeConfiguration: Processing:irc1
2013-01-31 12:45:08,194 INFO conf.FlumeConfiguration: Added sinks: irc1 Agent: agent
2013-01-31 12:45:08,194 INFO conf.FlumeConfiguration: Processing:irc1
2013-01-31 12:45:08,194 INFO conf.FlumeConfiguration: Processing:irc1
2013-01-31 12:45:08,194 INFO conf.FlumeConfiguration: Processing:irc1
2013-01-31 12:45:08,194 INFO conf.FlumeConfiguration: Processing:irc1
2013-01-31 12:45:08,207 INFO conf.FlumeConfiguration: Post-validation flume configuration contains configuration  for agents: [agent]
2013-01-31 12:45:08,208 INFO properties.PropertiesFileConfigurationProvider: Creating channels
2013-01-31 12:45:08,249 INFO instrumentation.MonitoredCounterGroup: Monitoried counter group for type: CHANNEL, name: mem1, registered successfully.
2013-01-31 12:45:08,249 INFO properties.PropertiesFileConfigurationProvider: created channel mem1
2013-01-31 12:45:08,262 INFO sink.DefaultSinkFactory: Creating instance of sink: irc1, type: irc
2013-01-31 12:45:08,266 INFO nodemanager.DefaultLogicalNodeManager: Starting new configuration:{ sourceRunners:{exec1=EventDrivenSourceRunner: { source:org.apache.flume.source.ExecSource@498665a0 }} sinkRunners:{irc1=SinkRunner: { policy:org.apache.flume.sink.DefaultSinkProcessor@167a1116 counterGroup:{ name:null counters:{} } }} channels:{mem1=org.apache.flume.channel.MemoryChannel@27f7c6e1} }
2013-01-31 12:45:08,266 INFO nodemanager.DefaultLogicalNodeManager: Starting Channel mem1
2013-01-31 12:45:08,266 INFO instrumentation.MonitoredCounterGroup: Component type: CHANNEL, name: mem1 started
2013-01-31 12:45:08,266 INFO nodemanager.DefaultLogicalNodeManager: Starting Sink irc1
2013-01-31 12:45:08,267 INFO irc.IRCSink: IRC sink starting
2013-01-31 12:45:08,267 INFO nodemanager.DefaultLogicalNodeManager: Starting Source exec1
2013-01-31 12:45:08,267 INFO source.ExecSource: Exec source starting with command:sh /var/lib/app/test.sh

出力が表示されるまで100秒だった20メッセージ(デフォルト?)まで待っていたので、編集バッチサイズが問題だったようです。現在、batchsize = 1 で、標準のロガーが結果を出力していますが、IRC は NullPointerException について不平を言っています。

4

1 に答える 1

0

IRC シンクのドキュメント (ここにあります: Flume 1.x User Guide ) は、スプリットラインを構成する必要がないという点で間違っています。コードにはデフォルト値がないため、構成する必要があります。

ソース コード (ここにあります: IRCSink.java ) を見ると、「分割行」を指定するか、NullPointerException が発生する必要があります。"splitchars" が null であることを処理するコードがありますが、分割線は処理されません。FLUME-1892として報告(編集:このチケットは 1 月に解決されました。これはもはや問題ではありません。)

于 2013-01-31T22:54:10.307 に答える