Skip to content

Commit df43f2c

Browse files
Add EC2 capacity reservation tag discovery (#2)
2 parents 4d6a813 + d6adc14 commit df43f2c

4 files changed

Lines changed: 47 additions & 1 deletion

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ Only the latest version gets security updates. We won't support older versions.
7878
* `AWS/DynamoDB` - NoSQL Key-Value Database
7979
* `AWS/EBS` - Elastic Block Storage
8080
* `AWS/EC2` - Elastic Compute Cloud
81+
* `AWS/EC2CapacityReservations` - EC2 Capacity Reservations
8182
* `AWS/EC2Spot` - Elastic Compute Cloud for Spot Instances
8283
* `AWS/ECR` - Elastic Container Registry
8384
* `AWS/ECS` - Elastic Container Service (Service Metrics)
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
apiVersion: v1alpha1
2+
discovery:
3+
exportedTagsOnMetrics:
4+
AWS/EC2CapacityReservations:
5+
- Name
6+
- Environment
7+
jobs:
8+
- type: AWS/EC2CapacityReservations
9+
regions:
10+
- us-east-1
11+
searchTags:
12+
- key: Environment
13+
value: production
14+
dimensionNameRequirements:
15+
- CapacityReservationId
16+
recentlyActiveOnly: true
17+
period: 300
18+
length: 600
19+
metrics:
20+
- name: UsedInstanceCount
21+
statistics: [Average]
22+
- name: AvailableInstanceCount
23+
statistics: [Average]
24+
- name: TotalInstanceCount
25+
statistics: [Average]
26+
- name: InstanceUtilization
27+
statistics: [Average]

pkg/config/services.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -372,8 +372,11 @@ var SupportedServices = serviceConfigs{
372372
{
373373
Namespace: "AWS/EC2CapacityReservations",
374374
Alias: "ec2CapacityReservations",
375+
ResourceFilters: []*string{
376+
aws.String("ec2:capacity-reservation"),
377+
},
375378
DimensionRegexps: []*regexp.Regexp{
376-
regexp.MustCompile(":capacity-reservation/(?P<CapacityReservationId>)$"),
379+
regexp.MustCompile(":capacity-reservation/(?P<CapacityReservationId>[^/]+)$"),
377380
},
378381
},
379382
{

pkg/config/services_test.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,18 @@ func TestSupportedServices(t *testing.T) {
4343
}
4444
}
4545
}
46+
47+
func TestEC2CapacityReservationsService(t *testing.T) {
48+
svc := SupportedServices.GetService("AWS/EC2CapacityReservations")
49+
require.NotNil(t, svc)
50+
require.Len(t, svc.ResourceFilters, 1)
51+
require.Equal(t, "ec2:capacity-reservation", aws.StringValue(svc.ResourceFilters[0]))
52+
53+
dimensionRegexps := svc.ToModelDimensionsRegexp()
54+
require.Len(t, dimensionRegexps, 1)
55+
require.Equal(t, []string{"CapacityReservationId"}, dimensionRegexps[0].DimensionsNames)
56+
57+
match := dimensionRegexps[0].Regexp.FindStringSubmatch("arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234abcd56EXAMPLE")
58+
require.Len(t, match, 2)
59+
require.Equal(t, "cr-1234abcd56EXAMPLE", match[1])
60+
}

0 commit comments

Comments
 (0)