--- AWSTemplateFormatVersion: 2010-09-09 Description: Reference Architecture to host WordPress on AWS - Creates CloudWatch Dashboard Metadata: Authors: Description: Darryl Osborne (darrylo@amazon.com) License: Description: 'Copyright 2018 Amazon.com, Inc. and its affiliates. All Rights Reserved. SPDX-License-Identifier: MIT-0' AWS::CloudFormation::Interface: ParameterGroups: - Label: default: AWS Resource Parameters Parameters: - ElasticFileSystem - DatabaseCluster - PublicAlbFullName - EfsCreateAlarms - BurstCreditBalanceDecreaseAlarmArn - BurstCreditBalanceIncreaseAlarmArn - CriticalAlarmArn - WarningAlarmArn ParameterLabels: BurstCreditBalanceDecreaseAlarmArn: default: Decrease Alarm Arn BurstCreditBalanceIncreaseAlarmArn: default: Increase Alarm Arn CriticalAlarmArn: default: Critical Alarm Arn DatabaseCluster: default: Amazon RDS Database Cluster ElasticFileSystem: default: Amazon EFS File System EfsCreateAlarms: default: EFS Alarms Created PublicAlbFullName: default: Amazon ALB Full Name WarningAlarmArn: default: Warning Alarm Arn Parameters: BurstCreditBalanceDecreaseAlarmArn: Default: '' Description: Amazon EFS Burst Credit Balance Decrease Alarm Arn Type: String BurstCreditBalanceIncreaseAlarmArn: Default: '' Description: Amazon EFS Burst Credit Balance Increase Alarm Arn Type: String CriticalAlarmArn: Default: '' Description: Amazon EFS Burst Credit Balance Critical Alarm Arn Type: String DatabaseCluster: Description: Amazon RDS database cluster Type: String EfsCreateAlarms: AllowedValues: - true - false Description: Were Amazon EFS alarms created? Type: String ElasticFileSystem: Description: Amazon EFS file system id. Type: String PublicAlbFullName: Description: Amazon ALB Full Name Type: String WarningAlarmArn: Default: '' Description: Amazon EFS Burst Credit Balance Warning Alarm Arn Type: String Conditions: Alarms: !Equals [ !Ref EfsCreateAlarms, true ] NoAlarms: !Equals [ !Ref EfsCreateAlarms, false ] Resources: DashboardWithAlarms: Condition: Alarms Type: AWS::CloudWatch::Dashboard Properties: DashboardName: !Join [ '_', [ !Ref 'AWS::Region', !Ref 'AWS::StackName' ] ] DashboardBody: {"Fn::Join": [ "", [ '{"widgets": [ { "type": "metric", "x": 0, "y": 0, "width": 6, "height": 6, "properties": { "view": "timeSeries", "stacked": false, "metrics": [ [ "AWS/EFS", "TotalIOBytes", "FileSystemId", "',!Ref 'ElasticFileSystem','", { "stat": "Sum", "period": 60 } ] ], "region": "',!Ref 'AWS::Region','", "title": "EFS Throughput" } }, { "type": "metric", "x": 18, "y": 0, "width": 6, "height": 3, "properties": { "view": "singleValue", "stacked": false, "metrics": [ [ "AWS/EFS", "PermittedThroughput", "FileSystemId", "',!Ref 'ElasticFileSystem','", { "stat": "Maximum" } ] ], "region": "',!Ref 'AWS::Region','", "title": "EFS PermittedThroughput" } }, { "type": "metric", "x": 6, "y": 0, "width": 6, "height": 6, "properties": { "view": "timeSeries", "stacked": false, "metrics": [ [ "AWS/EFS", "TotalIOBytes", "FileSystemId", "',!Ref 'ElasticFileSystem','", { "stat": "SampleCount", "period": 60 } ] ], "region": "',!Ref 'AWS::Region','", "title": "EFS IOPS" } }, { "type": "metric", "x": 12, "y": 0, "width": 6, "height": 6, "properties": { "view": "timeSeries", "stacked": false, "metrics": [ [ "AWS/EFS", "BurstCreditBalance", "FileSystemId", "',!Ref 'ElasticFileSystem','", { "stat": "Maximum", "period": 60 } ] ], "region": "',!Ref 'AWS::Region','", "title": "EFS BurstCreditBalance" } }, { "type": "metric", "x": 18, "y": 3, "width": 6, "height": 3, "properties": { "view": "singleValue", "metrics": [ [ "Custom/EFS", "SizeInBytes", "FileSystemId", "',!Ref 'ElasticFileSystem','" ] ], "region": "',!Ref 'AWS::Region','", "title": "EFS SizeInBytes" } }, { "type": "metric", "x": 0, "y": 12, "width": 6, "height": 6, "properties": { "view": "timeSeries", "stacked": false, "metrics": [ [ "AWS/ApplicationELB", "RequestCount", "LoadBalancer", "',!Ref 'PublicAlbFullName','", { "stat": "Sum", "period": 60 } ] ], "region": "',!Ref 'AWS::Region','", "title": "ALB RequestCount" } }, { "type": "metric", "x": 6, "y": 12, "width": 6, "height": 6, "properties": { "view": "timeSeries", "stacked": false, "metrics": [ [ "AWS/ApplicationELB", "ActiveConnectionCount", "LoadBalancer", "',!Ref 'PublicAlbFullName','", { "stat": "Sum", "period": 60 } ] ], "region": "',!Ref 'AWS::Region','", "title": "ALB ActiveConnectionCount" } }, { "type": "metric", "x": 12, "y": 12, "width": 6, "height": 6, "properties": { "view": "timeSeries", "stacked": false, "metrics": [ [ "AWS/RDS", "FreeableMemory", "Role", "READER", "DBClusterIdentifier", "',!Ref 'DatabaseCluster','", { "stat": "Sum", "period": 60 } ], [ "...", "WRITER", ".", ".", { "period": 60, "stat": "Sum" } ] ], "region": "',!Ref 'AWS::Region','", "title": "RDS FreeableMemory" } }, { "type": "metric", "x": 18, "y": 12, "width": 6, "height": 6, "properties": { "view": "timeSeries", "stacked": false, "metrics": [ [ "AWS/RDS", "CPUUtilization", "Role", "READER", "DBClusterIdentifier", "',!Ref 'DatabaseCluster','", { "stat": "Sum", "period": 60 } ], [ "...", "WRITER", ".", ".", { "period": 60, "stat": "Sum" } ] ], "region": "',!Ref 'AWS::Region','", "title": "RDS CPUUtilization" } }, { "type": "metric", "x": 0, "y": 6, "width": 6, "height": 6, "properties": { "title": "EFS Burst Credit Balance Increase Threshold", "annotations": { "alarms": [ "',!Ref 'BurstCreditBalanceIncreaseAlarmArn','" ] }, "view": "timeSeries", "stacked": false } }, { "type": "metric", "x": 6, "y": 6, "width": 6, "height": 6, "properties": { "title": "EFS Burst Credit Balance Decrease Threshold", "annotations": { "alarms": [ "',!Ref 'BurstCreditBalanceDecreaseAlarmArn','" ] }, "view": "timeSeries", "stacked": false } }, { "type": "metric", "x": 12, "y": 6, "width": 6, "height": 6, "properties": { "title": "EFS Burst Credit Balance - Warning", "annotations": { "alarms": [ "',!Ref 'WarningAlarmArn','" ] }, "view": "timeSeries", "stacked": false } }, { "type": "metric", "x": 18, "y": 6, "width": 6, "height": 6, "properties": { "title": "EFS Burst Credit Balance - Critical", "annotations": { "alarms": [ "',!Ref 'CriticalAlarmArn','" ] }, "view": "timeSeries", "stacked": false } } ] }' ] ] } DashboardWithNoAlarms: Condition: NoAlarms Type: AWS::CloudWatch::Dashboard Properties: DashboardName: !Join [ '_', [ !Ref 'AWS::Region', !Ref 'AWS::StackName' ] ] DashboardBody: {"Fn::Join": [ "", [ '{"widgets": [ { "type": "metric", "x": 0, "y": 0, "width": 6, "height": 6, "properties": { "view": "timeSeries", "stacked": false, "metrics": [ [ "AWS/EFS", "TotalIOBytes", "FileSystemId", "',!Ref 'ElasticFileSystem','", { "stat": "Sum", "period": 60 } ] ], "region": "',!Ref 'AWS::Region','", "title": "EFS Throughput" } }, { "type": "metric", "x": 18, "y": 0, "width": 6, "height": 3, "properties": { "view": "singleValue", "stacked": false, "metrics": [ [ "AWS/EFS", "PermittedThroughput", "FileSystemId", "',!Ref 'ElasticFileSystem','", { "stat": "Maximum" } ] ], "region": "',!Ref 'AWS::Region','", "title": "EFS PermittedThroughput" } }, { "type": "metric", "x": 6, "y": 0, "width": 6, "height": 6, "properties": { "view": "timeSeries", "stacked": false, "metrics": [ [ "AWS/EFS", "TotalIOBytes", "FileSystemId", "',!Ref 'ElasticFileSystem','", { "stat": "SampleCount", "period": 60 } ] ], "region": "',!Ref 'AWS::Region','", "title": "EFS IOPS" } }, { "type": "metric", "x": 12, "y": 0, "width": 6, "height": 6, "properties": { "view": "timeSeries", "stacked": false, "metrics": [ [ "AWS/EFS", "BurstCreditBalance", "FileSystemId", "',!Ref 'ElasticFileSystem','", { "stat": "Maximum", "period": 60 } ] ], "region": "',!Ref 'AWS::Region','", "title": "EFS BurstCreditBalance" } }, { "type": "metric", "x": 18, "y": 3, "width": 6, "height": 3, "properties": { "view": "singleValue", "metrics": [ [ "Custom/EFS", "SizeInBytes", "FileSystemId", "',!Ref 'ElasticFileSystem','" ] ], "region": "',!Ref 'AWS::Region','", "title": "EFS SizeInBytes" } }, { "type": "metric", "x": 0, "y": 12, "width": 6, "height": 6, "properties": { "view": "timeSeries", "stacked": false, "metrics": [ [ "AWS/ApplicationELB", "RequestCount", "LoadBalancer", "',!Ref 'PublicAlbFullName','", { "stat": "Sum", "period": 60 } ] ], "region": "',!Ref 'AWS::Region','", "title": "ALB RequestCount" } }, { "type": "metric", "x": 6, "y": 12, "width": 6, "height": 6, "properties": { "view": "timeSeries", "stacked": false, "metrics": [ [ "AWS/ApplicationELB", "ActiveConnectionCount", "LoadBalancer", "',!Ref 'PublicAlbFullName','", { "stat": "Sum", "period": 60 } ] ], "region": "',!Ref 'AWS::Region','", "title": "ALB ActiveConnectionCount" } }, { "type": "metric", "x": 12, "y": 12, "width": 6, "height": 6, "properties": { "view": "timeSeries", "stacked": false, "metrics": [ [ "AWS/RDS", "FreeableMemory", "Role", "READER", "DBClusterIdentifier", "',!Ref 'DatabaseCluster','", { "stat": "Sum", "period": 60 } ], [ "...", "WRITER", ".", ".", { "period": 60, "stat": "Sum" } ] ], "region": "',!Ref 'AWS::Region','", "title": "RDS FreeableMemory" } }, { "type": "metric", "x": 18, "y": 12, "width": 6, "height": 6, "properties": { "view": "timeSeries", "stacked": false, "metrics": [ [ "AWS/RDS", "CPUUtilization", "Role", "READER", "DBClusterIdentifier", "',!Ref 'DatabaseCluster','", { "stat": "Sum", "period": 60 } ], [ "...", "WRITER", ".", ".", { "period": 60, "stat": "Sum" } ] ], "region": "',!Ref 'AWS::Region','", "title": "RDS CPUUtilization" } } ] }' ] ] }