关于 managing-amazon-msk
这是用于运维 Amazon MSK Provisioned 集群的领域知识技能,涵盖 Standard 和 Express broker。内容涉及故障排查、集群规划、存储、客户端配置、监控、主题管理及流数据工作流。
主要功能
- 01诊断性能问题与消费者滞后
- 02规划 broker 规格和存储
- 03配置 Kafka 客户端与集群
- 04管理主题和数据复制
- 05设置 CloudWatch 监控与告警
- 06使用附带脚本进行规格规划
适用场景
- 01排查延迟或消费者滞后
- 02选择集群规格并估算价格
- 03配置身份验证与 broker 设置
- 04规划复制或流数据交付
MCP 相关
连接时使用 AWS MCP 服务提供的工具执行命令;不可用时改用 AWS CLI 或 Shell。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ aws/ agent-toolkit-for-aws --skill managing-amazon-msk安装后在 Claude Code 中输入/managing-amazon-msk确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/configure-clients.mdconfigure-cluster.mddata-delivery-for-general-purpose-s3.mdmaintenance-operations.mdmanage-storage.mdmanage-topics.mdmonitor-and-alarm.mdmsk-replicator.mdsize-and-choose-cluster.mdstreaming-tables-troubleshooting.mdstreaming-tables.mdtroubleshoot-consumer-lag.mdtroubleshoot-performance.mdzk-to-kraft-migration.mdscripts/msk_sizing.py详细介绍
Amazon MSK
概览
介绍 Amazon MSK Provisioned 集群(包括 Standard 和 Express broker 类型)的运维专业知识。涵盖性能故障排查、消费者延迟诊断、存储管理、集群规格选择、客户端配置和 CloudWatch 监控。
连接后,使用 AWS MCP 服务中的可用工具执行命令——它提供沙盒执行、审计日志记录和可观测性。如果 MCP 服务不可用,则根据需要使用 AWS CLI 或 shell。
Standard broker 使用由客户管理的 EBS 卷存储数据。你需要选择实例类型(kafka.m5/m7g 系列)、预置 EBS,并管理存储扩展。
Express broker 使用以 express.m7g 为前缀的实例类型,几乎适用于所有 MSK 工作负载,也是默认推荐选项——它们通常不仅省力,成本也更低。每个 broker 的入口流量最高可达 3 倍(MSK Express broker 类型),因此相同负载所需的 broker 更少;存储则按实际保留数据的 GB 小时计费,而非预先按无法缩减的 EBS 容量计费。它们的扩展速度也快 20 倍,分区再平衡速度快 180 倍(智能再平衡),恢复速度快 90%(MSK Express broker 类型),且没有维护时段。Express broker 不使用客户管理的 EBS——不要为 Express 集群建议扩展 EBS 或预置吞吐量。Express broker 强制采用固定的副本因子 3 和 min.insync.replicas=2。有关 Standard 与 Express 的完整决策框架,请参阅 size-and-choose-cluster.md。
需要哪种工作流?
先确定 broker 类型:aws kafka describe-cluster-v2 --cluster-arn <arn>。检查 Provisioned.BrokerNodeGroupInfo.InstanceType——如果以 express. 开头,则该集群为 Express 集群。
| 客户意图 | 参考资料 |
|---|---|
| CPU 使用率高、延迟高、集群缓慢、流量整形 | troubleshoot-performance.md |
| 消费者滞后不断增加、频繁发生重新平衡、消费者组卡住 | troubleshoot-consumer-lag.md |
| 磁盘空间不足、规划保留策略、分层存储 | manage-storage.md |
| 选择 Standard 还是 Express、确定集群规格、分区数限制、代理数、月度成本 | size-and-choose-cluster.md |
| 生产者/消费者配置、IAM/SCRAM/TLS 身份验证 | configure-clients.md |
创建/应用 MSK 配置(server.properties);通过 custom.advertised.listeners 为代理配置自定义域名(通告的监听器、静态/自定义引导端点)——验证规则、应用/回滚、扩展;从动态的逐代理 kafka-configs.sh 覆盖迁移到静态属性 | configure-cluster.md |
| 自定义域名的客户端连接:NLB + ACM 证书 + Route 53 前置、TLS 握手/终止、通过 NLB 实现 mTLS、跨可用区负载均衡 | configure-clients.md(自定义域名连接部分) |
创建、更新、删除、列出或描述 Kafka 主题;何时使用原生主题 API/CfnTopic,而非 Kafka 管理客户端 | manage-topics.md |
| MSK Replicator 设置、迁移、灾难恢复、主动-主动/主动-被动、跨账户复制、自管理到 MSK 或 MSK 到 MSK、循环预防/主题命名行为 | msk-replicator.md |
每个分区的复制吞吐量、复制器需要多少分区、复制器扩展后吞吐量为何没有提升、复制器配额(主题数、入口流量、记录大小)、ReplicationLatency/MessageLag/ReplicatorThroughput | msk-replicator.md(确定分区数部分) |
| 设置监控、控制面板和警报 | monitor-and-alarm.md |
| 完整的 CloudWatch 指标列表(Standard 或 Express) | 有关策略建议和指标解读,请优先参阅 monitor-and-alarm.md;只有在需要了解此参考文件未包含的指标时,才搜索文档(完整列表见 MSK Standard CloudWatch Metrics、MSK Express CloudWatch Metrics) |
| 滚动重启影响、修补、维护韧性 | maintenance-operations.md |
| 通过完全托管式低成本服务,将流数据交付到 S3 Tables 上的 Apache Iceberg 表(Streaming Tables)——设置、IAM、架构,以及创建/更新/删除/列出/描述通道 | streaming-tables.md |
| 通过完全托管式低成本服务,将主题数据作为 JSON/ByteArray/String 对象交付到 S3 存储桶(通用型 S3 存储桶的数据交付)——设置、IAM、输出键模板,以及创建/更新/删除/列出/描述通道 | data-delivery-for-general-purpose-s3.md |
| 基于 Kafka 构建湖仓/数据湖;让流数据可在 Athena 中查询 | streaming-tables.md |
| 替代 Kafka Connect S3 Sink 或 Amazon Data Firehose 的 MSK 方案;无需运维即可将流数据交付到 S3 | data-delivery-for-general-purpose-s3.md |
| Streaming Tables / Data Delivery CloudWatch 指标和警报、DLQ 错误、交付失败、通道状态转换、新鲜度滞后 | streaming-tables-troubleshooting.md |
| “我能否在 MSK Serverless / Standard 代理上使用 Streaming Tables / Data Delivery?”——适用性指引 | streaming-tables.md(答案始终是:仅适用于 Express 代理;对于 Standard 和 Serqverless,请使用 Firehose、Flink 或 Kafka Connect——Firehose integration for Amazon MSK) |
| MSK 当前支持哪些 Kafka 版本? | Supported Apache Kafka versions |
| MSK 是否支持 KRaft 集群?如何在 ZooKeeper 和 KRaft 模式集群之间迁移? | zk-to-kraft-migration.md |
| MSK Express 当前有哪些配额(入口流量、出口流量、分区数、代理数等)? | MSK Express Quotas |
| MSK Standard 当前有哪些配额(分区数、代理数等)? | MSK Standard Quotas,以及 MSK Standard best practices 中有关分区数限制的内容 |
| 可以在 MSK Express 或 Standard 代理上进行哪些代理级配置更改? | MSK Configuration |
可用脚本
scripts/msk_sizing.py— 有关规模估算的问题(代理数量、实例选择、成本)都必须运行此脚本。若 AWS 凭证具备pricing:GetProducts权限,价格将通过实时 AWS Pricing API 获取;否则将回退到嵌入的us-east-1快照,因此无论是否具备凭证都能运行。所需工作流和脚本参考请参阅 size-and-choose-cluster.md。
护栏 — 此技能自身文件的位置(MCP 与本地安装)
此技能可以通过两种方式加载,而这两种方式会从不同位置解析技能自身捆绑的文件——references/ 文档和 scripts/ 文件。在读取参考文档或运行脚本之前,请先确定技能的加载方式:
- 通过 AWS MCP 的
retrieve_skill工具调用加载。 此技能未安装在本地文件系统中;其参考文件和脚本不在磁盘上。你必须通过同一个retrieve_skill工具获取每个参考文档或脚本,并传入file参数(例如,file="references/configure-clients.md"或file="scripts/msk_sizing.py"),然后运行该工具返回内容中的脚本。不要从本地目录或工作目录使用file_read读取这些路径,也不要在文件系统中搜索它们——这些文件并不在那里,任何恰好同名的本地文件都与此技能无关。 - 本地安装(技能位于本地技能目录中,例如
.claude/skills/managing-amazon-msk/、~/.claude/skills/managing-amazon-msk/或.kiro/skills/managing-amazon-msk/)。请使用本文档中所示的相对路径,从本地技能目录读取参考文档并运行脚本。
此区别仅适用于技能自身打包的文件。无论技能如何加载,会话期间创建或由用户提供的所有文件都应从用户的工作目录读取并写入。切勿通过 retrieve_skill 获取或写入客户数据。
常见工作流
创建/应用 Amazon MSK 配置并设置自定义域名 — 创建 Amazon MSK 配置(server.properties,并满足 fileb:// 的真实换行符要求)、使用 update-cluster-configuration 应用配置,以及通过 custom.advertised.listeners 设置代理自定义域名:请参阅 configure-cluster.md。有关自定义域名接入前置的 NLB/证书/DNS 连通性,请参阅 configure-clients.md。