SDK を使用するクライアントでメッセージを送受信できない、またはインスタンスに接続できない場合は、Kafka ヘルスチェックツールを使用して問題を診断します。このツールは、ネットワーク接続の問題やインスタンスの異常を確認するのに役立ちます。インスタンスが正常であれば、クライアント側のコードとネットワーク構成を確認し、アプリケーション側の問題を切り分けてください。
前提条件
-
JDK 1.8 以降がインストールされていること。詳細については、「Java Downloads」をご参照ください。
-
ヘルスチェックツール kafka-checker.zip をダウンロードして展開していること。
-
メッセージ送信とメッセージ消費をテストするためのトピックとコンシューマーグループを作成していること。詳細については、「Create resources」をご参照ください。
ネットワーク接続のテスト
-
エンドポイントを取得します。
-
ApsaraMQ for Kafka コンソールにログインします。
-
リソースの分布 ページの 概要 セクションで、リージョンを選択します。
-
インスタンスリスト ページで、対象インスタンスの名前をクリックします。
-
インスタンスの詳細 ページで、アクセスポイント情報 セクションを見つけ、インスタンスのエンドポイントを取得します。
このセクションには、3 種類のエンドポイントが表示されます:VPC デフォルトエンドポイント (VPC、PLAINTEXT プロトコル)、 インターネット SSL エンドポイント (インターネット、SASL_SSL プロトコル)、および VPC SASL エンドポイント (VPC、SASL_PLAINTEXT プロトコル)。ネットワーク環境に対応するエンドポイントアドレスをコピーします。
説明エンドポイント間の違いの詳細については、「Comparison of endpoints」をご参照ください。
-
-
ヘルスチェックツールを使用して、エンドポイントへのネットワーク接続をテストします。次の手順では Linux オペレーティングシステムを例に説明します。
-
Linux システムにログインし、KafkaChecker.jar ツールがあるディレクトリに移動します。
cd /usr/opt/kafka-checker/usr/opt/kafka-checkerを実際のパスに置き換えてください。 -
次のコマンドを実行して、ApsaraMQ for Kafka インスタンスへの接続性をテストします。
java -jar KafkaChecker.jar telnet -s <endpoint>たとえば、クライアントが VPC デフォルトエンドポイントを使用して ApsaraMQ for Kafka に接続する場合は、次のコマンドを実行します:
java -jar KafkaChecker.jar telnet -s alikafka-pre-cn-zv**********-1-vpc.alikafka.aliyuncs.com:9092,alikafka-pre-cn-zv**********-2-vpc.alikafka.aliyuncs.com:9092,alikafka-pre-cn-zv**********-3-vpc.alikafka.aliyuncs.com:9092。説明VPC エンドポイントを使用する場合は、クライアントとインスタンスが同じ VPC にあることを確認してください。
出力が次の例のようであれば、ネットワーク接続は正常です。
telnet xxx 9092 success telnet xxx 9092 success telnet xxx 9092 success次の例のようなメッセージが表示される場合は、ApsaraMQ for Kafka にアクセスするためのホワイトリストが設定されていないことを示しています。詳細については、「Configure a whitelist」をご参照ください。
telnet xxx 9092 failure, please add ip to white list in Alikafka console telnet xxx 9092 failure, please add ip to white list in Alikafka console telnet xxx 9092 failure, please add ip to white list in Alikafka console
-
メッセージ送信のテスト
メッセージの送信によりテストデータが生成されます。本番データへの影響を避けるため、ヘルスチェック専用のトピックを作成してください。
接続方法に応じたコマンドを実行してください。
-
ポート 9092 で VPC デフォルトエンドポイント経由で接続する場合:
java -jar KafkaChecker.jar send -s <endpoint_domain:9092> --topic <topic_name>例:
java -jar KafkaChecker.jar send -s alikafka-pre-cn-zv**********-1-vpc.alikafka.aliyuncs.com:9092 --topic test -
ポート 9093 でインターネット SSL エンドポイント経由で接続する場合。この接続には SASL 認証が必要です。使用している認証メカニズムに応じたコマンドを実行してください。
説明-
インターネット経由の接続では、インスタンスのデフォルトの SASL ユーザーは認証に PLAIN メカニズムを使用します。
-
より細かな権限制御のために SASL ユーザーを作成し、認証メカニズムを PLAIN または SCRAM-SHA-256 に設定できます。詳細については、「Grant permissions to SASL users」をご参照ください。使用している認証メカニズムに応じたコマンドを実行する必要があります。
PLAIN メカニズム
java -jar KafkaChecker.jar send -sm PLAIN -ss true -u <username> -psw <password> -s <endpoint_domain:9093> --topic <topic_name>例:
java -jar KafkaChecker.jar send -sm PLAIN -ss true -u test -psw test**** -s alikafka-pre-cn-zv**********-1.alikafka.aliyuncs.com:9093 --topic testSCRAM-SHA-256 メカニズム
java -jar KafkaChecker.jar send -sm SCRAM-SHA-256 -ss true -u <username> -psw <password> -s <endpoint_domain:9093> --topic <topic_name>例:
java -jar KafkaChecker.jar send -sm SCRAM-SHA-256 -ss true -u test -psw test**** -s alikafka-pre-cn-zv**********-1.alikafka.aliyuncs.com:9093 --topic test -
-
ポート 9094 で VPC SASL エンドポイント経由で接続する場合。この接続には SASL 認証が必要です。使用している認証メカニズムに応じたコマンドを実行してください。
PLAIN メカニズム
java -jar KafkaChecker.jar send -sm PLAIN -sp true -u <username> -psw <password> -s <endpoint_domain:9094> --topic <topic_name>例:
java -jar KafkaChecker.jar send -sm PLAIN -sp true -u test -psw test**** -s alikafka-pre-cn-zv**********-1-vpc.alikafka.aliyuncs.com:9094 --topic testSCRAM-SHA-256 メカニズム
java -jar KafkaChecker.jar send -sm SCRAM-SHA-256 -sp true -u <username> -psw <password> -s <endpoint_domain:9094> --topic <topic_name>例:
java -jar KafkaChecker.jar send -sm SCRAM-SHA-256 -sp true -u test -psw test**** -s alikafka-pre-cn-zv**********-1-vpc.alikafka.aliyuncs.com:9094 --topic test
出力が次の例のようであれば、メッセージは正常に送信されています:
[2021-08-27 11:29:18.838]Produce ok number:0 p:2 offset:21 response:test-2@21 cost:1342 ms
[2021-08-27 11:29:19.252]Produce ok number:1 p:2 offset:22 response:test-2@22 cost:410 ms
[2021-08-27 11:29:19.254]Produce ok number:1 p:6 offset:9 response:test-6@9 cost:412 ms
[2021-08-27 11:29:19.301]Produce ok number:2 p:5 offset:25 response:test-5@25 cost:47 ms
[2021-08-27 11:29:19.302]Produce ok number:2 p:4 offset:20 response:test-4@20 cost:48 ms
[2021-08-27 11:29:19.347]Produce ok number:3 p:1 offset:19 response:test-1@19 cost:45 ms
[2021-08-27 11:29:19.348]Produce ok number:3 p:8 offset:17 response:test-8@17 cost:46 ms
メッセージ消費のテスト
接続方法に応じたコマンドを実行してください。
-
ポート 9092 で VPC デフォルトエンドポイント経由で接続する場合:
java -jar KafkaChecker.jar pull -s <endpoint_domain:9092> --topic <topic_name> --group <consumer_group_name> --partition 0 --offset 0 --count 10例:
java -jar KafkaChecker.jar pull -s alikafka-pre-cn-zv**********-1-vpc.alikafka.aliyuncs.com:9092 --topic test --group test --partition 0 --offset 0 --count 10 -
ポート 9093 でインターネット SSL エンドポイント経由で接続する場合。この接続には SASL 認証が必要です。メッセージを消費するために使用している認証メカニズムに応じたコマンドを実行してください。
説明-
インターネット経由の接続では、インスタンスのデフォルトの SASL ユーザーは認証に PLAIN メカニズムを使用します。
-
より細かな権限制御のために SASL ユーザーを作成し、認証メカニズムを PLAIN または SCRAM-SHA-256 に設定できます。詳細については、「Grant permissions to SASL users」をご参照ください。使用している認証メカニズムに応じたコマンドを実行する必要があります。
PLAIN メカニズム
java -jar KafkaChecker.jar pull -sm PLAIN -ss true -u <username> -psw <password> -s <endpoint_domain:9093> --topic <topic_name> --group <consumer_group_name> --partition 0 --offset 0 --count 10例:
java -jar KafkaChecker.jar pull -sm PLAIN -ss true -u test -psw test**** -s alikafka-pre-cn-zv**********-1.alikafka.aliyuncs.com:9093 --topic test --group test --partition 0 --offset 0 --count 10SCRAM-SHA-256 メカニズム
java -jar KafkaChecker.jar pull -sm SCRAM-SHA-256 -ss true -u <username> -psw <password> -s <endpoint_domain:9093> --topic <topic_name> --group <consumer_group_name> --partition 0 --offset 0 --count 10例:
java -jar KafkaChecker.jar pull -sm SCRAM-SHA-256 -ss true -u test -psw test**** -s alikafka-pre-cn-zv**********-1.alikafka.aliyuncs.com:9093 --topic test --group test --partition 0 --offset 0 --count 10 -
-
ポート 9094 で VPC SASL エンドポイント経で接続する場合。この接続には SASL 認証が必要です。メッセージを消費するために使用している認証メカニズムに応じたコマンドを実行してください。
PLAIN メカニズム
java -jar KafkaChecker.jar pull -sm PLAIN -sp true -u <username> -psw <password> -s <endpoint_domain:9094> --topic <topic_name> --group <consumer_group_name> --partition 0 --offset 0 --count 10例:
java -jar KafkaChecker.jar pull -sm PLAIN -sp true -u test -psw test**** -s alikafka-pre-cn-zv**********-1-vpc.alikafka.aliyuncs.com:9094 --topic test --group test --partition 0 --offset 0 --count 10SCRAM-SHA-256 メカニズム
java -jar KafkaChecker.jar pull -sm SCRAM-SHA-256 -sp true -u <username> -psw <password> -s <endpoint_domain:9094> --topic <topic_name> --group <consumer_group_name> --partition 0 --offset 0 --count 10例:
java -jar KafkaChecker.jar pull -sm SCRAM-SHA-256 -sp true -u test -psw test**** -s alikafka-pre-cn-zv**********-1-vpc.alikafka.aliyuncs.com:9094 --topic test --group test --partition 0 --offset 0 --count 10
出力が次の例のようであれば、メッセージは正常に消費されています:
[2021-08-27 11:32:37.917]Pull Succ topic:test partition:0 offset:0 key:demo value: time:2021-08-10 15:08:10.629 cha:1455867288
[2021-08-27 11:32:37.918]Pull Succ topic:test partition:0 offset:1 key:demo value: time:2021-08-10 15:16:08.386 cha:1455389532
[2021-08-27 11:32:37.918]Pull Succ topic:test partition:0 offset:2 key:demo value: time:2021-08-10 15:16:50.374 cha:1455347544
[2021-08-27 11:32:37.918]Pull Succ topic:test partition:0 offset:3 key:null value: time:2021-08-18 21:08:23.532 cha:743054386
[2021-08-27 11:32:37.918]Pull Succ topic:test partition:0 offset:4 key:null value: time:2021-08-18 21:08:23.778 cha:743054140
[2021-08-27 11:32:37.918]Pull Succ topic:test partition:0 offset:5 key:null value: time:2021-08-18 21:08:23.892 cha:743054026
[2021-08-27 11:32:37.918]Pull Succ topic:test partition:0 offset:6 key:null value: time:2021-08-18 21:08:24.352 cha:743053566
[2021-08-27 11:32:37.919]Pull Succ topic:test partition:0 offset:7 key:null value: time:2021-08-18 21:08:24.452 cha:743053467
参考
関連する SDK については、「SDK overview」をご参照ください。