# # This sample adds Amazon CloudWatch alarms to the AWS Elastic Beanstalk Elastic RDS database. # # To configure the Alarm, you should create a separate configuration file that contains # an option-settings section such as the following (all properties are showing the default values). # # option_settings: # "aws:elasticbeanstalk:customoption": # RDSAlarmEmail: "nobody@amazon.com" # RDSCPUThresholdPercent: "50" # RDSFreeStorage: "1000000000" # RDSReadLatency: "0.1" # RDSWriteLatency: "0.1" # ## Resources: RDSAlarmTopic: Type: AWS::SNS::Topic Properties: Subscription: - Endpoint: Fn::GetOptionSetting: OptionName: RDSAlarmEmail DefaultValue: "nobody@amazon.com" Protocol: email RDSCPUAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmDescription: { "Fn::Join" : ["", [{ "Ref" : "AWSEBEnvironmentName" }, ": HIGH RDS CPU utilization." ]]} Namespace: AWS/RDS MetricName: CPUUtilization Dimensions: - Name: DBInstanceIdentifier Value : { "Ref" : "AWSEBRDSDatabase" } Statistic: Sum Period: 300 EvaluationPeriods: 1 Threshold: Fn::GetOptionSetting: OptionName: RDSCPUThresholdPercent # 50% CPU utilization DefaultValue: "50" ComparisonOperator: GreaterThanThreshold AlarmActions: - Ref: RDSAlarmTopic InsufficientDataActions: - Ref: RDSAlarmTopic RDSFreeSpaceAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmDescription: { "Fn::Join" : ["", [{ "Ref" : "AWSEBEnvironmentName" }, ": LOW free storage space." ]]} Namespace: AWS/RDS MetricName: FreeStorageSpace Dimensions: - Name: DBInstanceIdentifier Value : { "Ref" : "AWSEBRDSDatabase" } Statistic: Average Period: 300 EvaluationPeriods: 1 Threshold: Fn::GetOptionSetting: OptionName: RDSFreeStorage # Alarm when less than 1G of space is left DefaultValue: 1000000000 ComparisonOperator: LessThanOrEqualToThreshold AlarmActions: - Ref: RDSAlarmTopic InsufficientDataActions: - Ref: RDSAlarmTopic RDSReadLatencyAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmDescription: { "Fn::Join" : ["", [{ "Ref" : "AWSEBEnvironmentName" }, ": HIGH read latency." ]]} Namespace: AWS/RDS MetricName: ReadLatency Dimensions: - Name: DBInstanceIdentifier Value : { "Ref" : "AWSEBRDSDatabase" } Statistic: Average Period: 300 EvaluationPeriods: 1 Threshold: Fn::GetOptionSetting: OptionName: RDSReadLatency # 100ms DefaultValue: 0.1 ComparisonOperator: GreaterThanThreshold AlarmActions: - Ref: RDSAlarmTopic InsufficientDataActions: - Ref: RDSAlarmTopic RDSWriteLatencyAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmDescription: { "Fn::Join" : ["", [{ "Ref" : "AWSEBEnvironmentName" }, ": HIGH write latency." ]]} Namespace: AWS/RDS MetricName: WriteLatency Dimensions: - Name: DBInstanceIdentifier Value : { "Ref" : "AWSEBRDSDatabase" } Statistic: Average Period: 300 EvaluationPeriods: 1 Threshold: Fn::GetOptionSetting: OptionName: RDSWriteLatency # 100ms DefaultValue: 0.1 ComparisonOperator: GreaterThanThreshold AlarmActions: - Ref: RDSAlarmTopic InsufficientDataActions: - Ref: RDSAlarmTopic