【CloudFormation】CloudWatchダッシュボードを一発で作成する
本記事では、CloudFormationによる、CloudWatchダッシュボードの作成について、コード付きで解説します。

前提
RDSとALBは事前に作成する。
各リソースの名前は下記。
・ALB:test-alb
・RDS:test-rds
説明
コード内のPropertyのうち、x,yに値を入れることで、各Widgetの縦横幅を決めることが出来る。
今回は横幅12、縦幅6で作成する。
Widgetを追加する場合、x,yの値の変更とmetricsを変更することで実現可能。
各サービスのmetrics、名前空間(namespace)は [1] のようなドキュメントから確認することが出来る。
[1] Application Load Balancer の CloudWatch メトリクス
RDSとして、下記メトリックをダッシュボードに載せる。
・CPUUtilization
・FreeableMemory
ALBとして、下記メトリックをダッシュボードに載せる。
・HTTPCode_ELB_4XX_Count
・HTTPCode_ELB_5XX_Count
実際のコード
AWSTemplateFormatVersion: '2010-09-09'
#####################################################################
#
# Parameters
#
#####################################################################
Parameters:
AlbLoadBalancer:
Description: AlbLoadBalancer
Type: String
Default: app/test-alb/<alb-id>
RdsDBInstanceIdentifier:
Description: RDS DBInstanceIdentifier
Type: String
Default: test-rds
#####################################################################
#
# CloudWatch Dashboard
#
#####################################################################
Resources:
CWDashboard:
Type: AWS::CloudWatch::Dashboard
Properties:
DashboardName: !Sub '${AWS::StackName}'
DashboardBody: !Sub |
{
"widgets": [
{
"type": "metric",
"x": 0,
"y": 0,
"width": 12,
"height": 6,
"properties": {
"view": "timeSeries",
"stacked": false,
"metrics": [
[ "AWS/RDS", "CPUUtilization", "DBInstanceIdentifier", "${RdsDBInstanceIdentifier}" ]
],
"region": "ap-northeast-1",
"title": "RDS CPU Utilization"
}
},
{
"type": "metric",
"x": 12,
"y": 6,
"width": 12,
"height": 6,
"properties": {
"view": "timeSeries",
"stacked": false,
"metrics": [
[ "AWS/RDS", "FreeableMemory", "DBInstanceIdentifier", "${RdsDBInstanceIdentifier}" ]
],
"region": "ap-northeast-1",
"title": "RDS FreeableMemory"
}
},
{
"type": "metric",
"x": 0,
"y": 96,
"width": 12,
"height": 6,
"properties": {
"view": "timeSeries",
"stacked": false,
"metrics": [
[ "AWS/ApplicationELB", "HTTPCode_ELB_4XX_Count", "LoadBalancer", "${AlbLoadBalancer}" ]
],
"region": "ap-northeast-1",
"title": "HTTPCode_ELB_4XX_Count"
}
},
{
"type": "metric",
"x": 12,
"y": 96,
"width": 12,
"height": 6,
"properties": {
"view": "timeSeries",
"stacked": false,
"metrics": [
[ "AWS/ApplicationELB", "HTTPCode_ELB_5XX_Count", "LoadBalancer", "${AlbLoadBalancer}" ]
],
"region": "ap-northeast-1",
"title": "HTTPCode_ELB_5XX_Count"
}
}
]
}