Skip to content

Instantly share code, notes, and snippets.

@it-am
Last active November 7, 2018 04:35
Show Gist options
  • Save it-am/477b84dbeff3c56b37604b076e57c2a3 to your computer and use it in GitHub Desktop.
Save it-am/477b84dbeff3c56b37604b076e57c2a3 to your computer and use it in GitHub Desktop.
cloudformation-windows-cloudwatch-alarms
AWSTemplateFormatVersion: '2010-09-09'
Description: Windows CloudWatch Alarms - CPU Memory Instance and System Status
#------------------------------------------------------------------------------
Parameters:
#------------------------------------------------------------------------------
instanceid:
Description: "Choose an instance id"
Type: AWS::EC2::Instance::Id
instancename:
Description: "Please provide EC2 instance name"
Type: "String"
MinLength: '1'
MaxLength: '50'
criticalsnsarn:
Description: "Please provide an ARN of SNS topic - CRITICAL Type"
Type: "String"
warningsnsarn:
Description: "Please provide an ARN of SNS topic - WARNING Type"
Type: "String"
#------------------------------------------------------------------------------
Resources:
#------------------------------------------------------------------------------
CPUAlarmWARNING:
Type: AWS::CloudWatch::Alarm
DeletionPolicy: Retain
Properties:
AlarmDescription: !Sub "${instancename} - ${instanceid} - High CPU Usage 90%"
AlarmActions:
- !Ref warningsnsarn
OKActions:
- !Ref warningsnsarn
MetricName: CPUUtilization
Namespace: AWS/EC2
Statistic: Average
Period: '900'
EvaluationPeriods: '1'
Threshold: '90'
ComparisonOperator: GreaterThanOrEqualToThreshold
Dimensions:
- Name: InstanceId
Value: !Ref instanceid
#------------------------------------------------------------------------------
CPUAlarmCRITICAL:
Type: AWS::CloudWatch::Alarm
DeletionPolicy: Retain
Properties:
AlarmDescription: !Sub "${instancename} - ${instanceid} - High CPU Usage 95%"
AlarmActions:
- !Ref criticalsnsarn
OKActions:
- !Ref criticalsnsarn
MetricName: CPUUtilization
Namespace: AWS/EC2
Statistic: Average
Period: '900'
EvaluationPeriods: '2'
Threshold: '95'
ComparisonOperator: GreaterThanOrEqualToThreshold
Dimensions:
- Name: InstanceId
Value: !Ref instanceid
#------------------------------------------------------------------------------
MemoryAlarmWARNING:
Type: AWS::CloudWatch::Alarm
DeletionPolicy: Retain
Properties:
AlarmDescription: !Sub "${instancename} - ${instanceid} - High Memory Usage 90%"
AlarmActions:
- !Ref warningsnsarn
OKActions:
- !Ref warningsnsarn
MetricName: "Memory % Committed Bytes In Use"
Namespace: CWAgent
Statistic: Average
Period: '900'
EvaluationPeriods: '1'
Threshold: '90'
ComparisonOperator: GreaterThanOrEqualToThreshold
Dimensions:
- Name: InstanceId
Value: !Ref instanceid
- Name: objectname
Value: Memory
#------------------------------------------------------------------------------
MemoryAlarmCRITICAL:
Type: AWS::CloudWatch::Alarm
DeletionPolicy: Retain
Properties:
AlarmDescription: !Sub "${instancename} - ${instanceid} - High Memory Usage 95%"
AlarmActions:
- !Ref criticalsnsarn
OKActions:
- !Ref criticalsnsarn
MetricName: "Memory % Committed Bytes In Use"
Namespace: CWAgent
Statistic: Average
Period: '900'
EvaluationPeriods: '2'
Threshold: '95'
ComparisonOperator: GreaterThanOrEqualToThreshold
Dimensions:
- Name: InstanceId
Value: !Ref instanceid
- Name: objectname
Value: Memory
#------------------------------------------------------------------------------
SystemStatusAlarmCRITICAL:
Type: AWS::CloudWatch::Alarm
DeletionPolicy: Retain
Properties:
AlarmDescription: !Sub "${instancename} - ${instanceid} - instance recovery process has been triggered because of failed System Status Check"
Namespace: AWS/EC2
MetricName: StatusCheckFailed_System
Statistic: Minimum
Period: '60'
EvaluationPeriods: '2'
ComparisonOperator: GreaterThanThreshold
Threshold: '0'
AlarmActions:
- !Sub "arn:aws:automate:${AWS::Region}:ec2:recover"
- !Ref warningsnsarn
OKActions:
- !Ref warningsnsarn
Dimensions:
- Name: InstanceId
Value: !Ref instanceid
#------------------------------------------------------------------------------
InstanceStatusAlarmCRITICAL:
Type: AWS::CloudWatch::Alarm
DeletionPolicy: Retain
Properties:
AlarmDescription: !Sub "${instancename} - ${instanceid} - Instance Status Check Failed - please investigate. Troubleshooting: https://goo.gl/Ea27Gd"
Namespace: AWS/EC2
MetricName: StatusCheckFailed_Instance
Statistic: Minimum
Period: '60'
EvaluationPeriods: '3'
ComparisonOperator: GreaterThanThreshold
Threshold: '0'
AlarmActions:
- !Ref criticalsnsarn
OKActions:
- !Ref criticalsnsarn
Dimensions:
- Name: InstanceId
Value: !Ref instanceid
#------------------------------------------------------------------------------
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment