7. 使用 Terraform 将 Kinesis 数据流式传输到 CloudWatch

发布: (2026年2月7日 GMT+8 13:56)
5 分钟阅读
原文: Dev.to

Source: Dev.to

请提供您想要翻译的文章正文内容(除代码块和 URL 之外),我将为您翻译成简体中文并保持原有的 Markdown 格式。

实验室信息

监控团队希望提升对流式基础设施的可观测性。请使用 Amazon Kinesis 和 CloudWatch 实现一个解决方案,使得当写入吞吐量超过预置限制时立即触发警报。

任务(使用 Terraform):

  1. 创建 Kinesis 数据流

    • 名称:xfusion-kinesis-stream
    • 分片数量:1
  2. 启用监控

    • 启用分片级别指标,以跟踪摄入和吞吐错误。
  3. 创建 CloudWatch 警报

    • 名称:xfusion-kinesis-alarm
    • 监控 WriteProvisionedThroughputExceeded 指标。
    • 当指标超过阈值 1 时触发。
  4. 确保警报

    • 配置警报以检测写入吞吐量超过预置限制的问题。
  5. Terraform 文件

    • main.tf – 供应 Kinesis 流和 CloudWatch 警报。
    • outputs.tf – 输出流和警报的名称。

实验解决方案

main.tf

# Kinesis Data Stream
resource "aws_kinesis_stream" "xfusion_kinesis" {
  name        = "xfusion-kinesis-stream"
  shard_count = 1

  shard_level_metrics = [
    "IncomingBytes",
    "IncomingRecords",
    "WriteProvisionedThroughputExceeded"
  ]
}

# CloudWatch Alarm for write throughput exceeded
resource "aws_cloudwatch_metric_alarm" "xfusion_kinesis_alarm" {
  alarm_name          = "xfusion-kinesis-alarm"
  comparison_operator = "GreaterThanThreshold"
  evaluation_periods  = 1
  metric_name         = "WriteProvisionedThroughputExceeded"
  namespace           = "AWS/Kinesis"
  period              = 60
  statistic           = "Sum"
  threshold           = 1

  dimensions = {
    StreamName = aws_kinesis_stream.xfusion_kinesis.name
  }

  alarm_description = "Alarm when Kinesis write throughput exceeds provisioned limits"
}

outputs.tf

output "kke_kinesis_stream_name" {
  value = aws_kinesis_stream.xfusion_kinesis.name
}

output "kke_kinesis_alarm_name" {
  value = aws_cloudwatch_metric_alarm.xfusion_kinesis_alarm.alarm_name
}

Terraform 命令(必需)

terraform init
terraform validate
terraform apply
# type "yes" when prompted

Kinesis 流图

Source:

步骤说明(原因与发生的事情)

什么是 Amazon Kinesis?

一个接收流式数据的数据管道,例如:

  • 应用日志
  • 点击流数据
  • IoT 事件

什么是 Shard(分片)?

高速公路上的车道。每个分片都有写入限制,超过该限制会导致错误。在本实验中,shard_count = 1 创建了单个车道。

为什么要启用 Shard‑Level Metrics(分片级指标)?

shard_level_metrics = [
  "IncomingBytes",
  "IncomingRecords",
  "WriteProvisionedThroughputExceeded"
]

启用后可以在分片内部获得详细可视化;如果不启用,CloudWatch 将看不到分片级别的问题,导致告警失效。

WriteProvisionedThroughputExceeded 指标

表示生产者发送数据的速度超过了分片的接受能力,导致写入被拒绝,可能出现数据丢失并触发重试。

CloudWatch 告警的目的

将指标监控转化为可操作的警报。告警配置:

  • comparison_operator = "GreaterThanThreshold"
  • threshold = 1
  • evaluation_periods = 1
  • period = 60(秒)
  • statistic = "Sum"

含义:每分钟统计写入吞吐错误的次数总和;如果总和超过 1,则立即触发告警。

为什么要使用 Dimensions(维度)?

dimensions = {
  StreamName = aws_kinesis_stream.xfusion_kinesis.name
}

确保告警仅监控 此特定流,而不是账户中所有的 Kinesis 流。

terraform apply 时会发生什么?

  1. Terraform 创建 Kinesis 流。
  2. 启用分片级指标。
  3. Terraform 创建 CloudWatch 告警。
  4. 告警立即开始监控。
  5. Terraform 将资源记录在状态文件中。
  6. 输出值(kke_kinesis_stream_namekke_kinesis_alarm_name)被显示。

常见错误需避免

  • 忘记启用 shard_level_metrics
  • 使用了错误的指标命名空间。
  • 漏掉 StreamName 维度。
  • 设置了错误的告警阈值。
  • main.tfoutputs.tf 之外创建了额外的 .tf 文件。

资源与后续步骤

致谢

0 浏览
Back to Blog

相关文章

阅读更多 »

UX/UI 排版

Typography 是指什么?- 使用哪种字体 - 在什么位置多大 - 多粗 - 行间距 - …