疑難排解 MSK As A Source - Amazon Data Firehose

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

疑難排解 MSK As A Source

本節會描述使用 MSK As Source 時的常見疑難排解步驟

注意

如需疑難排解處理、轉換或 S3 交付問題,請參閱前面的章節

Hose 建立失敗

如果您的 MSK 做為來源的軟管建立失敗,請檢查下列項目:

Hose 暫停

如果您的 hose 處於懸掛狀態,請檢查以下內容

  • 檢查來源 MSK 叢集是否處於「作用中」狀態。

  • 檢查來源主題是否存在。如果刪除並重新建立主題,您也必須刪除並重新建立 Firehose 串流。

Hose 預壓

當超出每個分割區的 BytesPerSecondLimit 或正常傳輸流緩慢或停止時,DataReadFromSource.BackPressured 的值將為 1。

  • 如果您達到 BytesPerSecondLimit,則請檢查 DataReadFromSource.Bytes 指標並請求提升限制。

  • 檢查 CloudWatch 日誌、目的地指標、資料轉換指標和格式轉換指標,以識別瓶頸。

資料新鮮度錯誤

資料新鮮度似乎有誤

  • Firehose 會根據使用記錄的時間戳記來計算資料新鮮度。為了確保在生產者記錄保留在 Kafka 的代理日誌中時正確記錄此時間戳記,請將 Kafka 主題時間戳記類型組態設定為 message.timestamp.type=LogAppendTime

MSK 叢集連線問題

下列程序說明如何驗證 MSK 叢集的連線。如需設定 Amazon MSK 用戶端的詳細資訊,請參閱《Amazon Managed Streaming for Apache Kafka 開發人員指南》中的開始使用 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 中使用的角色 ARN,SourceConfiguration並驗證憑證位置。允許 AWS 用戶端使用者擔任角色 awsRoleArn. AWS client 使用者將嘗試擔任您在此處指定的角色。

    [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 命令來列出主題。如果您的連線是公有連線,請使用公有端點 Bootstrap 伺服器。如果您的連線是私有的,請使用私有端點 Bootstrap 伺服器。

    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 支援