最近Apache kafkaを探求している.触ることも多くなったのでローカルで簡単に試せる環境をちゃんと整えた.JVMだし動かすの大変そうと思われがちだがDockerを使えばコマンド1発で起動できる.以下では実際にBrokerを立ててsyslogの配信/購読をやってみる.
バージョンは 0.8.2 を対象に書いている.
まずKafka(Broker)を動かす.Dockerイメージtcnksm/single-kafkaを準備した.以下のように起動する.オプションはすべてDockerホスト外からBrokerにアクセスするための設定.
$ docker run --rm -it \
--name kafka \
--publish 9092:9092 \
--env ADVERTISED_HOST=${DOCKER_HOST} \
--env ADVERTISED_PORT=9092 \
tcnksm/single-kafka
実際にsyslogの配信(Produce)と購読(Consume)をしてみる.logstashやfluentdを使っても良いがkafkacatを使うのがお手軽.バイナリで配布されているのでOSXだとHomeBrewでインストールできる.
$ brew install kafkacat
まず配信は以下.パイプでtail
の出力を受け取る.トピック名はsyslog
としKafka(Broker)はDocker上で動いているので${DOCKER_HOST}:9092
を指定する.
$ tail -f /var/log/system.log | kafkacat -P -t syslog -b ${DOCKER_HOST}:9092
次に購読は以下のようにする.トピック名syslog
を指定するだけ.
$ kafkacat -C -t syslog -b ${DOCKER_HOST}:9092
まとめ
サードパーティのConsumer/Producerを試す,もしくは自分で書いたConsumerやProducerのテストにも使えるのでぜひ使ってください.