【问题标题】:How to delete Cloudwatch alarms through AWS-CLI?如何通过 AWS-CLI 删除 Cloudwatch 警报?
【发布时间】:2021-07-13 14:21:40
【问题描述】:

我必须在 INSUFFICIENT_STATE 中删除几乎 3K+ 的 Cloudwatch 警报。

所以为了解决这个问题,我 - 1.通过终端取出所有处于INSUFFICIENT状态的告警列表

aws cloudwatch describe-alarms --query 'MetricAlarms[*].AlarmName' --state-value INSUFFICIENT_DATA --output text > list.csv
  1. 仅通过终端针对 for 循环运行文件
for i in `cat list.csv` ;do aws cloudwatch delete-alarms --alarm-names $i ;done
  1. 运行此命令后,警报不会从 AWS 中删除。我用列表中的 5 个警报测试了脚本,并且同样有效。但这不适用于其中包含更多警报名称的文件。

注意-我在运行命令时没有收到任何错误。

【问题讨论】:

  • 文件名中是否有特殊字符或空格?
  • 您能否检查您的 CloudTrail 日志并确保已收到命令?
  • delete-alarms 的 tps 限制相当低,您可能会受到限制。如果循环,请尝试在每次迭代中添加 0.5 秒的睡眠时间。
  • 文件名没有特殊字符,已验证。 @大卫韦伯斯特
  • CloudTrail 日志确实显示收到的命令@Maurice

标签: amazon-web-services aws-cli amazon-cloudwatch


【解决方案1】:

正如 Dejan 所建议的,rate limit for deleteAlarms 是每秒 3 个事务。该脚本在一小时内删除了四千条警报:

oldIFS=$IFS; IFS=$'\t'
for alarm in $(aws cloudwatch describe-alarms --query 'MetricAlarms[*].AlarmName' --state-value INSUFFICIENT_DATA --output text); do                         
  echo $alarm; 
  aws cloudwatch delete-alarms --alarm-names $alarm 1>/dev/null; 
  sleep 0.5;
done
IFS=$oldIFS

【讨论】:

    猜你喜欢
    • 2021-05-25
    • 2019-07-14
    • 1970-01-01
    • 2022-11-07
    • 1970-01-01
    • 2021-10-19
    • 2015-10-12
    • 1970-01-01
    • 2021-10-30
    相关资源
    最近更新 更多