MSK As Source 问题排查 - Amazon Data Firehose
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

亚马逊 Data Firehose 以前被称为亚马逊 Kinesis Data Firehose

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

MSK As Source 问题排查

本节介绍了使用 MSK As Source 时常见的问题排查步骤

注意

有关处理、转换或 S3 交付问题的排查,请参阅前面的部分

hose 创建失败

如果使用 MSK As Source 的 hose 创建失败,请检查以下各项

hose 暂停

如果您的 hose 处于暂停状态,请检查以下各项

  • 检查源 MSK 集群是否处于活动状态。

  • 检查源主题是否存在。如果主题被删除并重新创建,则还必须删除并重新创建 Firehose Firehose 直播。

hose 反压

当超过 BytesPerSecondLimit 每个分区或者正常的传送流程缓慢或停止时, DataReadFromSource.Backpressured 的值将为 1。

  • 如果你点击了, BytesPerSecondLimit 请检查 DataReadFromSource .Bytes 指标并请求提高限制。

  • 检查日 CloudWatch 志、目标指标、数据转换指标和格式转换指标以确定瓶颈。

数据新鲜度不正确

数据新鲜度似乎不正确

  • Firehose 根据使用记录的时间戳来计算数据新鲜度。为了确保在将生产者记录保留在 Kafka 的代理日志中时正确记录此时间戳,请将 Kafka 主题时间戳类型配置设置为 message.timestamp.type=LogAppendTime

MSK 集群连接问题

以下过程说明如何验证与 MSK 集群的连接。有关设置 aneifjcbevlkrdcl 亚马逊 MSK 客户端的详细信息,请参阅《适用于 Apache Kafka 的亚马逊托管流媒体开发者指南》中的 Amazon MSK 使用入门

验证与 MSK 集群的连接
  1. 创建基于 UNIX(最好是 AL2)的 Amazon EC2 实例。如果您的集群上仅启用了 VPC 连接,请确保您的 EC2 实例在同一 VPC 中运行。一旦实例可用 SSH 连接到该实例。有关更多信息,请参阅《适用于 Linux 实例的 Amazon EC2 用户指南》中的本教程

  2. 通过运行以下命令使用 Yum 软件包管理器安装 Java。有关更多信息,请参阅 Amazon Corretto 8 用户指南中的安装说明

    sudo yum install java-1.8.0
  3. 通过运行以下命令安装Amazon 客户端

    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然后验证证书位置。允许您的 Amazon 客户用户代入角色awsRoleArn。 Amazon 客户端用户将尝试代入您在此处指定的角色。

    [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 连接仍然失败,请联系支持人员。Amazon