はじめに
最近、Kafkaを利用していたのですが、その中で便利だったツール、及び私自身がつくったツールをまとめました。
docker-composeですぐに立ち上げるようにしていますので、とりあえずKafkaを動かしてみたい&管理してみたい、という方におすすめです。
このdocker-composeファイルは tarosaiba/kafka-trainのリポジトリにまとめてさせてもらっています。"kafka-train"という名前はなんとなくつけました。
今回紹介するツールは以下です (すべて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の中のメッセージを取得するため、セットで動かす必要があります
kafka-managerは、Consumer groupの情報を見るのに便利です。Commit offsetとlagも見ることができます
まとめ
以上がKafka周りの開発・テストに便利なツールになります。ぜひ使ってみてください。