cfn-guardian 0.6.2 → 0.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/cfnguardian.rb +4 -4
- data/lib/cfnguardian/compile.rb +1 -0
- data/lib/cfnguardian/config/defaults.yaml +9 -0
- data/lib/cfnguardian/models/alarm.rb +34 -0
- data/lib/cfnguardian/resources/amazonmq_rabbitmq.rb +136 -0
- data/lib/cfnguardian/resources/redshift_cluster.rb +2 -2
- data/lib/cfnguardian/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7998606f2ce8404ce0b55dddb9e5d1f4936cd5529364e0b909b1ea3133163ac8
|
4
|
+
data.tar.gz: 82f582858ae75993fc77966e2ae42d9142a1b16a428f74f67f5c1afb2b74854e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f3bda3d2c3c6665749843206c10f3260a5862d87b9f8e066c17eb2b52b996a2911dd619435a16f52336c6aa534a2a0cc39caa03859f1f5f32f6b31182736b44c
|
7
|
+
data.tar.gz: '0665209c6f4e74710383cf37be0a63446e38ed1b89fe6072b8efd030b0b4a010e31f7b54bfed456ea0bd866929b8d769b77506de2e4b5199357bd91fc8ae6213'
|
data/README.md
CHANGED
data/lib/cfnguardian.rb
CHANGED
@@ -50,7 +50,7 @@ module CfnGuardian
|
|
50
50
|
compiler = CfnGuardian::Compile.new(options[:config])
|
51
51
|
compiler.get_resources
|
52
52
|
compiler.compile_templates(s3.bucket,s3.path)
|
53
|
-
logger.info "
|
53
|
+
logger.info "Cloudformation templates compiled successfully in out/ directory"
|
54
54
|
if options[:validate]
|
55
55
|
s3.create_bucket_if_not_exists()
|
56
56
|
validator = CfnGuardian::Validate.new(s3.bucket)
|
@@ -58,7 +58,7 @@ module CfnGuardian
|
|
58
58
|
logger.error("One or more templates failed to validate")
|
59
59
|
exit(1)
|
60
60
|
else
|
61
|
-
logger.info "
|
61
|
+
logger.info "Cloudformation templates were validated successfully"
|
62
62
|
end
|
63
63
|
end
|
64
64
|
logger.warn "AWS cloudwatch alarms defined in the templates will cost roughly $#{'%.2f' % compiler.cost} per month"
|
@@ -96,7 +96,7 @@ module CfnGuardian
|
|
96
96
|
compiler.get_resources
|
97
97
|
compiler.compile_templates(s3.bucket,s3.path)
|
98
98
|
parameters = compiler.load_parameters(options)
|
99
|
-
logger.info "
|
99
|
+
logger.info "Cloudformation templates compiled successfully in out/ directory"
|
100
100
|
|
101
101
|
s3.create_bucket_if_not_exists
|
102
102
|
validator = CfnGuardian::Validate.new(s3.bucket)
|
@@ -104,7 +104,7 @@ module CfnGuardian
|
|
104
104
|
logger.error("One or more templates failed to validate")
|
105
105
|
exit(1)
|
106
106
|
else
|
107
|
-
logger.info "
|
107
|
+
logger.info "Cloudformation templates were validated successfully"
|
108
108
|
end
|
109
109
|
|
110
110
|
deployer = CfnGuardian::Deploy.new(options,s3.bucket,parameters)
|
data/lib/cfnguardian/compile.rb
CHANGED
@@ -36,6 +36,7 @@ require 'cfnguardian/resources/sftp'
|
|
36
36
|
require 'cfnguardian/resources/internal_sftp'
|
37
37
|
require 'cfnguardian/resources/tls'
|
38
38
|
require 'cfnguardian/resources/azure_file'
|
39
|
+
require 'cfnguardian/resources/amazonmq_rabbitmq'
|
39
40
|
require 'cfnguardian/version'
|
40
41
|
require 'cfnguardian/error'
|
41
42
|
|
@@ -1,6 +1,15 @@
|
|
1
1
|
Resources:
|
2
2
|
AmazonMQBroker:
|
3
3
|
- Id: Default
|
4
|
+
AmazonMQRabbitMQBroker:
|
5
|
+
- Id: Default
|
6
|
+
AmazonMQRabbitMQNode:
|
7
|
+
- Id: Default
|
8
|
+
Node: Default
|
9
|
+
AmazonMQRabbitMQQueue:
|
10
|
+
- Id: Default
|
11
|
+
Queue: Default
|
12
|
+
Vhost: Default
|
4
13
|
ApiGateway:
|
5
14
|
- Id: Default
|
6
15
|
ApplicationTargetGroup:
|
@@ -94,6 +94,40 @@ module CfnGuardian
|
|
94
94
|
@dimensions = { Broker: resource['Id'] }
|
95
95
|
end
|
96
96
|
end
|
97
|
+
|
98
|
+
class AmazonMQRabbitMQBrokerAlarm < BaseAlarm
|
99
|
+
def initialize(resource)
|
100
|
+
super(resource)
|
101
|
+
@group = 'AmazonMQRabbitMQBroker'
|
102
|
+
@namespace = 'AWS/AmazonMQ'
|
103
|
+
@dimensions = { Broker: resource['Id'] }
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
class AmazonMQRabbitMQNodeAlarm < BaseAlarm
|
108
|
+
def initialize(resource)
|
109
|
+
super(resource)
|
110
|
+
@group = 'AmazonMQRabbitMQNode'
|
111
|
+
@namespace = 'AWS/AmazonMQ'
|
112
|
+
@dimensions = {
|
113
|
+
Broker: resource['Id'],
|
114
|
+
Node: resource['Node']
|
115
|
+
}
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
class AmazonMQRabbitMQQueueAlarm < BaseAlarm
|
120
|
+
def initialize(resource)
|
121
|
+
super(resource)
|
122
|
+
@group = 'AmazonMQRabbitMQQueue'
|
123
|
+
@namespace = 'AWS/AmazonMQ'
|
124
|
+
@dimensions = {
|
125
|
+
Broker: resource['Id'],
|
126
|
+
Queue: resource['Queue'],
|
127
|
+
VirtualHost: resource['Vhost']
|
128
|
+
}
|
129
|
+
end
|
130
|
+
end
|
97
131
|
|
98
132
|
class CloudFrontDistributionAlarm < BaseAlarm
|
99
133
|
def initialize(resource)
|
@@ -0,0 +1,136 @@
|
|
1
|
+
module CfnGuardian::Resource
|
2
|
+
class AmazonMQRabbitMQBroker < Base
|
3
|
+
|
4
|
+
def default_alarms
|
5
|
+
alarm = CfnGuardian::Models::AmazonMQRabbitMQBrokerAlarm.new(@resource)
|
6
|
+
alarm.name = 'ConnectionCountCritical'
|
7
|
+
alarm.metric_name = 'ConnectionCount'
|
8
|
+
alarm.comparison_operator = 'GreaterThanThreshold'
|
9
|
+
alarm.statistic = 'Maximum'
|
10
|
+
alarm.threshold = 50
|
11
|
+
alarm.evaluation_periods = 5
|
12
|
+
alarm.treat_missing_data = 'notBreaching'
|
13
|
+
@alarms.push(alarm)
|
14
|
+
|
15
|
+
alarm = CfnGuardian::Models::AmazonMQRabbitMQBrokerAlarm.new(@resource)
|
16
|
+
alarm.name = 'ConnectionCountWarn'
|
17
|
+
alarm.metric_name = 'ConnectionCount'
|
18
|
+
alarm.comparison_operator = 'GreaterThanThreshold'
|
19
|
+
alarm.statistic = 'Maximum'
|
20
|
+
alarm.threshold = 25
|
21
|
+
alarm.evaluation_periods = 5
|
22
|
+
alarm.treat_missing_data = 'notBreaching'
|
23
|
+
alarm.alarm_action = 'Warning'
|
24
|
+
@alarms.push(alarm)
|
25
|
+
|
26
|
+
alarm = CfnGuardian::Models::AmazonMQRabbitMQBrokerAlarm.new(@resource)
|
27
|
+
alarm.name = 'MessageCountCritical'
|
28
|
+
alarm.metric_name = 'MessageCount'
|
29
|
+
alarm.comparison_operator = 'GreaterThanThreshold'
|
30
|
+
alarm.statistic = 'Maximum'
|
31
|
+
alarm.threshold = 500
|
32
|
+
alarm.evaluation_periods = 5
|
33
|
+
alarm.treat_missing_data = 'notBreaching'
|
34
|
+
@alarms.push(alarm)
|
35
|
+
|
36
|
+
alarm = CfnGuardian::Models::AmazonMQRabbitMQBrokerAlarm.new(@resource)
|
37
|
+
alarm.name = 'MessageCountWarn'
|
38
|
+
alarm.metric_name = 'MessageCount'
|
39
|
+
alarm.comparison_operator = 'GreaterThanThreshold'
|
40
|
+
alarm.statistic = 'Maximum'
|
41
|
+
alarm.threshold = 250
|
42
|
+
alarm.evaluation_periods = 5
|
43
|
+
alarm.treat_missing_data = 'notBreaching'
|
44
|
+
alarm.alarm_action = 'Warning'
|
45
|
+
@alarms.push(alarm)
|
46
|
+
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
class AmazonMQRabbitMQQueue < Base
|
51
|
+
|
52
|
+
def default_alarms
|
53
|
+
|
54
|
+
alarm = CfnGuardian::Models::AmazonMQRabbitMQQueueAlarm.new(@resource)
|
55
|
+
alarm.name = 'MessageCountHighWarn'
|
56
|
+
alarm.metric_name = 'MessageCount'
|
57
|
+
alarm.comparison_operator = 'GreaterThanThreshold'
|
58
|
+
alarm.statistic = 'Maximum'
|
59
|
+
alarm.threshold = 100
|
60
|
+
alarm.evaluation_periods = 5
|
61
|
+
alarm.treat_missing_data = 'notBreaching'
|
62
|
+
alarm.alarm_action = 'Warning'
|
63
|
+
@alarms.push(alarm)
|
64
|
+
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
class AmazonMQRabbitMQNode < Base
|
69
|
+
|
70
|
+
def default_alarms
|
71
|
+
alarm = CfnGuardian::Models::AmazonMQRabbitMQNodeAlarm.new(@resource)
|
72
|
+
alarm.name = 'SystemCpuUtilizationCritical'
|
73
|
+
alarm.metric_name = 'SystemCpuUtilization'
|
74
|
+
alarm.comparison_operator = 'GreaterThanThreshold'
|
75
|
+
alarm.statistic = 'Maximum'
|
76
|
+
alarm.threshold = 95
|
77
|
+
alarm.evaluation_periods = 10
|
78
|
+
alarm.treat_missing_data = 'notBreaching'
|
79
|
+
@alarms.push(alarm)
|
80
|
+
|
81
|
+
alarm = CfnGuardian::Models::AmazonMQRabbitMQNodeAlarm.new(@resource)
|
82
|
+
alarm.name = 'SystemCpuUtilizationHighBase'
|
83
|
+
alarm.metric_name = 'SystemCpuUtilization'
|
84
|
+
alarm.comparison_operator = 'GreaterThanThreshold'
|
85
|
+
alarm.statistic = 'Maximum'
|
86
|
+
alarm.threshold = 75
|
87
|
+
alarm.evaluation_periods = 30
|
88
|
+
alarm.treat_missing_data = 'notBreaching'
|
89
|
+
alarm.alarm_action = 'Warning'
|
90
|
+
@alarms.push(alarm)
|
91
|
+
|
92
|
+
alarm = CfnGuardian::Models::AmazonMQRabbitMQNodeAlarm.new(@resource)
|
93
|
+
alarm.name = 'RabbitMQMemUsedCritical'
|
94
|
+
alarm.metric_name = 'RabbitMQMemUsed'
|
95
|
+
alarm.comparison_operator = 'GreaterThanThreshold'
|
96
|
+
alarm.statistic = 'Maximum'
|
97
|
+
alarm.threshold = 390000000
|
98
|
+
alarm.evaluation_periods = 5
|
99
|
+
alarm.treat_missing_data = 'notBreaching'
|
100
|
+
@alarms.push(alarm)
|
101
|
+
|
102
|
+
alarm = CfnGuardian::Models::AmazonMQRabbitMQNodeAlarm.new(@resource)
|
103
|
+
alarm.name = 'RabbitMQMemUsedWarn'
|
104
|
+
alarm.metric_name = 'RabbitMQMemUsed'
|
105
|
+
alarm.comparison_operator = 'GreaterThanThreshold'
|
106
|
+
alarm.statistic = 'Maximum'
|
107
|
+
alarm.threshold = 350000000
|
108
|
+
alarm.evaluation_periods = 5
|
109
|
+
alarm.treat_missing_data = 'notBreaching'
|
110
|
+
alarm.alarm_action = 'Warning'
|
111
|
+
@alarms.push(alarm)
|
112
|
+
|
113
|
+
alarm = CfnGuardian::Models::AmazonMQRabbitMQNodeAlarm.new(@resource)
|
114
|
+
alarm.name = 'RabbitMQDiskFreeLimitCritical'
|
115
|
+
alarm.metric_name = 'RabbitMQDiskFreeLimit'
|
116
|
+
alarm.comparison_operator = 'LessThanThreshold'
|
117
|
+
alarm.statistic = 'Maximum'
|
118
|
+
alarm.threshold = 1200000000
|
119
|
+
alarm.evaluation_periods = 5
|
120
|
+
alarm.treat_missing_data = 'notBreaching'
|
121
|
+
@alarms.push(alarm)
|
122
|
+
|
123
|
+
alarm = CfnGuardian::Models::AmazonMQRabbitMQNodeAlarm.new(@resource)
|
124
|
+
alarm.name = 'RabbitMQDiskFreeLimitWarn'
|
125
|
+
alarm.metric_name = 'RabbitMQDiskFreeLimit'
|
126
|
+
alarm.comparison_operator = 'LessThanThreshold'
|
127
|
+
alarm.statistic = 'Maximum'
|
128
|
+
alarm.threshold = 1200000000
|
129
|
+
alarm.evaluation_periods = 5
|
130
|
+
alarm.treat_missing_data = 'notBreaching'
|
131
|
+
alarm.alarm_action = 'Warning'
|
132
|
+
@alarms.push(alarm)
|
133
|
+
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
@@ -20,9 +20,9 @@ module CfnGuardian::Resource
|
|
20
20
|
alarm = CfnGuardian::Models::RedshiftClusterAlarm.new(@resource)
|
21
21
|
alarm.name = 'UnHealthyCluster'
|
22
22
|
alarm.metric_name = 'HealthStatus'
|
23
|
-
alarm.
|
23
|
+
alarm.comparison_operator = 'LessThanThreshold'
|
24
|
+
alarm.threshold = 1
|
24
25
|
alarm.evaluation_periods = 10
|
25
|
-
alarm.treat_missing_data = 'notBreaching'
|
26
26
|
@alarms.push(alarm)
|
27
27
|
end
|
28
28
|
|
data/lib/cfnguardian/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cfn-guardian
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Guslington
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-02-
|
11
|
+
date: 2021-02-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -271,6 +271,7 @@ files:
|
|
271
271
|
- lib/cfnguardian/models/event_subscription.rb
|
272
272
|
- lib/cfnguardian/models/metric_filter.rb
|
273
273
|
- lib/cfnguardian/resources/amazonmq_broker.rb
|
274
|
+
- lib/cfnguardian/resources/amazonmq_rabbitmq.rb
|
274
275
|
- lib/cfnguardian/resources/apigateway.rb
|
275
276
|
- lib/cfnguardian/resources/application_targetgroup.rb
|
276
277
|
- lib/cfnguardian/resources/autoscaling_group.rb
|