根据RDS存储大小更新cloudwatch告警阈值
Update cloudwatch alarm threshold based on the stoarge size of RDS
我们有一个设置,其中 RDS 通过 Terraform 进行配置,RDS 的 free storage space
指标的 cloudwatch 警报通过 Terraform 设置为 <10% total RDS storage
。 RDS 存储总量是一个静态值。每当存储不足时,我们都会通过 AWS 控制台手动增加 RDS 存储。有没有办法自动更新cloudwatch报警阈值,增加RDS存储后设置为10% of new total storage
?
如果您使用 terraform 代码更新分配的 space,这应该由 terraform 自动更新。 Cloudwatch 本身不了解您正在观看的内容之间的关系 - 它只是在您应用模板时由 Terraform 编程了一个阈值。由于 terraform 代表您执行这两项操作(分配 RDS 实例和设置 cloudwatch 指标),它了解需要设置的内容。但是,使用 AWS 控制台本质上是在绕过地形。当大小增加时,terraform 并不知道 cloudwatch 指标的变化。使用 terraform 应用大小更新应该可以修复警报,具体取决于您设置警报阈值的方式。
虽然被认为是一种反模式,但还有一个替代方案。它被认为是一种反模式,因为让两个不同的进程控制同一资源的配置通常不是一个好主意。但是,如果您坚持要在 terraform 计划之外控制 RDS 的大小,您可以自动化 cloudwatch 指标设置。
根本问题是 FreeSpaceAvailable
RDS 指标只理解字节,而不理解百分比。 Terraform 会为您进行转换,因此您不会看到它。这就是为什么当您在 RDS 控制台中更改分配的 space 时警报不会更改的原因。您可以开发一个简单的 lambda 函数,它使用一个 AWS API(例如 python 的 boto3)来定期查询 RDS 数据库的大小并相应地更新 FreeSpaceAvailable
上的警报。通过让 SNS 通知 SQS 队列有关 RDS 配置的更改,它可以更加复杂,然后可以触发 lambda 评估指标,这将使更新非常快速和高效。您需要应用 IAM 策略,允许 lambda 读取相关 RDS 实例上的数据,并允许更新相关指标。或者,您可以在 AWS 控制台更新后立即手动 运行 然后 运行 它,但在这种情况下,您可以自己手动更新指标。
由于 terraform 已经控制了资源,我仍然不建议使用此路径。
我们有一个设置,其中 RDS 通过 Terraform 进行配置,RDS 的 free storage space
指标的 cloudwatch 警报通过 Terraform 设置为 <10% total RDS storage
。 RDS 存储总量是一个静态值。每当存储不足时,我们都会通过 AWS 控制台手动增加 RDS 存储。有没有办法自动更新cloudwatch报警阈值,增加RDS存储后设置为10% of new total storage
?
如果您使用 terraform 代码更新分配的 space,这应该由 terraform 自动更新。 Cloudwatch 本身不了解您正在观看的内容之间的关系 - 它只是在您应用模板时由 Terraform 编程了一个阈值。由于 terraform 代表您执行这两项操作(分配 RDS 实例和设置 cloudwatch 指标),它了解需要设置的内容。但是,使用 AWS 控制台本质上是在绕过地形。当大小增加时,terraform 并不知道 cloudwatch 指标的变化。使用 terraform 应用大小更新应该可以修复警报,具体取决于您设置警报阈值的方式。
虽然被认为是一种反模式,但还有一个替代方案。它被认为是一种反模式,因为让两个不同的进程控制同一资源的配置通常不是一个好主意。但是,如果您坚持要在 terraform 计划之外控制 RDS 的大小,您可以自动化 cloudwatch 指标设置。
根本问题是 FreeSpaceAvailable
RDS 指标只理解字节,而不理解百分比。 Terraform 会为您进行转换,因此您不会看到它。这就是为什么当您在 RDS 控制台中更改分配的 space 时警报不会更改的原因。您可以开发一个简单的 lambda 函数,它使用一个 AWS API(例如 python 的 boto3)来定期查询 RDS 数据库的大小并相应地更新 FreeSpaceAvailable
上的警报。通过让 SNS 通知 SQS 队列有关 RDS 配置的更改,它可以更加复杂,然后可以触发 lambda 评估指标,这将使更新非常快速和高效。您需要应用 IAM 策略,允许 lambda 读取相关 RDS 实例上的数据,并允许更新相关指标。或者,您可以在 AWS 控制台更新后立即手动 运行 然后 运行 它,但在这种情况下,您可以自己手动更新指标。
由于 terraform 已经控制了资源,我仍然不建议使用此路径。