MSK As Source のトラブルシューティング - Amazon Data Firehose

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

MSK As Source のトラブルシューティング

このセクションでは、MSK As Source を使用する際の一般的なトラブルシューティングのステップについて解説します。

注記

処理、変換、S3 配信関連の問題に対するトラブルシューティングは、前半のセクションを参照してください。

hose の作成に失敗した

MSK As Source を使用した hose の作成に失敗した場合は、次の点を確認してください。

hose が一時停止している

hose の状態が一時停止になっている場合は次の点を確認してください。

  • ソース MSK クラスターがアクティブな状態であることをチェックします。

  • ソーストピックが存在することをチェックします。トピックを削除して再作成した場合は、Firehose ストリームも削除して再作成する必要があります。

hose がバックプレシャーされている

DataReadFromSource.Backpressured の値は、パーティションごとの BytesPerSecondLimit を超過したり、通常の配信フローが遅いか停止したりすると、1 になります。

  • BytesPerSecondLimit の上限に達した場合は、DataReadFromSource.Bytes メトリクスを確認して、上限の引き上げをリクエストします。

  • CloudWatch ログ、送信先メトリクス、データ変換メトリクス、形式の変換メトリクスを確認し、ボトルネックを特定します。

データの鮮度が正しくない

データの鮮度が正しくない可能性がある

  • Firehose は、使用されたレコードのタイムスタンプに基づいてデータの鮮度を計算します。プロデューサーレコードが Kafka のブローカーログで維持されている間、このタイムスタンプが正しく記録されるようにするには、Kafka トピックのタイムスタンプのタイプ設定を message.timestamp.type=LogAppendTime に設定します。

MSK クラスター接続の問題

次の手順では、MSK クラスターへの接続を検証する方法について説明します。Amazon MSK クライアントの設定の詳細については、「Amazon Managed Streaming for Apache Kafka デベロッパーガイド」の「Getting started using Amazon MSK」を参照してください。

MSK クラスターへの接続を検証するには
  1. Unix ベースの (AL2 が望ましい) Amazon EC2 インスタンスを作成します。クラスターで VPC 接続のみが有効になっている場合は、EC2 インスタンスが同じ VPC で実行されていることを確認します。インスタンスが使用可能になったら、インスタンスに SSH 接続します。詳細については、「Amazon EC2 ユーザーガイド」のこのチュートリアルを参照してください。

  2. 次のコマンドを実行して、Yum パッケージマネージャーを使用して Java をインストールします。詳細については、「Amazon Corretto 8 ユーザーガイド」のインストール手順を参照してください。

    sudo yum install java-1.8.0
  3. 次のコマンドを実行して AWS クライアントをインストールします。

    curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install
  4. 次のコマンドを実行して、Apache Kafka クライアント 2.6* バージョンをダウンロードします。

    wget https://archive.apache.org/dist/kafka/2.6.2/kafka_2.12-2.6.2.tgz tar -xzf kafka_2.12-2.6.2.tgz
  5. kafka_2.12-2.6.2/libs ディレクトリに移動し、次のコマンドを実行して Amazon MSK IAM JAR ファイルをダウンロードします。

    wget https://github.com/aws/aws-msk-iam-auth/releases/download/v1.1.3/aws-msk-iam-auth-1.1.3-all.jar
  6. Kafka bin フォルダに client.properties ファイルを作成します。

  7. awsRoleArn を Firehose SourceConfiguration で使用したロール ARN に置き換え、証明書の場所を検証します。 AWS クライアントユーザーにロールの引き受けを許可しますawsRoleArn。 AWS クライアントユーザーはここで指定したロールの引き受けを試みます。

    [ec2-user@ip-xx-xx-xx-xx bin]$ cat client.properties security.protocol=SASL_SSL sasl.mechanism=AWS_MSK_IAM sasl.jaas.config=software.amazon.msk.auth.iam.IAMLoginModule required awsRoleArn="<role arn>" awsStsRegion="<region name>"; sasl.client.callback.handler.class=software.amazon.msk.auth.iam.IAMClientCallbackHandler awsDebugCreds=true ssl.truststore.location=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.342.b07-1.amzn2.0.1.x86_64/jre/lib/security/cacerts ssl.truststore.password=changeit
  8. トピックを一覧表示するには、次の Kafka コマンドを実行します。接続がパブリックの場合は、パブリックエンドポイントのブートストラップサーバーを使用します。接続がプライベートの場合は、プライベートエンドポイントのブートストラップサーバーを使用します。

    bin/kafka-topics.sh --list --bootstrap-server <bootstrap servers> --command-config bin/client.properties

    リクエストが正常に実行されると、次の例のような出力が表示されます。

    [ec2-user@ip-xx-xx-xx-xx kafka_2.12-2.6.2]$ bin/kafka-topics.sh --list --bootstrap-server <bootstrap servers> --command-config bin/client.properties [xxxx-xx-xx 05:49:50,877] WARN The configuration 'awsDebugCreds' was supplied but isn't a known config. (org.apache.kafka.clients.admin.AdminClientConfig) [xxxx-xx-xx 05:49:50,878] WARN The configuration 'ssl.truststore.location' was supplied but isn't a known config. (org.apache.kafka.clients.admin.AdminClientConfig) [xxxx-xx-xx 05:49:50,878] WARN The configuration 'sasl.jaas.config' was supplied but isn't a known config. (org.apache.kafka.clients.admin.AdminClientConfig) [xxxx-xx-xx 05:49:50,878] WARN The configuration 'sasl.client.callback.handler.class' was supplied but isn't a known config. (org.apache.kafka.clients.admin.AdminClientConfig) [xxxx-xx-xx 05:49:50,878] WARN The configuration 'ssl.truststore.password' was supplied but isn't a known config. (org.apache.kafka.clients.admin.AdminClientConfig) [xxxx-xx-xx 05:50:21,629] WARN [AdminClient clientId=adminclient-1] Connection to node... __amazon_msk_canary __consumer_offsets
  9. 前のスクリプトの実行に問題がある場合は、指定したブートストラップサーバーが、指定したポートで到達可能であることを検証します。これを実行するには、次のコマンドに示すように、telnet または同様のユーティリティをダウンロードして使用できます。

    sudo yum install telnet telnet <bootstrap servers><port>

    リクエストが成功すると、次の出力が表示されます。これは、ローカル VPC 内の MSK クラスターに接続でき、指定されたポートでブートストラップサーバーが正常であることを意味します。

    Connected to ..
  10. リクエストが失敗した場合は、VPC セキュリティグループのインバウンドルールを確認してください。例えば、インバウンドルールで次のプロパティを使用できます。

    Type: All traffic Port: Port used by the bootstrap server (e.g. 14001) Source: 0.0.0.0/0

    前のステップで示したように、telnet 接続を再試行します。それでも接続できない場合、または Firehose 接続が引き続き失敗する場合は、AWS サポートにお問い合わせください。