AWSTemplateFormatVersion: "2010-09-09" Description: Creates a CLoudWatch Dashboard to compare Load Test results. Parameters: ProxyAccessLambda: Type: String NoProxyAccessLambda: Type: String ProxyClusterName: Type: String NoProxyClusterName: Type: String DBProxyName: Type: String ApiGatewayName: Type: String Resources: LoadTestDashboard: Type: AWS::CloudWatch::Dashboard Properties: DashboardBody: !Join - "" - - '{"widgets": [{"type": "metric", "x": 12, "y": 0, "width": 6, "height": 6, "properties": {"metrics": [["AWS/Lambda", "ConcurrentExecutions", "FunctionName", "' - !Ref NoProxyAccessLambda - '", "Resource", "' - !Ref NoProxyAccessLambda - '", {"label": "No Proxy"}], ["...", "' - !Ref ProxyAccessLambda - '", ".", "' - !Ref ProxyAccessLambda - !Sub '", {"label": "Proxy"}]], "region": "${AWS::Region}", "title": "Lambda Concurrent executions", "view": "timeSeries", "stacked": false, "period": 60, "stat": "Maximum", "yAxis": {"left": {"min": 0}}}}, {"type": "metric", "x": 6, "y": 0, "width": 6, "height": 6, "properties": {"metrics": [["AWS/Lambda", "Invocations", "FunctionName", "' - !Ref NoProxyAccessLambda - '", "Resource", "' - !Ref NoProxyAccessLambda - '", {"label": "No Proxy"}], ["...", "' - !Ref ProxyAccessLambda - '", ".", "' - !Ref ProxyAccessLambda - !Sub '", {"label": "Proxy"}]], "region": "${AWS::Region}", "title": "Lambda Invocations", "view": "timeSeries", "stacked": false, "period": 60, "stat": "Sum"}}, {"type": "metric", "x": 18, "y": 0, "width": 6, "height": 6, "properties": {"metrics": [["AWS/Lambda", "Throttles", "FunctionName", "' - !Ref NoProxyAccessLambda - '", "Resource", "' - !Ref NoProxyAccessLambda - '", {"label": "No Proxy"}], ["...", "' - !Ref ProxyAccessLambda - '", ".", "' - !Ref ProxyAccessLambda - !Sub '", {"label": "Proxy"}]], "region": "${AWS::Region}", "view": "timeSeries", "stacked": false, "title": "Lambda Throttles", "period": 60, "stat": "Sum", "yAxis": {"left": {"min": 0}}}}, {"type": "metric", "x": 0, "y": 6, "width": 6, "height": 6, "properties": {"metrics": [["AWS/RDS", "CPUUtilization", "Role", "READER", "DBClusterIdentifier", "${NoProxyClusterName}", {"label": "No Proxy"}], ["...", "${ProxyClusterName}", {"label": "Proxy"}]], "view": "timeSeries", "stacked": false, "region": "${AWS::Region}", "stat": "Average", "period": 60, "title": "Reader CPU Utilization", "yAxis": {"left": {"min": 0}}}}, {"type": "metric", "x": 6, "y": 6, "width": 6, "height": 6, "properties": {"metrics": [["AWS/RDS", "DatabaseConnections", "Role", "READER", "DBClusterIdentifier", "${NoProxyClusterName}", {"label": "No Proxy"}], ["...", "${ProxyClusterName}", {"label": "Proxy"}]], "view": "timeSeries", "stacked": false, "region": "${AWS::Region}", "stat": "Average", "period": 60, "title": "Reader DB Connections", "yAxis": {"left": {"min": 0}}}}, {"type": "metric", "x": 18, "y": 12, "width": 6, "height": 6, "properties": {"metrics": [["AWS/RDS", "NetworkReceiveThroughput", "Role", "READER", "DBClusterIdentifier", "${NoProxyClusterName}", {"label": "No Proxy"}], ["...", "${ProxyClusterName}", {"label": "Proxy"}]], "view": "timeSeries", "stacked": false, "region": "${AWS::Region}", "stat": "Average", "period": 60, "title": "Reader NetworkReceiveThroughput", "yAxis": {"left": {"min": 0}}}}, {"type": "metric", "x": 0, "y": 0, "width": 6, "height": 6, "properties": {"metrics": [["AWS/ApiGateway", "5XXError", "ApiName", "${ApiGatewayName}", "Stage", "no_proxy_stage", {"label": "No Proxy"}], ["...", "proxy_stage", {"label": "Proxy"}]], "view": "timeSeries", "stacked": false, "region": "${AWS::Region}", "stat": "Sum", "period": 60, "title": "5xx Errors", "yAxis": {"left": {"min": 0}}}}, {"type": "metric", "x": 6, "y": 12, "width": 6, "height": 6, "properties": {"metrics": [["AWS/RDS", "SelectThroughput", "Role", "READER", "DBClusterIdentifier", "${NoProxyClusterName}", {"label": "No Proxy"}], ["...", "${ProxyClusterName}", {"label": "Proxy"}]], "view": "timeSeries", "stacked": false, "region": "${AWS::Region}", "title": "Reader Select Throughput", "stat": "Average", "period": 60, "yAxis": {"left": {"label": "", "min": 0}}}}, {"type": "metric", "x": 0, "y": 12, "width": 6, "height": 6, "properties": {"metrics": [["AWS/RDS", "SelectLatency", "Role", "READER", "DBClusterIdentifier", "${NoProxyClusterName}", {"label": "No Proxy"}], ["...", "${ProxyClusterName}", {"label": "Proxy"}]], "view": "timeSeries", "stacked": false, "title": "Reader Select Latency", "region": "${AWS::Region}", "stat": "Average", "period": 60, "yAxis": {"left": {"min": 0}}}}, {"type": "metric", "x": 12, "y": 6, "width": 6, "height": 6, "properties": {"metrics": [["AWS/RDS", "Queries", "Role", "READER", "DBClusterIdentifier", "${NoProxyClusterName}", {"label": "No Proxy"}], ["...", "${ProxyClusterName}", {"label": "Proxy"}]], "view": "timeSeries", "stacked": false, "region": "${AWS::Region}", "title": "Reader Queries", "stat": "Average", "period": 60, "yAxis": {"left": {"min": 0}}}}, {"type": "metric", "x": 12, "y": 12, "width": 6, "height": 6, "properties": {"metrics": [["AWS/RDS", "NetworkThroughput", "Role", "READER", "DBClusterIdentifier", "${NoProxyClusterName}", {"label": "No Proxy"}], ["...", "${ProxyClusterName}", {"label": "Proxy"}]], "view": "timeSeries", "stacked": false, "region": "${AWS::Region}", "stat": "Average", "period": 60, "title": "Reader Network Throughput", "yAxis": {"left": {"min": 0}}}}, {"type": "metric", "x": 18, "y": 6, "width": 6, "height": 6, "properties": {"metrics": [["AWS/RDS", "ResultSetCacheHitRatio", "Role", "READER", "DBClusterIdentifier", "${NoProxyClusterName}", {"label": "No Proxy"}], ["...", "${ProxyClusterName}", {"label": "Proxy"}]], "view": "timeSeries", "stacked": false, "region": "${AWS::Region}", "title": "Reader ResultSetCacheHitRatio", "stat": "Average", "period": 60, "yAxis": {"left": {"label": "0"}}}}, {"type": "metric", "x": 12, "y": 18, "width": 12, "height": 6, "properties": {"metrics": [["AWS/RDS", "DatabaseConnections", "ProxyName", "${DBProxyName}"], [".", "DatabaseConnectionRequests", ".", "."], [".", "MaxDatabaseConnectionsAllowed", ".", "."]], "view": "timeSeries", "stacked": false, "region": "${AWS::Region}", "title": "Proxy DatabaseConnections", "period": 60, "stat": "Sum", "yAxis": {"left": {"min": 0}}}}, {"type": "metric", "x": 0, "y": 18, "width": 12, "height": 6, "properties": {"metrics": [["AWS/RDS", "ClientConnectionsReceived", "ProxyName", "${DBProxyName}", {"label": "Received"}], [".", "ClientConnectionsSetupSucceeded", ".", ".", {"label": "Setup Succeeded"}]], "view": "timeSeries", "stacked": false, "region": "${AWS::Region}", "title": "Proxy Client Connections", "stat": "Sum", "period": 60}}]}' Outputs: LoadTestDashboard: Value: !Ref LoadTestDashboard