Skip to content

Commit a1e83f6

Browse files
committed
Add opt-in default metrics to CloudWatch agent
Report on memory and disk usage
1 parent dc2e2bc commit a1e83f6

File tree

3 files changed

+38
-4
lines changed

3 files changed

+38
-4
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#!/bin/bash
2+
# shellcheck disable=SC2094
3+
set -euo pipefail
4+
5+
if [[ "${CLOUDWATCH_ENABLE_METRICS:-false}" == "true" ]]; then
6+
cw_config="/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json"
7+
cat <<<"$(jq \
8+
--arg queue "$BUILDKITE_QUEUE" \
9+
'. + {
10+
metrics: {
11+
metrics_collected: {
12+
mem: {measurement: ["mem_used_percent"], append_dimensions: {BuildkiteQueue: $queue}},
13+
disk: {measurement: ["used_percent"], resources: ["*"], append_dimensions: {BuildkiteQueue: $queue}}
14+
},
15+
append_dimensions: {
16+
AutoScalingGroupName: "${aws:AutoScalingGroupName}"
17+
}
18+
}
19+
}' $cw_config)" >$cw_config
20+
fi
21+
22+
# Enable and start amazon-cloudwatch-agent
23+
systemctl enable amazon-cloudwatch-agent
24+
systemctl start amazon-cloudwatch-agent

packer/linux/scripts/install-cloudwatch-agent.sh

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,12 @@
22

33
set -eu -o pipefail
44

5-
65
echo "Installing cloudwatch agent..."
76
sudo yum install -y amazon-cloudwatch-agent
87

98
echo "Adding amazon-cloudwatch-agent config..."
109
sudo cp /tmp/conf/cloudwatch-agent/config.json /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
1110

12-
echo "Configuring amazon-cloudwatch-agent to start at boot"
13-
sudo systemctl enable amazon-cloudwatch-agent
14-
1511
# These will send some systemctl service logs (like the buildkite agent and docker) to logfiles
1612
echo "Adding rsyslogd configs..."
1713
sudo cp /tmp/conf/cloudwatch-agent/rsyslog.d/* /etc/rsyslog.d/

templates/aws-stack.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ Metadata:
8181
- InstanceRolePermissionsBoundaryARN
8282
- IMDSv2Tokens
8383
- EnableDetailedMonitoring
84+
- EnableCloudWatchMetrics
8485

8586
- Label:
8687
default: Auto-scaling Configuration
@@ -437,6 +438,14 @@ Parameters:
437438
- "false"
438439
Default: "false"
439440

441+
EnableCloudWatchMetrics:
442+
Type: String
443+
Description: Enable CloudWatch agent metrics
444+
AllowedValues:
445+
- "true"
446+
- "false"
447+
Default: "false"
448+
440449
EnableCostAllocationTags:
441450
Type: String
442451
Description: Enables AWS Cost Allocation tags for all resources in the stack. See https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html
@@ -1050,6 +1059,11 @@ Resources:
10501059
BUILDKITE_ENABLE_INSTANCE_STORAGE="${EnableInstanceStorage}" \
10511060
/usr/local/bin/bk-configure-docker.sh
10521061
--==BOUNDARY==
1062+
Content-Type: text/cloud-boothook; charset="us-ascii"
1063+
CLOUDWATCH_ENABLE_METRICS="${EnableCloudWatchMetrics}" \
1064+
BUILDKITE_QUEUE="${BuildkiteQueue}" \
1065+
/usr/local/bin/bk-configure-cloudwatch-agent.sh
1066+
--==BOUNDARY==
10531067
Content-Type: text/x-shellscript; charset="us-ascii"
10541068
#!/bin/bash -v
10551069
BUILDKITE_STACK_NAME="${AWS::StackName}" \

0 commit comments

Comments
 (0)