AWS EB为AutoScaling组添加告警

问题

需要给EC2添加cpu,内存,磁盘等利用率的监控和告警。这里的指标监控,我直接用AWS CW Agent默认最新监控即可,告警创建,我们可以通过EB代码方式来创建。

前提

  • 已经存在EB环境
  • 已经存在SNS主题

步骤

SNS_TOPIC_ARN:EB环境变量设置

先要在EB环境中配置环境变量:SNS_TOPIC_ARN。如下图:

02cloudwatch.config:启用CW Agent

yaml 复制代码
container_commands:
  start_cloudwatch_agent:
    command: /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl  -m ec2 -s -a fetch-config

这里让CW Agent拉取最新的配置,最新的配置会收集内存和磁盘等指标。拉取成功后,重启CW Agent即可。没必要画蛇添足自己再写自定义指标采集配置代码。

07cw-alarms.config:创建cpu,内存,磁盘告警

yaml 复制代码
Resources:
  CPUAlarmHigh:
    Type: AWS::CloudWatch::Alarm
    Properties:
      AlarmDescription: "CPU > 80% Alarm"
      MetricName: CPUUtilization
      Namespace: AWS/EC2
      Statistic: Average
      Period: 300
      EvaluationPeriods: 1
      Threshold: 80
      ComparisonOperator: GreaterThanThreshold
      Dimensions:
        - Name: AutoScalingGroupName
          Value: { "Ref" : "AWSEBAutoScalingGroup" }
      AlarmActions:
        - "Fn::GetOptionSetting":
            Namespace: aws:elasticbeanstalk:application:environment
            OptionName: SNS_TOPIC_ARN

  MemoryAlarmHigh:
    Type: AWS::CloudWatch::Alarm
    Properties:
      AlarmDescription: "Memory > 80% Alarm"
      MetricName: mem_used_percent
      Namespace: CWAgent
      Statistic: Average
      Period: 300
      EvaluationPeriods: 1
      Threshold: 80
      ComparisonOperator: GreaterThanThreshold
      Dimensions:
        - Name: AutoScalingGroupName
          Value: { "Ref" : "AWSEBAutoScalingGroup" }
      AlarmActions:
        - "Fn::GetOptionSetting":
            Namespace: aws:elasticbeanstalk:application:environment
            OptionName: SNS_TOPIC_ARN

  DiskAlarmHigh:
    Type: AWS::CloudWatch::Alarm
    Properties:
      AlarmDescription: "Disk > 80% Alarm"
      MetricName: disk_used_percent
      Namespace: CWAgent
      Statistic: Average
      Period: 300
      EvaluationPeriods: 1
      Threshold: 80
      ComparisonOperator: GreaterThanThreshold
      Dimensions:
        - Name: AutoScalingGroupName
          Value: { "Ref" : "AWSEBAutoScalingGroup" }
      AlarmActions:
        - "Fn::GetOptionSetting":
            Namespace: aws:elasticbeanstalk:application:environment
            OptionName: SNS_TOPIC_ARN

上面就是3个告警的创建,以及从eb环境变量中取SNS主题ARN。

总结

这里对于我来说最不熟悉的就是从eb配置代码中取eb环境变量方式,即Fn::GetOptionSetting函数的使用。其它CW告警,已经比较熟悉了。

参考

相关推荐
JamesShi1682 小时前
中国云计算市场由阿里云、华为云和腾讯云三大巨头主导,今天给大家分享一下它们之间的区别
云计算
diablobaal2 小时前
云计算学习100天-第102天-Azure入门4
学习·云计算·azure
ZStack开发者社区2 小时前
云边协同 智启未来 | 阿里云 × ZStack 云边一体解决方案正式落地
阿里云·云计算·边缘计算
普通网友2 小时前
阿里云国际版服务器,真的是学生党的性价比之选吗?
后端·python·阿里云·flask·云计算
MonkeyKing_sunyuhua7 小时前
阿里云ECS安装docker compose
阿里云·docker·云计算
亚马逊云开发者8 小时前
试了 8 种方式全失败后,我用双通道架构把 Kiro CLI 变成了 REST API
aws
咕噜签名-铁蛋9 小时前
腾讯云ICP备案:变更主体&备案准备
前端·云计算·腾讯云
翼龙云_cloud10 小时前
阿里云代理商:部署OpenClaw高效办公六式 智能打理日常任务
人工智能·阿里云·云计算·openclaw
亚马逊云开发者12 小时前
两个 AI Agent 互相调用是什么体验?Kiro + OpenClaw 双协议实战,架构评审从 2 天干到 15 分钟
aws
**蓝桉**13 小时前
虚拟化学习笔记
阿里云·云计算