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告警,已经比较熟悉了。

参考

相关推荐
OpenClawCSDN12 分钟前
2026年腾讯云如何安装和集成Hermes Agent/OpenClaw?深度剖析
数据库·阿里云·云计算·腾讯云·京东云
SNOWPIAOP25 分钟前
Claude Code + CCR + AWS Bedrock 踩坑复盘:上下文超限、模型路由、Mantle 端点与 Qwen3 Coder Next
云计算·claude·aws·上下文·ccr
easy_coder20 小时前
ReAct 进入死循环?用 Harness 把它拉回来
人工智能·架构·云计算
TG_yunshuguoji1 天前
云代理商:DeepSeek V4 重塑云服务 AI 格局 推理成本直降
人工智能·云计算·ai智能体·deepseek v4
小夏子_riotous1 天前
Docker学习路径——10、Docker Compose 一站式编排:从入门到生产级部署
linux·运维·服务器·docker·容器·centos·云计算
byoass1 天前
文件版本管理的设计与实现:解决协同编辑丢数据的核心方案
前端·javascript·网络·数据库·安全·云计算
byoass2 天前
自动化任务系列之五:PDF批量转换+自动清理——文件格式规范化工作流
网络·人工智能·安全·云计算
Flynt2 天前
AWS WorkMail + App Runner:服务退役时的迁移检查清单
app·aws
byoass2 天前
自动化任务系列之六:自动整理文件——按时间/关键字分类归档实战
运维·网络·安全·自动化·云计算
zjeweler2 天前
阿里云服务器利用宝塔搭建个人博客网站
服务器·阿里云·云计算