对 dynamodb 使用 cloudwatch 指标的一些疑问
Some doubts using cloudwatch metrics for dynamodb
我创建了一个 DynamoDB table。
现在我正在尝试创建 Cloudwatch 警报,以便在 table 的请求超过 80% 达 1 小时时发送 SNS 通知(当我们使用 AWS 管理创建 DynamoDB table 时出现控制台)。
我的疑惑是:
我需要创建两个云手表闹钟,如下代码?或者有一种方法可以只创建一个包含两个指标的警报吗?
另外,对于这个例子,我尝试做 Sum 是正确的指标吗?
当我们使用 AWS 管理控制台创建一个 table 时,当 table 的请求超过 80% 时,它似乎会创建一个云监视警报,还会出现 SNS 通知将在以下时间发送投注:
读取消耗的容量单位 > 1
或
消耗的写入容量单位 > 1
我对这部分有点困惑,当读取容量单位消耗和写入容量单位消耗 > 1 或当 table 请求超过 80% 持续 1 小时时,将发送 SNS 通知?或者是同一件事?如果1读1写统一对应每秒1读1写是一样的,当消耗的读写容量单位>1时,如果我们配置只想要1个单位呢? Cloudwatch 警报何时启动?
def createCW(topicArn, tableName):
cloudwatch = boto.ec2.cloudwatch.connect_to_region("us-east-1")
t = time.localtime(time.time())
alarmName1 = "ConsumedReadCapacityUnits"
alarmName2 = "ConsumedWriteCapacityUnits"
metric1 = cloudwatch.list_metrics(dimensions={'TableName':tableName},
metric_name="ConsumedReadCapacityUnits")[0]
metric1.create_alarm(name=alarmName1, comparison='>=', threshold=0.8, period=3000,
evaluation_periods=1, statistic='Sum', alarm_actions=[topicArn])
metric2 = cloudwatch.list_metrics(dimensions={'TableName':tableName},
metric_name="ConsumedReadCapacityUnits")[0]
metric2.create_alarm(name=alarmName2, comparison='>=', threshold=0.8, period=3000,
evaluation_periods=1, statistic='Sum', alarm_actions=[topicArn])
CloudWatch 警报是每个指标一个,因此对于代码中的 2 个指标,您需要 2 个警报。顺便说一句,我认为你的代码中有一个错字,两个指标名称都是 "ConsumedReadCapacityUnits",我认为其中一个需要是 "ConsumedWriteCapacityUnits".
是的,Sum 是监控一段时间内消耗的容量单位时使用的正确指标。
这意味着只有当您消耗的容量单位超过 1 个单位时才会发送通知,因为这是容量单位中的最小单位。发送警报的条件仍然是您的“80%”指标。如果您的 table 有 1 个单元用于读取和写入,我认为警报永远不会触发(因为 DynamoDB 无法消耗 0.8 个容量单元)。
我创建了一个 DynamoDB table。
现在我正在尝试创建 Cloudwatch 警报,以便在 table 的请求超过 80% 达 1 小时时发送 SNS 通知(当我们使用 AWS 管理创建 DynamoDB table 时出现控制台)。
我的疑惑是:
我需要创建两个云手表闹钟,如下代码?或者有一种方法可以只创建一个包含两个指标的警报吗?
另外,对于这个例子,我尝试做 Sum 是正确的指标吗?
当我们使用 AWS 管理控制台创建一个 table 时,当 table 的请求超过 80% 时,它似乎会创建一个云监视警报,还会出现 SNS 通知将在以下时间发送投注:
读取消耗的容量单位 > 1
或
消耗的写入容量单位 > 1
我对这部分有点困惑,当读取容量单位消耗和写入容量单位消耗 > 1 或当 table 请求超过 80% 持续 1 小时时,将发送 SNS 通知?或者是同一件事?如果1读1写统一对应每秒1读1写是一样的,当消耗的读写容量单位>1时,如果我们配置只想要1个单位呢? Cloudwatch 警报何时启动?
def createCW(topicArn, tableName):
cloudwatch = boto.ec2.cloudwatch.connect_to_region("us-east-1")
t = time.localtime(time.time())
alarmName1 = "ConsumedReadCapacityUnits"
alarmName2 = "ConsumedWriteCapacityUnits"
metric1 = cloudwatch.list_metrics(dimensions={'TableName':tableName},
metric_name="ConsumedReadCapacityUnits")[0]
metric1.create_alarm(name=alarmName1, comparison='>=', threshold=0.8, period=3000,
evaluation_periods=1, statistic='Sum', alarm_actions=[topicArn])
metric2 = cloudwatch.list_metrics(dimensions={'TableName':tableName},
metric_name="ConsumedReadCapacityUnits")[0]
metric2.create_alarm(name=alarmName2, comparison='>=', threshold=0.8, period=3000,
evaluation_periods=1, statistic='Sum', alarm_actions=[topicArn])
CloudWatch 警报是每个指标一个,因此对于代码中的 2 个指标,您需要 2 个警报。顺便说一句,我认为你的代码中有一个错字,两个指标名称都是 "ConsumedReadCapacityUnits",我认为其中一个需要是 "ConsumedWriteCapacityUnits".
是的,Sum 是监控一段时间内消耗的容量单位时使用的正确指标。
这意味着只有当您消耗的容量单位超过 1 个单位时才会发送通知,因为这是容量单位中的最小单位。发送警报的条件仍然是您的“80%”指标。如果您的 table 有 1 个单元用于读取和写入,我认为警报永远不会触发(因为 DynamoDB 无法消耗 0.8 个容量单元)。