LoginSignup
14
4

More than 3 years have passed since last update.

Kafka周りの開発・テストに便利なツールをdocker-composeにまとめました

Last updated at Posted at 2019-12-22

はじめに

最近、Kafkaを利用していたのですが、その中で便利だったツール、及び私自身がつくったツールをまとめました。
docker-composeですぐに立ち上げるようにしていますので、とりあえずKafkaを動かしてみたい&管理してみたい、という方におすすめです。

このdocker-composeファイルは tarosaiba/kafka-trainのリポジトリにまとめてさせてもらっています。"kafka-train"という名前はなんとなくつけました。

image.png

今回紹介するツールは以下です (すべてDockerコンテナとして提供されています)
* wurstmeister/zookeeper
* wurstmeister/kafka
* tarosaiba/kafka-train-producer
* tarosaiba/kafka-train-consumer
* tarosaiba/kafka-burrow
* confluentinc/cp-kafka-rest:4.0.0
* landoop/kafka-topics-ui:0.9.3
* sheepkiller/kafka-manager

Quick Start

以下のリポジトリを利用します
tarosaiba/kafka-train

Start

  • docker-composeで起動
$ docker-compose up -d

Produce

  • メッセージをProduceします
    • シェルスクリプトでシンプルなシーケンシャルな数字を送信します (01,02,03,04,05...)
$ ./send_msg.sh 5
{"id":1,"body":"Massage: 01"}
{"id":2,"body":"Massage: 02"}
{"id":3,"body":"Massage: 03"}
{"id":4,"body":"Massage: 04"}
{"id":5,"body":"Massage: 05"}
  • 以下のように任意のメッセージをProduceすることも可能です
curl -X POST \
  -H 'Content-Type: application/json' \
  -d '{"body":"Test massage"}' \
  localhost:1323/kafka

Consume

  • Consumerコンテナのログを見ると、メッセージが出力されています
$ docker logs -f kafka-train_consumer_1
Kafka Broker -  kafka:9092
Kafka topic -  test_topic
subscribed to topic  test_topic
waiting for event...
Message Massage: 01
waiting for event...
Message Massage: 02
waiting for event...
Message Massage: 03
waiting for event...
Message Massage: 04
waiting for event...
Message Massage: 05
waiting for event...

各ツール紹介

メインどころ

これがないと始まりません。ZookeeperとKafkaのコンテナです。(私が作ったわけではありません)
※もし、サーバのIPでKafkaにアクセスさせたいときは、KAFKA_ADVERTISED_HOST_NAMEの使い方を気をつけてください

Poducer & Consumer

KafkaのProducerとConsumerもセットで動かせるようにgoで簡単に作りました
Producerは、APIサーバで、/kafkaのエンドポイントにメッセージを投げるとKafkaにメッセージをProduceします
Consumreは、メッセージをConsumeして標準出力に出力する単純なものです

Quick Startで記載しているものが、これらになります。

Burrow

Kafkaのモニタリングツールとしてよく使われる"Burrow"をコンテナで動かせるように簡単に作りました
RestAPIでKafkaの情報を返します。
このBurrowにより、Consumer groupのlagも取得可能です。
以下のように利用できます

# list topic
$ curl localhost:8888/v3/kafka/local/topic
{"error":false,"message":"topic list returned","topics":["__consumer_offsets","test_topic"],"request":{"url":"/v3/kafka/local/topic","host":"2fb74ea6b81d"}}

# list consumer
$ curl localhost:8888/v3/kafka/local/consumer
{"error":false,"message":"consumer list returned","consumers":["burrow-local","test-group"],"request":{"url":"/v3/kafka/local/consumer","host":"2fb74ea6b81d"}}

どのようなエンドポイントが使えるかは以下にドキュメントがあります
Burrow-HTTP-Endpoint

その他管理ツール

その他私が使って便利だったツール群です。(私が作ったわけではありません)

kafka topicは、KafkaにProduceされたメッセージをGUIで見ることができます。見やすいです
kafka-restというツールを用いて、Kafkaの中のメッセージを取得するため、セットで動かす必要があります

image.png

kafka-managerは、Consumer groupの情報を見るのに便利です。Commit offsetとlagも見ることができます

image.png

まとめ

以上がKafka周りの開発・テストに便利なツールになります。ぜひ使ってみてください。

14
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
4