From 62bc8197665142b3df92bee48119144041d0efab Mon Sep 17 00:00:00 2001 From: Himanshu Sharma Date: Fri, 8 Oct 2021 11:38:07 +0530 Subject: [PATCH 01/82] fixing bugs in fields.sh --- aws-observability-terraform/fields.sh | 28 +++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/aws-observability-terraform/fields.sh b/aws-observability-terraform/fields.sh index e912f0f3..f513a461 100644 --- a/aws-observability-terraform/fields.sh +++ b/aws-observability-terraform/fields.sh @@ -42,31 +42,32 @@ function should_create_fields() { if ! jq -e <<< "${RESPONSE}" ; then printf "Failed requesting fields API:\n%s\n" "${RESPONSE}" - # Function returning with faliure - return 1 + # Credential Issue + return 2 fi if ! jq -e '.remaining' <<< "${RESPONSE}" ; then printf "Failed requesting fields API:\n%s\n" "${RESPONSE}" - # Function returning with faliure - return 1 + # Permissions/credential issuses + return 3 fi local REMAINING readonly REMAINING=$(jq -e '.remaining' <<< "${RESPONSE}") - #if [[ $(( REMAINING - ${#awso_list[*]} )) -ge 13 ]] ; then if [ $REMAINING -ge ${#awso_list[*]} ] ; then # Function returning with success return 0 else - # Function returning with faliure + # Capacity not enough to create new fields return 1 fi } +should_create_fields +outputVal=$? # Sumo Logic fields in field schema - Decide to import -if should_create_fields ; then +if [ $outputVal == 0 ] ; then # Get list of all fields present in field schema of user's Sumo Logic org. readonly FIELDS_RESPONSE="$(curl -XGET -s \ -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ @@ -82,8 +83,19 @@ if should_create_fields ; then terraform import \ sumologic_field."${FIELD}" "${FIELD_ID}" done -else +elif [ $outputVal == 1 ] ; then echo "Couldn't automatically create fields" echo "You do not have enough field capacity to create the required fields automatically." echo "Please refer to https://help.sumologic.com/Manage/Fields to manually create the fields after you have removed unused fields to free up capacity." +elif [ $outputVal == 2 ] ; then + echo "Error in calling Sumo Logic Fields API." + echo "User's credentials (SUMOLOGIC_ACCESSID and SUMOLOGIC_ACCESSKEY) are not valid." +elif [ $outputVal == 3 ] ; then + echo "Error in calling Sumo Logic Fields API. The reasons can be:" + echo "1. Credentials could not be verified. Cross check SUMOLOGIC_ACCESSID and SUMOLOGIC_ACCESSKEY." + echo "2. You do not have the role capabilities to create Sumo Logic fields. Please see the Sumo Logic docs on role capabilities https://help.sumologic.com/Manage/Users-and-Roles/Manage-Roles/05-Role-Capabilities" +else + echo "Error in calling Sumo Logic Fields API. The reasons can be:" + echo "1. User's credentials (SUMOLOGIC_ACCESSID and SUMOLOGIC_ACCESSKEY) are not associated with SUMOLOGIC_ENV" + echo "2. You do not have the role capabilities to create Sumo Logic fields. Please see the Sumo Logic docs on role capabilities https://help.sumologic.com/Manage/Users-and-Roles/Manage-Roles/05-Role-Capabilities" fi \ No newline at end of file From 7b9c6c4856eb95d0fc714d0aabdd3b048615a8b0 Mon Sep 17 00:00:00 2001 From: Himanshu Sharma Date: Fri, 8 Oct 2021 11:44:54 +0530 Subject: [PATCH 02/82] Revert "fixing bugs in fields.sh" This reverts commit 62bc8197665142b3df92bee48119144041d0efab. --- aws-observability-terraform/fields.sh | 28 ++++++++------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/aws-observability-terraform/fields.sh b/aws-observability-terraform/fields.sh index f513a461..e912f0f3 100644 --- a/aws-observability-terraform/fields.sh +++ b/aws-observability-terraform/fields.sh @@ -42,32 +42,31 @@ function should_create_fields() { if ! jq -e <<< "${RESPONSE}" ; then printf "Failed requesting fields API:\n%s\n" "${RESPONSE}" - # Credential Issue - return 2 + # Function returning with faliure + return 1 fi if ! jq -e '.remaining' <<< "${RESPONSE}" ; then printf "Failed requesting fields API:\n%s\n" "${RESPONSE}" - # Permissions/credential issuses - return 3 + # Function returning with faliure + return 1 fi local REMAINING readonly REMAINING=$(jq -e '.remaining' <<< "${RESPONSE}") + #if [[ $(( REMAINING - ${#awso_list[*]} )) -ge 13 ]] ; then if [ $REMAINING -ge ${#awso_list[*]} ] ; then # Function returning with success return 0 else - # Capacity not enough to create new fields + # Function returning with faliure return 1 fi } -should_create_fields -outputVal=$? # Sumo Logic fields in field schema - Decide to import -if [ $outputVal == 0 ] ; then +if should_create_fields ; then # Get list of all fields present in field schema of user's Sumo Logic org. readonly FIELDS_RESPONSE="$(curl -XGET -s \ -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ @@ -83,19 +82,8 @@ if [ $outputVal == 0 ] ; then terraform import \ sumologic_field."${FIELD}" "${FIELD_ID}" done -elif [ $outputVal == 1 ] ; then +else echo "Couldn't automatically create fields" echo "You do not have enough field capacity to create the required fields automatically." echo "Please refer to https://help.sumologic.com/Manage/Fields to manually create the fields after you have removed unused fields to free up capacity." -elif [ $outputVal == 2 ] ; then - echo "Error in calling Sumo Logic Fields API." - echo "User's credentials (SUMOLOGIC_ACCESSID and SUMOLOGIC_ACCESSKEY) are not valid." -elif [ $outputVal == 3 ] ; then - echo "Error in calling Sumo Logic Fields API. The reasons can be:" - echo "1. Credentials could not be verified. Cross check SUMOLOGIC_ACCESSID and SUMOLOGIC_ACCESSKEY." - echo "2. You do not have the role capabilities to create Sumo Logic fields. Please see the Sumo Logic docs on role capabilities https://help.sumologic.com/Manage/Users-and-Roles/Manage-Roles/05-Role-Capabilities" -else - echo "Error in calling Sumo Logic Fields API. The reasons can be:" - echo "1. User's credentials (SUMOLOGIC_ACCESSID and SUMOLOGIC_ACCESSKEY) are not associated with SUMOLOGIC_ENV" - echo "2. You do not have the role capabilities to create Sumo Logic fields. Please see the Sumo Logic docs on role capabilities https://help.sumologic.com/Manage/Users-and-Roles/Manage-Roles/05-Role-Capabilities" fi \ No newline at end of file From f4ac9e075227c9d711e439beed194f028e3cf7ee Mon Sep 17 00:00:00 2001 From: Nitin Pande Date: Mon, 4 Apr 2022 19:06:02 +0530 Subject: [PATCH 03/82] Added support to collect CloudWatch EC2 metrics using terraform. --- .../main_variables.auto.tfvars | 2 +- .../cloudformation-module/variables.tf | 4 ++-- aws-observability-terraform/source-module/local.tf | 1 + .../source-module/variables.tf | 14 +++++++------- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/aws-observability-terraform/cloudformation-module/main_variables.auto.tfvars b/aws-observability-terraform/cloudformation-module/main_variables.auto.tfvars index 5b96a96a..972de93f 100644 --- a/aws-observability-terraform/cloudformation-module/main_variables.auto.tfvars +++ b/aws-observability-terraform/cloudformation-module/main_variables.auto.tfvars @@ -26,7 +26,7 @@ Section3aInstallObservabilityApps = "Yes" ## Sumo Logic AWS CloudWatch Metrics Sources ## # Visit - https://help.sumologic.com/Solutions/AWS_Observability_Solution/03_Set_Up_the_AWS_Observability_Solution#sumo-logic-aws-cloudwatch-metrics-and-inventory-source Section4aCreateMetricsSourceOptions = "Kinesis Firehose Metrics Source" -Section4bMetricsNameSpaces = "AWS/ApplicationELB, AWS/ApiGateway, AWS/DynamoDB, AWS/Lambda, AWS/RDS, AWS/ECS, AWS/ElastiCache, AWS/ELB, AWS/NetworkELB, AWS/SQS, AWS/SNS" +Section4bMetricsNameSpaces = "AWS/ApplicationELB, AWS/ApiGateway, AWS/DynamoDB, AWS/Lambda, AWS/RDS, AWS/ECS, AWS/ElastiCache, AWS/ELB, AWS/NetworkELB, AWS/SQS, AWS/SNS, AWS/EC2" Section4cCloudWatchExistingSourceAPIUrl = "" ## Sumo Logic AWS ALB Log Source ## diff --git a/aws-observability-terraform/cloudformation-module/variables.tf b/aws-observability-terraform/cloudformation-module/variables.tf index bf5605e8..7c547067 100644 --- a/aws-observability-terraform/cloudformation-module/variables.tf +++ b/aws-observability-terraform/cloudformation-module/variables.tf @@ -98,8 +98,8 @@ variable "Section4aCreateMetricsSourceOptions" { } variable "Section4bMetricsNameSpaces" { type = string - default = "AWS/ApplicationELB, AWS/ApiGateway, AWS/DynamoDB, AWS/Lambda, AWS/RDS, AWS/ECS, AWS/ElastiCache, AWS/ELB, AWS/NetworkELB, AWS/SQS, AWS/SNS" - description = "Provide Comma delimited list of the namespaces which will be used for both AWS CLoudWatch Metrics and Inventory Sources. Default will be AWS/ApplicationELB, AWS/ApiGateway, AWS/DynamoDB, AWS/Lambda, AWS/RDS, AWS/ECS, AWS/ElastiCache, AWS/ELB, AWS/NetworkELB, AWS/SQS, AWS/SNS. AWS/AutoScaling will be appended to Namespaces for Inventory Sources." + default = "AWS/ApplicationELB, AWS/ApiGateway, AWS/DynamoDB, AWS/Lambda, AWS/RDS, AWS/ECS, AWS/ElastiCache, AWS/ELB, AWS/NetworkELB, AWS/SQS, AWS/SNS, AWS/EC2" + description = "Provide Comma delimited list of the namespaces which will be used for both AWS CloudWatch Metrics and Inventory Sources. Default will be AWS/ApplicationELB, AWS/ApiGateway, AWS/DynamoDB, AWS/Lambda, AWS/RDS, AWS/ECS, AWS/ElastiCache, AWS/ELB, AWS/NetworkELB, AWS/SQS, AWS/SNS, AWS/EC2. AWS/AutoScaling will be appended to Namespaces for Inventory Sources." } variable "Section4cCloudWatchExistingSourceAPIUrl" { type = string diff --git a/aws-observability-terraform/source-module/local.tf b/aws-observability-terraform/source-module/local.tf index b843dde7..4aa72fdc 100644 --- a/aws-observability-terraform/source-module/local.tf +++ b/aws-observability-terraform/source-module/local.tf @@ -118,5 +118,6 @@ locals { "NetworkELB" = 60000, "SQS" = 300000, "SNS" = 300000, + "EC2" = 300000, } } \ No newline at end of file diff --git a/aws-observability-terraform/source-module/variables.tf b/aws-observability-terraform/source-module/variables.tf index 5ce8fe46..5ada5fa2 100644 --- a/aws-observability-terraform/source-module/variables.tf +++ b/aws-observability-terraform/source-module/variables.tf @@ -39,7 +39,7 @@ variable "access_key" { variable "cloudwatch_metrics_source_url" { type = string - description = "Required if you are already collecting CloudWatch Metrics. Provide the existing Sumo Logic Metrics Source API URL. If the URL is of “CloudWatch Metric source” - account and accountID fields will be added to the Source. If the URL is of “Kinesis Firehose Metrics source” - account field will be added to the Source. For information on how to determine the URL, see [View or Download Source JSON Configuration](https://help.sumologic.com/03Send-Data/Sources/03Use-JSON-to-Configure-Sources/Local-Configuration-File-Management/View-or-Download-Source-JSON-Configuration)." + description = "Required if you are already collecting CloudWatch Metrics. Provide the existing Sumo Logic Metrics Source API URL. If the URL is of “CloudWatch Metric source” - account and accountID fields will be added to the Source. If the URL is of “Kinesis Firehose Metrics source” - account field will be added to the Source. For information on how to determine the URL, see [View or Download Source JSON Configuration](https://help.sumologic.com/03Send-Data/Sources/03Use-JSON-to-Configure-Sources/Local-Configuration-File-Management/View-or-Download-Source-JSON-Configuration)." default = "" } @@ -51,13 +51,13 @@ variable "cloudtrail_source_url" { variable "elb_log_source_url" { type = string - description = "Required if you are already collecting ALB logs. Provide the existing Sumo Logic ALB Source API URL. The account, accountid, region and namespace fields will be added to the Source. For information on how to determine the URL, see [View or Download Source JSON Configuration](https://help.sumologic.com/03Send-Data/Sources/03Use-JSON-to-Configure-Sources/Local-Configuration-File-Management/View-or-Download-Source-JSON-Configuration)." + description = "Required if you are already collecting ALB logs. Provide the existing Sumo Logic ALB Source API URL. The account, accountid, and region fields will be added to the Source. For information on how to determine the URL, see [View or Download Source JSON Configuration](https://help.sumologic.com/03Send-Data/Sources/03Use-JSON-to-Configure-Sources/Local-Configuration-File-Management/View-or-Download-Source-JSON-Configuration)." default = "" } variable "classic_lb_log_source_url" { type = string - description = "Required if you are already collecting Classic LB logs. Provide the existing Sumo Logic Classic LB Source API URL. The account, accountid, region and namespace fields will be added to the Source. For information on how to determine the URL, see [View or Download Source JSON Configuration](https://help.sumologic.com/03Send-Data/Sources/03Use-JSON-to-Configure-Sources/Local-Configuration-File-Management/View-or-Download-Source-JSON-Configuration)." + description = "Required if you are already collecting Classic LB logs. Provide the existing Sumo Logic Classic LB Source API URL. The account, accountid, and region fields will be added to the Source. For information on how to determine the URL, see [View or Download Source JSON Configuration](https://help.sumologic.com/03Send-Data/Sources/03Use-JSON-to-Configure-Sources/Local-Configuration-File-Management/View-or-Download-Source-JSON-Configuration)." default = "" } @@ -384,7 +384,7 @@ variable "cloudwatch_metrics_source_details" { source_name = "CloudWatch Metrics (Region)" source_category = "aws/observability/cloudwatch/metrics" description = "This source is created using Sumo Logic terraform AWS Observability module to collect AWS Cloudwatch metrics." - limit_to_namespaces = ["AWS/ApplicationELB", "AWS/ApiGateway", "AWS/DynamoDB", "AWS/Lambda", "AWS/RDS", "AWS/ECS", "AWS/ElastiCache", "AWS/ELB", "AWS/NetworkELB", "AWS/SQS", "AWS/SNS"] + limit_to_namespaces = ["AWS/ApplicationELB", "AWS/ApiGateway", "AWS/DynamoDB", "AWS/Lambda", "AWS/RDS", "AWS/ECS", "AWS/ElastiCache", "AWS/ELB", "AWS/NetworkELB", "AWS/SQS", "AWS/SNS", "AWS/EC2"] fields = {} bucket_details = { create_bucket = true @@ -541,13 +541,13 @@ variable "inventory_source_details" { source_name = "AWS Inventory (Region)" source_category = "aws/observability/inventory" description = "This source is created using Sumo Logic terraform AWS Observability module to collect AWS inventory metadata." - limit_to_namespaces = ["AWS/ApplicationELB", "AWS/ApiGateway", "AWS/DynamoDB", "AWS/Lambda", "AWS/RDS", "AWS/ECS", "AWS/ElastiCache", "AWS/ELB", "AWS/NetworkELB", "AWS/SQS", "AWS/SNS", "AWS/AutoScaling"] + limit_to_namespaces = ["AWS/ApplicationELB", "AWS/ApiGateway", "AWS/DynamoDB", "AWS/Lambda", "AWS/RDS", "AWS/ECS", "AWS/ElastiCache", "AWS/ELB", "AWS/NetworkELB", "AWS/SQS", "AWS/SNS", "AWS/AutoScaling", "AWS/EC2"] fields = {} } validation { # regex check that each element of the input namespaces is one of the accepted values, contains check if any of the can function returns was false, return false from logical if any of the returns were false - condition = contains([for namespace in var.inventory_source_details.limit_to_namespaces : can(regex("AWS/(?:ApplicationELB|ApiGateway|DynamoDB|Lambda|RDS|ECS|ElastiCache|ELB|NetworkELB|SQS|SNS|AutoScaling)", namespace))], false) != true - error_message = "Namespaces should be from provided default list \"AWS/ApplicationELB\", \"AWS/ApiGateway\", \"AWS/DynamoDB\", \"AWS/Lambda\", \"AWS/RDS\", \"AWS/ECS\", \"AWS/ElastiCache\", \"AWS/ELB\", \"AWS/NetworkELB\", \"AWS/SQS\", \"AWS/SNS\", \"AWS/AutoScaling\"." + condition = contains([for namespace in var.inventory_source_details.limit_to_namespaces : can(regex("AWS/(?:ApplicationELB|ApiGateway|DynamoDB|Lambda|RDS|ECS|ElastiCache|ELB|NetworkELB|SQS|SNS|AutoScaling|EC2)", namespace))], false) != true + error_message = "Namespaces should be from provided default list \"AWS/ApplicationELB\", \"AWS/ApiGateway\", \"AWS/DynamoDB\", \"AWS/Lambda\", \"AWS/RDS\", \"AWS/ECS\", \"AWS/ElastiCache\", \"AWS/ELB\", \"AWS/NetworkELB\", \"AWS/SQS\", \"AWS/SNS\", \"AWS/AutoScaling\", \"AWS/EC2\"." } } From 386e474ebe3b9c1e91fa02ce65b3015893551068 Mon Sep 17 00:00:00 2001 From: Nitin Pande Date: Tue, 5 Apr 2022 14:38:43 +0530 Subject: [PATCH 04/82] Minor text fixes in variables file and updates to README.md file based on changes in variables file. --- aws-observability-terraform/source-module/README.md | 10 +++++----- aws-observability-terraform/source-module/variables.tf | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/aws-observability-terraform/source-module/README.md b/aws-observability-terraform/source-module/README.md index f7169348..15e0e215 100644 --- a/aws-observability-terraform/source-module/README.md +++ b/aws-observability-terraform/source-module/README.md @@ -72,25 +72,25 @@ | [auto\_enable\_logs\_subscription](#input\_auto\_enable\_logs\_subscription) | Subscribe log groups to Sumo Logic Lambda Forwarder.
You have the following options:
New - Automatically subscribes new log groups to send logs to Sumo Logic.
Existing - Automatically subscribes existing log groups to send logs to Sumo Logic.
Both - Automatically subscribes new and existing log groups.
None - Skips Automatic subscription. | `string` | `"Both"` | no | | [auto\_enable\_logs\_subscription\_options](#input\_auto\_enable\_logs\_subscription\_options) | filter - Enter regex for matching logGroups. Regex will check for the name. Visit https://help.sumologic.com/03Send-Data/Collect-from-Other-Data-Sources/Auto-Subscribe_AWS_Log_Groups_to_a_Lambda_Function#Configuring_parameters |
object({
filter = string
})
|
{
"filter": "lambda"
}
| no | | [aws\_account\_alias](#input\_aws\_account\_alias) | Provide the Name/Alias for the AWS environment from which you are collecting data. This name will appear in the Sumo Logic Explorer View, metrics, and logs.
Please leave this blank if you are going to deploy the solution in multiple AWS accounts.
Do not include special characters in the alias. | `string` | n/a | yes | -| [classic\_lb\_log\_source\_url](#input\_classic\_lb\_log\_source\_url) | Required if you are already collecting Classic LB logs. Provide the existing Sumo Logic Classic LB Source API URL. The account, accountid, region and namespace fields will be added to the Source. For information on how to determine the URL, see [View or Download Source JSON Configuration](https://help.sumologic.com/03Send-Data/Sources/03Use-JSON-to-Configure-Sources/Local-Configuration-File-Management/View-or-Download-Source-JSON-Configuration). | `string` | `""` | no | +| [classic\_lb\_log\_source\_url](#input\_classic\_lb\_log\_source\_url) | Required if you are already collecting Classic LB logs. Provide the existing Sumo Logic Classic LB Source API URL. The account, accountid, and region fields will be added to the Source. For information on how to determine the URL, see [View or Download Source JSON Configuration](https://help.sumologic.com/03Send-Data/Sources/03Use-JSON-to-Configure-Sources/Local-Configuration-File-Management/View-or-Download-Source-JSON-Configuration). | `string` | `""` | no | | [classic\_lb\_source\_details](#input\_classic\_lb\_source\_details) | Provide details for the Sumo Logic Classic Load Balancer source. If not provided, then defaults will be used.
To enable collection of classic load balancer logs, set collect\_classic\_lb\_logs to true and provide configuration information for the bucket.
If create\_bucket is false, provide a name of an existing S3 bucket where you would like to store loadbalancer logs. If this is empty, a new bucket will be created in the region.
If create\_bucket is true, the script creates a bucket, the name of the bucket has to be unique; this is achieved internally by generating a random-id and then post-fixing it to the “aws-observability-” string.
path\_expression - This is required in case the above existing bucket is already configured to receive Classic LB access logs. If this is blank, Sumo Logic will store logs in the path expression: *classicloadbalancing/AWSLogs/*/elasticloadbalancing/*/* |
object({
source_name = string
source_category = string
description = string
bucket_details = object({
create_bucket = bool
bucket_name = string
path_expression = string
force_destroy_bucket = bool
})
fields = map(string)
})
|
{
"bucket_details": {
"bucket_name": "aws-observability-random-id",
"create_bucket": true,
"force_destroy_bucket": true,
"path_expression": "*classicloadbalancing/AWSLogs//elasticloadbalancing//*"
},
"description": "This source is created using Sumo Logic terraform AWS Observability module to collect AWS Classic LoadBalancer logs.",
"fields": {},
"source_category": "aws/observability/clb/logs",
"source_name": "Classic lb Logs (Region)"
}
| no | | [cloudtrail\_source\_details](#input\_cloudtrail\_source\_details) | Provide details for the Sumo Logic CloudTrail source. If not provided, then defaults will be used.
To enable, set collect\_cloudtrail\_logs to true and provide configuration information for the bucket at bucket\_details.
If create\_bucket is false, provide a name of an existing S3 bucket where you would like to store CloudTrail logs. If this is empty, a new bucket will be created in the region.
If create\_bucket is true, the script creates a bucket, the name of the bucket has to be unique; this is achieved internally by generating a random-id and then post-fixing it to the “aws-observability-” string.
path\_expression - This is required in case the above existing bucket is already configured to receive CloudTrail logs. If this is blank, Sumo Logic will store logs in the path expression AWSLogs/*/CloudTrail/*/*. |
object({
source_name = string
source_category = string
description = string
bucket_details = object({
create_bucket = bool
bucket_name = string
path_expression = string
force_destroy_bucket = bool
})
fields = map(string)
})
|
{
"bucket_details": {
"bucket_name": "aws-observability-random-id",
"create_bucket": true,
"force_destroy_bucket": true,
"path_expression": "AWSLogs//CloudTrail//*"
},
"description": "This source is created using Sumo Logic terraform AWS Observability module to collect AWS cloudtrail logs.",
"fields": {},
"source_category": "aws/observability/cloudtrail/logs",
"source_name": "CloudTrail Logs (Region)"
}
| no | | [cloudtrail\_source\_url](#input\_cloudtrail\_source\_url) | Required if you are already collecting CloudTrail logs. Provide the existing Sumo Logic CloudTrail Source API URL. The account field will be added to the Source. For information on how to determine the URL, see [View or Download Source JSON Configuration](https://help.sumologic.com/03Send-Data/Sources/03Use-JSON-to-Configure-Sources/Local-Configuration-File-Management/View-or-Download-Source-JSON-Configuration). | `string` | `""` | no | | [cloudwatch\_logs\_source\_details](#input\_cloudwatch\_logs\_source\_details) | Provide details for the Sumo Logic Cloudwatch Logs source. If not provided, then defaults will be used.

Use bucket\_details section with Kinesis Firehose Log Source:
If create\_bucket is false, provide a name of an existing S3 bucket where you would like to store cloudwatch logs. If this is empty, a new bucket will be created.
If create\_bucket is true, the script creates a bucket, the name of the bucket has to be unique; this is achieved internally by generating a random-id and then post-fixing it to the “aws-observability-” string.

Use lambda\_log\_forwarder\_config section with Lambda Log Forwarder:
Provide your email\_id to receive alerts. You will receive a confirmation email after the deployment is complete. Follow the instructions in this email to validate the address.
IncludeLogGroupInfo: Set to true to include loggroup/logstream values in logs. For AWS Lambda logs, IncludeLogGroupInfo must be set to true
logformat: For Lambda, the value should be set to “Others”.
log\_stream\_prefix: Enter a comma-separated list of logStream name prefixes to filter by logStream. Please note this is separate from a logGroup. This is used to only send certain logStreams within a CloudWatch logGroup(s). LogGroup(s) still need to be subscribed to the created Lambda function.
workers: Number of lambda function invocations for Cloudwatch logs source Dead Letter Queue processing. |
object({
source_name = string
source_category = string
description = string
fields = map(string)
bucket_details = object({
create_bucket = bool
bucket_name = string
force_destroy_bucket = bool
})
lambda_log_forwarder_config = object({
email_id = string
workers = number
log_format = string
include_log_group_info = bool
log_stream_prefix = list(string)
})
})
|
{
"bucket_details": {
"bucket_name": "aws-observability-random-id",
"create_bucket": true,
"force_destroy_bucket": true
},
"description": "This source is created using Sumo Logic terraform AWS Observability module to collect AWS Cloudwatch Logs.",
"fields": {},
"lambda_log_forwarder_config": {
"email_id": "test@gmail.com",
"include_log_group_info": true,
"log_format": "Others",
"log_stream_prefix": [],
"workers": 4
},
"source_category": "aws/observability/cloudwatch/logs",
"source_name": "CloudWatch Logs (Region)"
}
| no | | [cloudwatch\_logs\_source\_url](#input\_cloudwatch\_logs\_source\_url) | Required if you are already collecting AWS Lambda CloudWatch logs. Provide the existing Sumo Logic AWS Lambda CloudWatch Source API URL. The account, accountid, region and namespace fields will be added to the Source. For information on how to determine the URL, see [View or Download Source JSON Configuration](https://help.sumologic.com/03Send-Data/Sources/03Use-JSON-to-Configure-Sources/Local-Configuration-File-Management/View-or-Download-Source-JSON-Configuration). | `string` | `""` | no | -| [cloudwatch\_metrics\_source\_details](#input\_cloudwatch\_metrics\_source\_details) | Provide details for the Sumo Logic Cloudwatch Metrics source. If not provided, then defaults will be used.
limit\_to\_namespaces - Enter a comma-delimited list of the namespaces which will be used for both AWS CloudWatch Metrics Source.
See this list of AWS services that publish CloudWatch metrics: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aws-services-cloudwatch-metrics.html |
object({
source_name = string
source_category = string
description = string
limit_to_namespaces = list(string)
fields = map(string)
bucket_details = object({
create_bucket = bool
bucket_name = string
force_destroy_bucket = bool
})
})
|
{
"bucket_details": {
"bucket_name": "aws-observability-random-id",
"create_bucket": true,
"force_destroy_bucket": true
},
"description": "This source is created using Sumo Logic terraform AWS Observability module to collect AWS Cloudwatch metrics.",
"fields": {},
"limit_to_namespaces": [
"AWS/ApplicationELB",
"AWS/ApiGateway",
"AWS/DynamoDB",
"AWS/Lambda",
"AWS/RDS",
"AWS/ECS",
"AWS/ElastiCache",
"AWS/ELB",
"AWS/NetworkELB",
"AWS/SQS",
"AWS/SNS"
],
"source_category": "aws/observability/cloudwatch/metrics",
"source_name": "CloudWatch Metrics (Region)"
}
| no | -| [cloudwatch\_metrics\_source\_url](#input\_cloudwatch\_metrics\_source\_url) | Required if you are already collecting CloudWatch Metrics. Provide the existing Sumo Logic Metrics Source API URL. If the URL is of “CloudWatch Metric source” - account and accountID fields will be added to the Source. If the URL is of “Kinesis Firehose Metrics source” - account field will be added to the Source. For information on how to determine the URL, see [View or Download Source JSON Configuration](https://help.sumologic.com/03Send-Data/Sources/03Use-JSON-to-Configure-Sources/Local-Configuration-File-Management/View-or-Download-Source-JSON-Configuration). | `string` | `""` | no | +| [cloudwatch\_metrics\_source\_details](#input\_cloudwatch\_metrics\_source\_details) | Provide details for the Sumo Logic Cloudwatch Metrics source. If not provided, then defaults will be used.
limit\_to\_namespaces - Enter a comma-delimited list of the namespaces which will be used for both AWS CloudWatch Metrics Source.
See this list of AWS services that publish CloudWatch metrics: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aws-services-cloudwatch-metrics.html |
object({
source_name = string
source_category = string
description = string
limit_to_namespaces = list(string)
fields = map(string)
bucket_details = object({
create_bucket = bool
bucket_name = string
force_destroy_bucket = bool
})
})
|
{
"bucket_details": {
"bucket_name": "aws-observability-random-id",
"create_bucket": true,
"force_destroy_bucket": true
},
"description": "This source is created using Sumo Logic terraform AWS Observability module to collect AWS Cloudwatch metrics.",
"fields": {},
"limit_to_namespaces": [
"AWS/ApplicationELB",
"AWS/ApiGateway",
"AWS/DynamoDB",
"AWS/Lambda",
"AWS/RDS",
"AWS/ECS",
"AWS/ElastiCache",
"AWS/ELB",
"AWS/NetworkELB",
"AWS/SQS",
"AWS/SNS",
"AWS/EC2"
],
"source_category": "aws/observability/cloudwatch/metrics",
"source_name": "CloudWatch Metrics (Region)"
}
| no | +| [cloudwatch\_metrics\_source\_url](#input\_cloudwatch\_metrics\_source\_url) | Required if you are already collecting CloudWatch Metrics. Provide the existing Sumo Logic Metrics Source API URL. If the URL is of “CloudWatch Metric source” - account and accountID fields will be added to the Source. If the URL is of “Kinesis Firehose Metrics source” - account field will be added to the Source. For information on how to determine the URL, see [View or Download Source JSON Configuration](https://help.sumologic.com/03Send-Data/Sources/03Use-JSON-to-Configure-Sources/Local-Configuration-File-Management/View-or-Download-Source-JSON-Configuration). | `string` | `""` | no | | [collect\_classic\_lb\_logs](#input\_collect\_classic\_lb\_logs) | Create a Sumo Logic Classic LB Logs Source.
You have the following options:
true - to ingest load balancer logs into Sumo Logic. Creates a Sumo Logic Log Source that collects classic load balancer logs from an existing bucket or a new bucket.
If true, please configure \"classic\_lb\_source\_details\" with configuration information including the bucket name and path expression to ingest load balancer logs.
false - you are already ingesting load balancer logs into Sumo Logic. | `bool` | `true` | no | | [collect\_cloudtrail\_logs](#input\_collect\_cloudtrail\_logs) | Create a Sumo Logic CloudTrail Logs Source.
You have the following options:
true - to ingest cloudtrail logs into Sumo Logic. Creates a Sumo Logic CloudTrail Log Source that collects CloudTrail logs from an existing bucket or new bucket.
If true, please configure \"cloudtrail\_source\_details\" with configuration information to ingest cloudtrail logs.
false - you are already ingesting cloudtrail logs into Sumo Logic. | `bool` | `true` | no | | [collect\_cloudwatch\_logs](#input\_collect\_cloudwatch\_logs) | Select the kind of Sumo Logic CloudWatch Logs Sources to create
You have the following options:
"Lambda Log Forwarder" - Creates a Sumo Logic CloudWatch Log Source that collects CloudWatch logs via a Lambda function.
"Kinesis Firehose Log Source" - Creates a Sumo Logic Kinesis Firehose Log Source to collect CloudWatch logs.
"None" - Skips installation of both sources. | `string` | `"Kinesis Firehose Log Source"` | no | | [collect\_cloudwatch\_metrics](#input\_collect\_cloudwatch\_metrics) | Select the kind of CloudWatch Metrics Source to create
You have the following options:
"CloudWatch Metrics Source" - Creates Sumo Logic AWS CloudWatch Metrics Sources.
"Kinesis Firehose Metrics Source" (Recommended) - Creates a Sumo Logic AWS Kinesis Firehose for Metrics Source. Note: This new source has cost and performance benefits over the CloudWatch Metrics Source and is therefore recommended.
"None" - Skips the Installation of both the Sumo Logic Metric Sources | `string` | `"Kinesis Firehose Metrics Source"` | no | | [collect\_elb\_logs](#input\_collect\_elb\_logs) | Create a Sumo Logic ALB Logs Source.
You have the following options:
true - to ingest load balancer logs into Sumo Logic. Creates a Sumo Logic Log Source that collects application load balancer logs from an existing bucket or a new bucket.
If true, please configure \"elb\_source\_details\" with configuration information including the bucket name and path expression to ingest load balancer logs.
false - you are already ingesting load balancer logs into Sumo Logic. | `bool` | `true` | no | | [collect\_root\_cause\_data](#input\_collect\_root\_cause\_data) | Select the Sumo Logic Root Cause Explorer Source.
You have the following options:
Inventory Source - Creates a Sumo Logic Inventory Source used by Root Cause Explorer.
Xray Source - Creates a Sumo Logic AWS X-Ray Source that collects X-Ray Trace Metrics from your AWS account.
Both - Install both Inventory and Xray sources.
None - Skips installation of both sources. | `string` | `"Both"` | no | -| [elb\_log\_source\_url](#input\_elb\_log\_source\_url) | Required if you are already collecting ALB logs. Provide the existing Sumo Logic ALB Source API URL. The account, accountid, region and namespace fields will be added to the Source. For information on how to determine the URL, see [View or Download Source JSON Configuration](https://help.sumologic.com/03Send-Data/Sources/03Use-JSON-to-Configure-Sources/Local-Configuration-File-Management/View-or-Download-Source-JSON-Configuration). | `string` | `""` | no | +| [elb\_log\_source\_url](#input\_elb\_log\_source\_url) | Required if you are already collecting ALB logs. Provide the existing Sumo Logic ALB Source API URL. The account, accountid, and region fields will be added to the Source. For information on how to determine the URL, see [View or Download Source JSON Configuration](https://help.sumologic.com/03Send-Data/Sources/03Use-JSON-to-Configure-Sources/Local-Configuration-File-Management/View-or-Download-Source-JSON-Configuration). | `string` | `""` | no | | [elb\_source\_details](#input\_elb\_source\_details) | Provide details for the Sumo Logic ALB source. If not provided, then defaults will be used.
To enable collection of application load balancer logs, set collect\_elb\_logs to true and provide configuration information for the bucket.
If create\_bucket is false, provide a name of an existing S3 bucket where you would like to store loadbalancer logs. If this is empty, a new bucket will be created in the region.
If create\_bucket is true, the script creates a bucket, the name of the bucket has to be unique; this is achieved internally by generating a random-id and then post-fixing it to the “aws-observability-” string.
path\_expression - This is required in case the above existing bucket is already configured to receive ALB access logs. If this is blank, Sumo Logic will store logs in the path expression: *elasticloadbalancing/AWSLogs/*/elasticloadbalancing/*/* |
object({
source_name = string
source_category = string
description = string
bucket_details = object({
create_bucket = bool
bucket_name = string
path_expression = string
force_destroy_bucket = bool
})
fields = map(string)
})
|
{
"bucket_details": {
"bucket_name": "aws-observability-random-id",
"create_bucket": true,
"force_destroy_bucket": true,
"path_expression": "*elasticloadbalancing/AWSLogs//elasticloadbalancing//*"
},
"description": "This source is created using Sumo Logic terraform AWS Observability module to collect AWS Application LoadBalancer logs.",
"fields": {},
"source_category": "aws/observability/alb/logs",
"source_name": "Elb Logs (Region)"
}
| no | | [environment](#input\_environment) | Enter au, ca, de, eu, jp, us2, in, fed or us1. For more information on Sumo Logic deployments visit https://help.sumologic.com/APIs/General-API-Information/Sumo-Logic-Endpoints-and-Firewall-Security | `string` | n/a | yes | | [existing\_iam\_details](#input\_existing\_iam\_details) | Provide an existing AWS IAM role arn value which provides access to AWS S3 Buckets, AWS CloudWatch Metrics API and Sumo Logic Inventory data.
If kept empty, a new IAM role will be created with the required permissions.
For more details on permissions, check the iam policy tmpl files at /source-module/templates folder. |
object({
create_iam_role = bool
iam_role_arn = string
})
|
{
"create_iam_role": true,
"iam_role_arn": ""
}
| no | -| [inventory\_source\_details](#input\_inventory\_source\_details) | Provide details for the Sumo Logic AWS Inventory source. If not provided, then defaults will be used. |
object({
source_name = string
source_category = string
description = string
limit_to_namespaces = list(string)
fields = map(string)
})
|
{
"description": "This source is created using Sumo Logic terraform AWS Observability module to collect AWS inventory metadata.",
"fields": {},
"limit_to_namespaces": [
"AWS/ApplicationELB",
"AWS/ApiGateway",
"AWS/DynamoDB",
"AWS/Lambda",
"AWS/RDS",
"AWS/ECS",
"AWS/ElastiCache",
"AWS/ELB",
"AWS/NetworkELB",
"AWS/SQS",
"AWS/SNS",
"AWS/AutoScaling"
],
"source_category": "aws/observability/inventory",
"source_name": "AWS Inventory (Region)"
}
| no | +| [inventory\_source\_details](#input\_inventory\_source\_details) | Provide details for the Sumo Logic AWS Inventory source. If not provided, then defaults will be used. |
object({
source_name = string
source_category = string
description = string
limit_to_namespaces = list(string)
fields = map(string)
})
|
{
"description": "This source is created using Sumo Logic terraform AWS Observability module to collect AWS inventory metadata.",
"fields": {},
"limit_to_namespaces": [
"AWS/ApplicationELB",
"AWS/ApiGateway",
"AWS/DynamoDB",
"AWS/Lambda",
"AWS/RDS",
"AWS/ECS",
"AWS/ElastiCache",
"AWS/ELB",
"AWS/NetworkELB",
"AWS/SQS",
"AWS/SNS",
"AWS/AutoScaling",
"AWS/EC2"
],
"source_category": "aws/observability/inventory",
"source_name": "AWS Inventory (Region)"
}
| no | | [sumologic\_collector\_details](#input\_sumologic\_collector\_details) | Provide details for the Sumo Logic collector. If not provided, then defaults will be used.
The Collector will be created if any new source will be created and \"sumologic\_existing\_collector\_id\" is empty. |
object({
collector_name = string
description = string
fields = map(string)
})
|
{
"collector_name": "AWS Observability (AWS Account Alias) (Account ID)",
"description": "This collector is created using Sumo Logic terraform AWS Observability module.",
"fields": {}
}
| no | | [sumologic\_existing\_collector\_details](#input\_sumologic\_existing\_collector\_details) | Provide an existing Sumo Logic Collector ID. For more details, visit https://help.sumologic.com/03Send-Data/Sources/03Use-JSON-to-Configure-Sources/Local-Configuration-File-Management/View-or-Download-Source-JSON-Configuration
If provided, all the provided sources will be created within the collector.
If kept empty, a new Collector will be created and all provided sources will be created within that collector. |
object({
create_collector = bool
collector_id = string
})
|
{
"collector_id": "",
"create_collector": true
}
| no | | [sumologic\_organization\_id](#input\_sumologic\_organization\_id) | You can find your org on the Preferences page in the Sumo Logic UI. For more information, see the Preferences Page topic. Your org ID will be used to configure the IAM Role for Sumo Logic AWS Sources."
For more details, visit https://help.sumologic.com/01Start-Here/05Customize-Your-Sumo-Logic-Experience/Preferences-Page | `string` | n/a | yes | diff --git a/aws-observability-terraform/source-module/variables.tf b/aws-observability-terraform/source-module/variables.tf index 5ada5fa2..c808e8a7 100644 --- a/aws-observability-terraform/source-module/variables.tf +++ b/aws-observability-terraform/source-module/variables.tf @@ -470,7 +470,7 @@ variable "cloudwatch_logs_source_details" { } validation { condition = contains(["VPC-RAW", "VPC-JSON", "Others"], var.cloudwatch_logs_source_details.lambda_log_forwarder_config.log_format) - error_message = "Log format service must be be one of VPC-RAW, VPC-JSON, or Others." + error_message = "Log format service must be one of VPC-RAW, VPC-JSON, or Others." } } From 301fd3ecd4efa4a7153726e80c9533c049c15217 Mon Sep 17 00:00:00 2001 From: Nitin Pande Date: Thu, 7 Apr 2022 11:26:12 +0530 Subject: [PATCH 05/82] Initial checkin to collect CW metrics for EC2 with CF. --- aws-observability/apps/common/resources.template.yaml | 9 +++++---- aws-observability/apps/common/test/TestTemplate.yaml | 4 ++-- .../scripts/DeployTemplate/parameters-default.json | 2 +- .../sumologic_observability.master.template.yaml | 4 ++-- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/aws-observability/apps/common/resources.template.yaml b/aws-observability/apps/common/resources.template.yaml index b6e95399..6694b6dc 100755 --- a/aws-observability/apps/common/resources.template.yaml +++ b/aws-observability/apps/common/resources.template.yaml @@ -79,8 +79,8 @@ Parameters: Description: "Provide a Cloud Watch Metrics Source Name" Default: "" CloudWatchMetricsNameSpaces: - Default: "AWS/ApplicationELB, AWS/ApiGateway, AWS/DynamoDB, AWS/Lambda, AWS/RDS, AWS/ECS, AWS/ElastiCache, AWS/ELB, AWS/NetworkELB, AWS/SQS, AWS/SNS" - Description: "Provide Comma delimited list of the namespaces. Default will be AWS/ApplicationELB, AWS/ApiGateway, AWS/DynamoDB, AWS/Lambda, AWS/RDS, AWS/ECS, AWS/ElastiCache, AWS/ELB, AWS/NetworkELB, AWS/SQS, AWS/SNS. See the list of AWS services that publish CloudWatch metrics: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aws-services-cloudwatch-metrics.html" + Default: "AWS/ApplicationELB, AWS/ApiGateway, AWS/DynamoDB, AWS/Lambda, AWS/RDS, AWS/ECS, AWS/ElastiCache, AWS/ELB, AWS/NetworkELB, AWS/SQS, AWS/SNS, AWS/EC2" + Description: "Provide Comma delimited list of the namespaces. Default will be AWS/ApplicationELB, AWS/ApiGateway, AWS/DynamoDB, AWS/Lambda, AWS/RDS, AWS/ECS, AWS/ElastiCache, AWS/ELB, AWS/NetworkELB, AWS/SQS, AWS/SNS, AWS/EC2. See the list of AWS services that publish CloudWatch metrics: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aws-services-cloudwatch-metrics.html" Type: String ScanInterval: Default: 300000 @@ -904,7 +904,7 @@ Resources: LOGGER.setLevel(logging.INFO) # Update the Default value whenever CF starts supporting More Namespaces default = ["AWS/ApplicationELB", "AWS/ApiGateway", "AWS/DynamoDB", "AWS/Lambda", "AWS/RDS", "AWS/ECS", - "AWS/ElastiCache", "AWS/ELB", "AWS/NetworkELB", "AWS/SQS", "AWS/SNS"] + "AWS/ElastiCache", "AWS/ELB", "AWS/NetworkELB", "AWS/SQS", "AWS/SNS", "AWS/EC2"] cw_metrics_specific = ["SQS", "SNS"] def lambda_handler(event, context): @@ -999,7 +999,8 @@ Resources: ThirdMetricsSourceNamespace: "ELB" CreateFourthMetricsSource: !GetAtt Primerinvoke.NetworkELB FourthMetricsSourceNamespace: "NetworkELB" - CreateFifthMetricsSource: "No" + CreateFifthMetricsSource: !GetAtt Primerinvoke.EC2 + FifthMetricsSourceNamespace: "EC2" CloudWatchMetricsThirdStack: Type: AWS::CloudFormation::Stack diff --git a/aws-observability/apps/common/test/TestTemplate.yaml b/aws-observability/apps/common/test/TestTemplate.yaml index ba160cbc..f8189364 100644 --- a/aws-observability/apps/common/test/TestTemplate.yaml +++ b/aws-observability/apps/common/test/TestTemplate.yaml @@ -37,7 +37,7 @@ Tests: MetaDataSourceName: 'Sourabh MetaData Source' CreateCloudWatchMetricsSource: 'Yes' CloudWatchMetricsSourceName: 'Sourabh CW Metrics Source' - CloudWatchMetricsNameSpaces: 'AWS/ApplicationELB, AWS/ApiGateway, AWS/DynamoDB, AWS/Lambda, AWS/RDS, AWS/ECS, AWS/ElastiCache, AWS/ELB, AWS/NetworkELB, AWS/SQS, AWS/SNS' + CloudWatchMetricsNameSpaces: 'AWS/ApplicationELB, AWS/ApiGateway, AWS/DynamoDB, AWS/Lambda, AWS/RDS, AWS/ECS, AWS/ElastiCache, AWS/ELB, AWS/NetworkELB, AWS/SQS, AWS/SNS, AWS/EC2' CreateALBLogSource: 'Yes' CreateALBS3Bucket: 'Yes' ALBS3LogsBucketName: 'cf-templates-1qpf3unpuo1hw-ap-south-1' @@ -183,7 +183,7 @@ Tests: CreateFifthMetricsSource: 'No' FifthMetricsSourceNamespace: '' KinesisFirehoseMetricsStack: - Section1bNamespaceFilter: 'AWS/ApplicationELB, AWS/ApiGateway, AWS/DynamoDB, AWS/Lambda, AWS/RDS, AWS/ECS, AWS/ElastiCache, AWS/ELB, AWS/NetworkELB, AWS/SQS, AWS/SNS' + Section1bNamespaceFilter: 'AWS/ApplicationELB, AWS/ApiGateway, AWS/DynamoDB, AWS/Lambda, AWS/RDS, AWS/ECS, AWS/ElastiCache, AWS/ELB, AWS/NetworkELB, AWS/SQS, AWS/SNS, AWS/EC2' Section2aCreateS3Bucket: 'No' Section2bFailedDataS3Bucket: "aws-observability-logs" KinesisFirehoseLogsStack: diff --git a/aws-observability/scripts/DeployTemplate/parameters-default.json b/aws-observability/scripts/DeployTemplate/parameters-default.json index 41979189..fd13e7a8 100644 --- a/aws-observability/scripts/DeployTemplate/parameters-default.json +++ b/aws-observability/scripts/DeployTemplate/parameters-default.json @@ -7,7 +7,7 @@ "Section2aAccountAlias=", "Section3aInstallObservabilityApps=No", "Section4aCreateMetricsSourceOptions=None", - "Section4bMetricsNameSpaces=AWS/ApplicationELB, AWS/ApiGateway, AWS/DynamoDB, AWS/Lambda, AWS/RDS, AWS/ECS, AWS/ElastiCache, AWS/ELB, AWS/NetworkELB, AWS/SQS, AWS/SNS", + "Section4bMetricsNameSpaces=AWS/ApplicationELB, AWS/ApiGateway, AWS/DynamoDB, AWS/Lambda, AWS/RDS, AWS/ECS, AWS/ElastiCache, AWS/ELB, AWS/NetworkELB, AWS/SQS, AWS/SNS, AWS/EC2", "Section4cCloudWatchExistingSourceAPIUrl=", "Section5aAutoEnableS3LogsALBResourcesOptions=None", "Section5bALBCreateLogSource=No", diff --git a/aws-observability/templates/sumologic_observability.master.template.yaml b/aws-observability/templates/sumologic_observability.master.template.yaml index 52920f67..b203d910 100755 --- a/aws-observability/templates/sumologic_observability.master.template.yaml +++ b/aws-observability/templates/sumologic_observability.master.template.yaml @@ -221,8 +221,8 @@ Parameters: - 'Kinesis Firehose Metrics Source' - 'None' Section4bMetricsNameSpaces: - Default: "AWS/ApplicationELB, AWS/ApiGateway, AWS/DynamoDB, AWS/Lambda, AWS/RDS, AWS/ECS, AWS/ElastiCache, AWS/ELB, AWS/NetworkELB, AWS/SQS, AWS/SNS" - Description: "Provide Comma delimited list of the namespaces which will be used for both AWS CloudWatch Metrics and Inventory Sources. Default will be AWS/ApplicationELB, AWS/ApiGateway, AWS/DynamoDB, AWS/Lambda, AWS/RDS, AWS/ECS, AWS/ElastiCache, AWS/ELB, AWS/NetworkELB, AWS/SQS, AWS/SNS. AWS/AutoScaling will be appended to Namespaces for Inventory Sources. See the list of AWS services that publish CloudWatch metrics: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aws-services-cloudwatch-metrics.html" + Default: "AWS/ApplicationELB, AWS/ApiGateway, AWS/DynamoDB, AWS/Lambda, AWS/RDS, AWS/ECS, AWS/ElastiCache, AWS/ELB, AWS/NetworkELB, AWS/SQS, AWS/SNS, AWS/EC2" + Description: "Provide Comma delimited list of the namespaces which will be used for both AWS CloudWatch Metrics and Inventory Sources. Default will be AWS/ApplicationELB, AWS/ApiGateway, AWS/DynamoDB, AWS/Lambda, AWS/RDS, AWS/ECS, AWS/ElastiCache, AWS/ELB, AWS/NetworkELB, AWS/SQS, AWS/SNS, AWS/EC2. AWS/AutoScaling will be appended to Namespaces for Inventory Sources. See the list of AWS services that publish CloudWatch metrics: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aws-services-cloudwatch-metrics.html" Type: String Section4cCloudWatchExistingSourceAPIUrl: Type: String From b732a998a3866b4ddd37e0ef0d82a96e6bebd2b6 Mon Sep 17 00:00:00 2001 From: Nitin Pande Date: Thu, 7 Apr 2022 14:27:31 +0530 Subject: [PATCH 06/82] Updated cloudformation test template for EC2 metric collection and inventory source test. --- aws-observability/templates/test/TestTemplate.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/aws-observability/templates/test/TestTemplate.yaml b/aws-observability/templates/test/TestTemplate.yaml index e806a6b0..658524ce 100644 --- a/aws-observability/templates/test/TestTemplate.yaml +++ b/aws-observability/templates/test/TestTemplate.yaml @@ -19,7 +19,7 @@ Tests: Section1dSumoLogicOrganizationId: '${US1_ENTERPRISE_ORG_ID}' Section2aAccountAlias: '' Section2bAccountAliasMappingS3URL: '' - Section4bMetricsNameSpaces: 'AWS/ApiGateway, AWS/DynamoDB, AWS/ElastiCache, AWS/SQS, AWS/SNS' + Section4bMetricsNameSpaces: 'AWS/ApiGateway, AWS/DynamoDB, AWS/ElastiCache, AWS/SQS, AWS/SNS, AWS/EC2' Assertions: - AssertType: ResourceExistence Assert: @@ -1131,7 +1131,7 @@ Tests: Section7aLambdaCreateCloudWatchLogsSourceOptions: 'Lambda Log Forwarder' Section7cAutoSubscribeLogGroupsLambdaOptions: 'New' Section8aRootCauseExplorerOptions: 'Xray Source' - Section4bMetricsNameSpaces: 'AWS/ElastiCache, AWS/ELB, AWS/NetworkELB, AWS/ApplicationELB, AWS/RDS, AWS/SQS' + Section4bMetricsNameSpaces: 'AWS/ElastiCache, AWS/ELB, AWS/NetworkELB, AWS/ApplicationELB, AWS/RDS, AWS/SQS, AWS/EC2' Section9aAutoEnableS3LogsELBResourcesOptions: 'New' Section9bELBCreateLogSource: 'Yes' Assertions: @@ -2059,7 +2059,7 @@ Tests: Section6dCloudTrailBucketPathExpression: '*abc*' Section7aLambdaCreateCloudWatchLogsSourceOptions: 'None' Section8aRootCauseExplorerOptions: 'Inventory Source' - Section4bMetricsNameSpaces: 'AWS/ApiGateway, AWS/DynamoDB, AWS/ElastiCache' + Section4bMetricsNameSpaces: 'AWS/ApiGateway, AWS/DynamoDB, AWS/ElastiCache, AWS/EC2' Section9aAutoEnableS3LogsELBResourcesOptions: 'None' Section9bELBCreateLogSource: 'Yes' Assertions: From e00a0a0817aed4cab5608d7b558dd031b868f49e Mon Sep 17 00:00:00 2001 From: Nitin Pande Date: Wed, 4 May 2022 22:17:14 +0530 Subject: [PATCH 07/82] updated dynamodb overview and threatintel dashboards to handle filters and threatintel query optimization. --- aws-observability/json/DynamoDb-App.json | 181 ++++++++++++++++++----- 1 file changed, 144 insertions(+), 37 deletions(-) diff --git a/aws-observability/json/DynamoDb-App.json b/aws-observability/json/DynamoDb-App.json index 6bf0995a..aa4492ad 100644 --- a/aws-observability/json/DynamoDb-App.json +++ b/aws-observability/json/DynamoDb-App.json @@ -8,7 +8,6 @@ "name": "1. AWS DynamoDB - Capacity Planning", "description": "See the details of your DynamoDB capacity including the provisioned read/write consumed, read/write throttle events, and throttled requests.", "title": "1. AWS DynamoDB - Capacity Planning", - "rootPanel": null, "theme": "Light", "topologyLabelMap": { "data": { @@ -98,22 +97,26 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "namespace={{namespace}} account={{account}} region={{region}} tablename={{tablename}} metric=ProvisionedReadCapacityUnits Statistic=Maximum | sum by account, region, namespace, tablename", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" }, { + "transient": false, "queryString": "namespace={{namespace}} account={{account}} region={{region}} tablename={{tablename}} metric=ConsumedReadCapacityUnits Statistic=Maximum | sum by account, region, namespace, tablename", "queryType": "Metrics", "queryKey": "B", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -132,22 +135,26 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "namespace={{namespace}} account={{account}} region={{region}} tablename={{tablename}} metric=ProvisionedWriteCapacityUnits Statistic=Maximum | sum by account, region, namespace, tablename", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" }, { + "transient": false, "queryString": "namespace={{namespace}} account={{account}} region={{region}} tablename={{tablename}} metric=ConsumedWriteCapacityUnits Statistic=Maximum | sum by account, region, namespace, tablename", "queryType": "Metrics", "queryKey": "B", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -166,12 +173,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "namespace={{namespace}} account={{account}} region={{region}} tablename={{tablename}} metric=ThrottledRequests Statistic=sum (operation=*get* or operation=*scan* or operation=*query*) | sum by account, region, namespace, tablename, operation", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -190,12 +199,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "namespace={{namespace}} account={{account}} region={{region}} tablename={{tablename}} metric=ThrottledRequests Statistic=sum (operation=*get* or operation=*scan* or operation=*query*) | sum by account, region, namespace, tablename, operation", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -214,12 +225,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "namespace={{namespace}} account={{account}} region={{region}} tablename={{tablename}} metric=ThrottledRequests Statistic=sum (operation=*update* or operation=*put* or operation=*delete* or operation=*write*) | sum by account, region, namespace, tablename, operation", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -238,12 +251,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "namespace={{namespace}} account={{account}} region={{region}} tablename={{tablename}} metric=ThrottledRequests Statistic=sum (operation=*update* or operation=*put* or operation=*delete* or operation=*write*) | sum by account, region, namespace, tablename, operation", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -262,12 +277,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "namespace={{namespace}} account={{account}} region={{region}} tablename={{tablename}} metric=ReadThrottleEvents Statistic=sum | sum by account, region, namespace, tablename", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -286,12 +303,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "namespace={{namespace}} account={{account}} region={{region}} tablename={{tablename}} metric=WriteThrottleEvents Statistic=sum | sum by account, region, namespace, tablename", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -310,22 +329,26 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": " region={{region}} namespace={{namespace}} account={{account}} metric=AccountMaxReads Statistic=Average | avg by account, region, namespace", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" }, { + "transient": false, "queryString": " region={{region}} namespace={{namespace}} account={{account}} metric=AccountMaxTableLevelReads Statistic=Average | avg by account, region, namespace", "queryType": "Metrics", "queryKey": "B", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -344,22 +367,26 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": " region={{region}} namespace={{namespace}} account={{account}} metric=AccountMaxWrites Statistic=Average | avg by account, region, namespace", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" }, { + "transient": false, "queryString": " region={{region}} namespace={{namespace}} account={{account}} metric=AccountMaxTableLevelWrites Statistic=Average | avg by account, region, namespace", "queryType": "Metrics", "queryKey": "B", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -401,7 +428,8 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" }, { "id": null, @@ -415,7 +443,8 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" }, { "id": null, @@ -429,7 +458,8 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" }, { "id": null, @@ -443,7 +473,8 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" } ], "coloringRules": [] @@ -453,7 +484,6 @@ "name": "1. AWS DynamoDB - Overview", "description": "See the overview of your DynamoDB environment including the events, errors, requests, users, and latency.", "title": "1. AWS DynamoDB - Overview", - "rootPanel": null, "theme": "Light", "topologyLabelMap": { "data": { @@ -567,12 +597,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "namespace={{namespace}} region={{region}} account={{account}} metric=AccountProvisionedWriteCapacityUtilization Statistic=Average | avg", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -591,12 +623,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "namespace={{namespace}} region={{region}} account={{account}} metric=UserErrors Statistic=SampleCount | sum", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -615,12 +649,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "namespace={{namespace}} region={{region}} account={{account}} metric=SystemErrors Statistic=SampleCount | sum", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -639,12 +675,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "namespace={{namespace}} region={{region}} account={{account}} tablename={{tablename}} metric=ConditionalCheckFailedRequests Statistic=SampleCount | sum", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -663,12 +701,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "namespace={{namespace}} region={{region}} account={{account}} tablename={{tablename}} metric=TransactionConflict Statistic=SampleCount | sum", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -687,12 +727,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "namespace={{namespace}} region={{region}} account={{account}} tablename={{tablename}} metric=SuccessfulRequestLatency Statistic=Average | sum by account, region, namespace, tablename", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -711,12 +753,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "namespace={{namespace}} region={{region}} account={{account}} tablename={{tablename}} metric=SuccessfulRequestLatency Statistic=SampleCount | sum by account, region, namespace, tablename", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -735,22 +779,26 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "namespace={{namespace}} region={{region}} account={{account}} metric=UserErrors Statistic=SampleCount | sum by account, region, namespace", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" }, { + "transient": false, "queryString": "namespace={{namespace}} region={{region}} account={{account}} metric=SystemErrors Statistic=SampleCount | sum by account, region, namespace", "queryType": "Metrics", "queryKey": "B", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -769,12 +817,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "Region={{region}} account={{account}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| timeslice 5m\n| count by EventName, _timeslice\n| transpose row _timeslice column EventName ", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -788,17 +838,19 @@ "id": null, "key": "panelpane-064f62b0b148db44", "title": "Top 10 Errors", - "visualSettings": "{\"general\":{\"mode\":\"distribution\",\"type\":\"table\"}}", + "visualSettings": "{\"general\":{\"mode\":\"distribution\",\"type\":\"table\"},\"series\":{}}", "keepVisualSettingsConsistentWithParent": true, "panelType": "SumoSearchPanel", "queries": [ { - "queryString": "Region={{region}} account={{account}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\" errorCode errorMessage\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\", \"errorCode\", \"errorMessage\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName, ErrorCode, ErrorMessage nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| count as Count by ErrorCode, ErrorMessage\n| sort by Count\n| limit 10", + "transient": false, + "queryString": "account={{account}} Region={{region}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\" errorCode errorMessage\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\", \"errorCode\", \"errorMessage\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName, ErrorCode, ErrorMessage nodrop\n| where (tolowercase(tablename) matches tolowercase(\"{{tablename}}\")) or isblank(tablename)\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| count as Count by ErrorCode, ErrorMessage\n| sort by Count\n| limit 10", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -812,17 +864,19 @@ "id": null, "key": "panelpane-c0cb88ffbad6eb42", "title": "Top 5 IAM Users", - "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"pie\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"fillOpacity\":1,\"startAngle\":270,\"innerRadius\":\"50%\",\"maxNumOfSlices\":10,\"mode\":\"distribution\"},\"legend\":{\"enabled\":false}}", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"pie\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"fillOpacity\":1,\"startAngle\":270,\"innerRadius\":\"50%\",\"maxNumOfSlices\":10,\"mode\":\"distribution\"},\"legend\":{\"enabled\":false},\"series\":{}}", "keepVisualSettingsConsistentWithParent": true, "panelType": "SumoSearchPanel", "queries": [ { - "queryString": "account={{account}} namespace={{namespace}} Region={{region}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| count as Count by UserName\n| sort Count \n| limit 5", + "transient": false, + "queryString": "account={{account}} namespace={{namespace}} Region={{region}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| where (tolowercase(tablename) matches tolowercase(\"{{tablename}}\")) or isblank(tablename)\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| count as Count by UserName\n| sort Count, UserName asc\n| limit 5", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -841,12 +895,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "namespace={{namespace}} region={{region}} account={{account}} metric=AccountProvisionedReadCapacityUtilization Statistic=Average | avg", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -860,17 +916,19 @@ "id": null, "key": "panelPANE-4AD569BB8E29FA47", "title": "Top 5 Events", - "visualSettings": "{\"general\":{\"mode\":\"distribution\",\"type\":\"pie\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"fillOpacity\":1,\"startAngle\":270,\"innerRadius\":\"50%\",\"maxNumOfSlices\":10},\"title\":{\"fontSize\":16},\"legend\":{\"enabled\":false}}", + "visualSettings": "{\"general\":{\"mode\":\"distribution\",\"type\":\"pie\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"fillOpacity\":1,\"startAngle\":270,\"innerRadius\":\"50%\",\"maxNumOfSlices\":10},\"title\":{\"fontSize\":16},\"legend\":{\"enabled\":false},\"series\":{}}", "keepVisualSettingsConsistentWithParent": true, "panelType": "SumoSearchPanel", "queries": [ { - "queryString": "account={{account}} namespace={{namespace}} Region={{region}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| count as count by EventName\n| sort count \n| limit 5", + "transient": false, + "queryString": "account={{account}} namespace={{namespace}} Region={{region}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| where (tolowercase(tablename) matches tolowercase(\"{{tablename}}\")) or isblank(tablename)\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| count as count by EventName\n| sort count, EventName asc\n| limit 5", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -916,12 +974,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "namespace={{namespace}} account={{account}} region={{region}} tablename={{tablename}} metric=ThrottledRequests Statistic=sum | sum by account, region, namespace, tablename", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -940,12 +1000,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "account={{account}} namespace={{namespace}} region={{region}} tablename={{tablename}} metric=ConditionalCheckFailedRequests Statistic=SampleCount | sum by account, region, namespace, tablename", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -969,7 +1031,8 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" }, { "id": null, @@ -983,7 +1046,8 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" }, { "id": null, @@ -997,7 +1061,8 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" }, { "id": null, @@ -1011,7 +1076,8 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" } ], "coloringRules": [] @@ -1021,7 +1087,6 @@ "name": "2. AWS DynamoDB - Latency and Errors", "description": "See the details of errors and latency of your DynamoDB including the user error, system error, failed request, and latency.", "title": "2. AWS DynamoDB - Latency and Errors", - "rootPanel": null, "theme": "Light", "topologyLabelMap": { "data": { @@ -1079,12 +1144,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "namespace={{namespace}} region={{region}} account={{account}} tablename={{tablename}} metric=SuccessfulRequestLatency Statistic=Average (operation=*get* or operation=*scan* or operation=*query*) | sum by account, region, namespace, tablename, operation", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1103,12 +1170,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "namespace={{namespace}} region={{region}} account={{account}} tablename={{tablename}} metric=SuccessfulRequestLatency Statistic=Average (operation=*update* or operation=*put* or operation=*delete* or operation=*write*) | sum by account, region, namespace, tablename, operation", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1127,12 +1196,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "account={{account}} namespace={{namespace}} region={{region}} tablename={{tablename}} metric=ConditionalCheckFailedRequests Statistic=SampleCount | sum by account, region, namespace, tablename", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1151,12 +1222,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "account={{account}} namespace={{namespace}} region={{region}} tablename={{tablename}} metric=TransactionConflict Statistic=SampleCount | sum by account, region, namespace, tablename", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1180,7 +1253,8 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" }, { "id": null, @@ -1194,7 +1268,8 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" }, { "id": null, @@ -1208,7 +1283,8 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" }, { "id": null, @@ -1222,7 +1298,8 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" } ], "coloringRules": [] @@ -1232,7 +1309,6 @@ "name": "3. AWS DynamoDB - Events", "description": "See the details on events in your DynamoDB including the location, users, errors, updates, creations, and deletions to tables.", "title": "3. AWS DynamoDB - Events", - "rootPanel": null, "theme": "Light", "topologyLabelMap": { "data": { @@ -1302,12 +1378,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "account={{account}} namespace={{namespace}} region={{region}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where tolowercase(tablename) matches tolowercase(\"{{tablename}}\")\n| count by EventName\n| sort by _count, EventName asc\n| limit 5", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1326,12 +1404,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "account={{account}} namespace={{namespace}} region={{region}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\" as EventName, Region, tablename, SourceIp, UserName\n| where tolowercase(tablename) matches tolowercase(\"{{tablename}}\")\n| timeslice 5m\n| count by EventName, _timeslice\n| transpose row _timeslice column EventName \n| fillmissing timeslice (5m)", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1350,12 +1430,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "account={{account}} namespace={{namespace}} region={{region}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\" errorCode errorMessage\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\", \"errorCode\", \"errorMessage\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName, ErrorCode, ErrorMessage nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where tolowercase(tablename) matches tolowercase(\"{{tablename}}\") and !isEmpty(ErrorCode)\n| count", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1374,12 +1456,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "account={{account}} namespace={{namespace}} region={{region}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where tolowercase(tablename) matches tolowercase(\"{{tablename}}\")\n| count as count by UserName\n| sort count \n| limit 10", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1398,12 +1482,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "account={{account}} namespace={{namespace}} region={{region}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\" errorCode errorMessage\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\", \"errorCode\", \"errorMessage\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName, ErrorCode, ErrorMessage nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where tolowercase(tablename) matches tolowercase(\"{{tablename}}\") and !isEmpty(ErrorCode)\n| count as Count by ErrorCode, ErrorMessage, EventName, UserName, SourceIp\n| sort by Count\n| limit 20", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1422,12 +1508,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "account={{account}} namespace={{namespace}} region={{region}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\", \"requestParameters.keySchema\", \"requestParameters.attributeDefinitions\", \"userAgent\", \"responseElements.tableDescription.provisionedThroughput\", \"userIdentity.sessionContext.attributes.mfaAuthenticated\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName, TableSchema, AttributeDefinition, UserAgent, ProvisionedThroughput, MFAAuthenticated nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where tolowercase(tablename) matches tolowercase(\"{{tablename}}\")\n| formatDate(_messageTime, \"MM/dd/yyyy HH:mm:ss:SSS\") as MessageDate\n| count as Count by MessageDate, EventName, tablename, UserName, SourceIp, MFAAuthenticated\n| sort by MessageDate\n| fields MessageDate, EventName, tablename, UserName, SourceIp, MFAAuthenticated", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1446,12 +1534,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "account={{account}} namespace={{namespace}} region={{region}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where tolowercase(tablename) matches tolowercase(\"{{tablename}}\")\n| count by SourceIp\n| lookup latitude, longitude, country_code, country_name, region, city, postal_code from geo://location on ip = SourceIp\n| count by latitude, longitude, country_code, country_name, region, city, postal_code", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1475,7 +1565,8 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" }, { "id": null, @@ -1489,7 +1580,8 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" }, { "id": null, @@ -1503,7 +1595,8 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" }, { "id": null, @@ -1517,7 +1610,8 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" } ], "coloringRules": [] @@ -1527,7 +1621,6 @@ "name": "4. AWS DynamoDB - Threat Intel", "description": "See the details of IP threats including the count, location, and highly malicious IP threats.", "title": "4. AWS DynamoDB - Threat Intel", - "rootPanel": null, "theme": "Light", "topologyLabelMap": { "data": { @@ -1589,12 +1682,14 @@ "panelType": "SumoSearchPanel", "queries": [ { - "queryString": "region={{region}} account={{account}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where tolowercase(tablename) matches tolowercase(\"{{tablename}}\")\n| where SourceIp != \"0.0.0.0\" and SourceIp != \"127.0.0.1\"\n| count as ip_count by SourceIp\n| lookup type, actor, raw, threatlevel as malicious_confidence from sumo://threat/cs on threat=SourceIp \n| json field=raw \"labels[*].name\" as label_name \n| replace(label_name, \"\\\\/\",\"->\") as label_name\n| replace(label_name, \"\\\"\",\" \") as label_name\n| where type=\"ip_address\" and !isNull(malicious_confidence)\n| if (isEmpty(actor), \"Unassigned\", actor) as Actor\n| sum (ip_count) as threat_count", + "transient": false, + "queryString": "region={{region}} account={{account}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where (tolowercase(tablename) matches tolowercase(\"{{tablename}}\")) or isBlank(tablename)\n| where SourceIp != \"0.0.0.0\" and SourceIp != \"127.0.0.1\"\n| count as ip_count by SourceIp\n| lookup type, actor, raw, threatlevel as malicious_confidence from sumo://threat/cs on threat=SourceIp \n| json field=raw \"labels[*].name\" as label_name \n| replace(label_name, \"\\\\/\",\"->\") as label_name\n| replace(label_name, \"\\\"\",\" \") as label_name\n| where type=\"ip_address\" and !isNull(malicious_confidence)\n| if (isEmpty(actor), \"Unassigned\", actor) as Actor\n| sum (ip_count) as threat_count", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1613,12 +1708,14 @@ "panelType": "SumoSearchPanel", "queries": [ { - "queryString": "region={{region}} account={{account}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where tolowercase(tablename) matches tolowercase(\"{{tablename}}\")\n| where SourceIp != \"0.0.0.0\" and SourceIp != \"127.0.0.1\"\n| timeslice 5m\n| count as ip_count by SourceIp, tablename\n| lookup Type, Actor, Raw, ThreatLevel as MaliciousConfidence from sumo://threat/cs on threat=SourceIp \n| json field=Raw \"labels[*].name\" as LabelName \n| replace(LabelName, \"\\\\/\",\"->\") as LabelName\n| replace(LabelName, \"\\\"\",\" \") as LabelName\n| where type=\"ip_address\" and MaliciousConfidence=\"high\"\n| if (isEmpty(Actor), \"Unassigned\", Actor) as Actor\n| sum (ip_count) as ThreatCount by SourceIp, MaliciousConfidence, tablename, Actor, LabelName\n| sort by ThreatCount", + "transient": false, + "queryString": "region={{region}} account={{account}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where (tolowercase(tablename) matches tolowercase(\"{{tablename}}\")) or isBlank(tablename)\n| where SourceIp != \"0.0.0.0\" and SourceIp != \"127.0.0.1\"\n| count as ip_count by SourceIp, tablename\n| lookup Type, Actor, Raw, ThreatLevel as MaliciousConfidence from sumo://threat/cs on threat=SourceIp \n| json field=Raw \"labels[*].name\" as LabelName \n| replace(LabelName, \"\\\\/\",\"->\") as LabelName\n| replace(LabelName, \"\\\"\",\" \") as LabelName\n| where type=\"ip_address\" and MaliciousConfidence=\"high\"\n| if (isEmpty(Actor), \"Unassigned\", Actor) as Actor\n| sum (ip_count) as ThreatCount by SourceIp, MaliciousConfidence, tablename, Actor, LabelName\n| sort by ThreatCount", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1637,12 +1734,14 @@ "panelType": "SumoSearchPanel", "queries": [ { - "queryString": "region={{region}} account={{account}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where tolowercase(tablename) matches tolowercase(\"{{tablename}}\")\n| where SourceIp != \"0.0.0.0\" and SourceIp != \"127.0.0.1\"\n| count as ip_count by SourceIp\n| lookup Type, Actor, Raw, ThreatLevel as MaliciousConfidence from sumo://threat/cs on threat=SourceIp \n| json field=Raw \"labels[*].name\" as LabelName \n| replace(LabelName, \"\\\\/\",\"->\") as LabelName\n| replace(LabelName, \"\\\"\",\" \") as LabelName\n| where type=\"ip_address\" and !isNull(MaliciousConfidence)\n| if (isEmpty(Actor), \"Unassigned\", Actor) as Actor\n| sum (ip_count) as ThreatCount by SourceIp, MaliciousConfidence, Actor, LabelName\n| sort by ThreatCount", + "transient": false, + "queryString": "region={{region}} account={{account}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where (tolowercase(tablename) matches tolowercase(\"{{tablename}}\")) or isBlank(tablename)\n| where SourceIp != \"0.0.0.0\" and SourceIp != \"127.0.0.1\"\n| count as ip_count by SourceIp\n| lookup Type, Actor, Raw, ThreatLevel as MaliciousConfidence from sumo://threat/cs on threat=SourceIp \n| json field=Raw \"labels[*].name\" as LabelName \n| replace(LabelName, \"\\\\/\",\"->\") as LabelName\n| replace(LabelName, \"\\\"\",\" \") as LabelName\n| where type=\"ip_address\" and !isNull(MaliciousConfidence)\n| if (isEmpty(Actor), \"Unassigned\", Actor) as Actor\n| sum (ip_count) as ThreatCount by SourceIp, MaliciousConfidence, Actor, LabelName\n| sort by ThreatCount, MaliciousConfidence asc", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1656,17 +1755,19 @@ "id": null, "key": "panelpane-c605d948852ffb48", "title": "Malicious Confidence", - "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"bar\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"fillOpacity\":1,\"mode\":\"distribution\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{}}", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"bar\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"fillOpacity\":1,\"mode\":\"distribution\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[]}", "keepVisualSettingsConsistentWithParent": true, "panelType": "SumoSearchPanel", "queries": [ { - "queryString": "region={{region}} account={{account}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where tolowercase(tablename) matches tolowercase(\"{{tablename}}\")\n| where SourceIp != \"0.0.0.0\" and SourceIp != \"127.0.0.1\"\n| count as ip_count by SourceIp\n| lookup type, actor, raw, threatlevel as malicious_confidence from sumo://threat/cs on threat=SourceIp \n| json field=raw \"labels[*].name\" as label_name \n| replace(label_name, \"\\\\/\",\"->\") as label_name\n| replace(label_name, \"\\\"\",\" \") as label_name\n| where type=\"ip_address\"\n| if (isEmpty(actor), \"Unassigned\", actor) as Actor\n| count by malicious_confidence\n| sort by _count", + "transient": false, + "queryString": "region={{region}} account={{account}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where (tolowercase(tablename) matches tolowercase(\"{{tablename}}\")) or isBlank(tablename)\n| where SourceIp != \"0.0.0.0\" and SourceIp != \"127.0.0.1\"\n| count as ip_count by SourceIp\n| lookup type, actor, raw, threatlevel as malicious_confidence from sumo://threat/cs on threat=SourceIp \n| json field=raw \"labels[*].name\" as label_name \n| replace(label_name, \"\\\\/\",\"->\") as label_name\n| replace(label_name, \"\\\"\",\" \") as label_name\n| where type=\"ip_address\"\n| if (isEmpty(actor), \"Unassigned\", actor) as Actor\n| sum(ip_count) as ThreatCount by malicious_confidence\n| sort by ThreatCount, malicious_confidence asc", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1685,12 +1786,14 @@ "panelType": "SumoSearchPanel", "queries": [ { - "queryString": "region={{region}} account={{account}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where tolowercase(tablename) matches tolowercase(\"{{tablename}}\")\n| where SourceIp != \"0.0.0.0\" and SourceIp != \"127.0.0.1\"\n| count as ip_count by SourceIp\n| lookup type, actor, raw, threatlevel as malicious_confidence from sumo://threat/cs on threat=SourceIp \n| json field=raw \"labels[*].name\" as label_name \n| replace(label_name, \"\\\\/\",\"->\") as label_name\n| replace(label_name, \"\\\"\",\" \") as label_name\n| where type=\"ip_address\" and !isNull(malicious_confidence)\n| if (isEmpty(actor), \"Unassigned\", actor) as Actor\n| count by SourceIp\n| lookup latitude, longitude, country_code, country_name, region, city, postal_code from geo://location on ip = SourceIp\n| count by latitude, longitude, country_code, country_name, region, city, postal_code\n| where !isnull(latitude)", + "transient": false, + "queryString": "region={{region}} account={{account}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where (tolowercase(tablename) matches tolowercase(\"{{tablename}}\")) or isBlank(tablename)\n| where SourceIp != \"0.0.0.0\" and SourceIp != \"127.0.0.1\"\n| count as ip_count by SourceIp\n| lookup type, actor, raw, threatlevel as malicious_confidence from sumo://threat/cs on threat=SourceIp \n| json field=raw \"labels[*].name\" as label_name \n| replace(label_name, \"\\\\/\",\"->\") as label_name\n| replace(label_name, \"\\\"\",\" \") as label_name\n| where type=\"ip_address\" and !isNull(malicious_confidence)\n| if (isEmpty(actor), \"Unassigned\", actor) as Actor\n| lookup latitude, longitude from geo://location on ip = SourceIp\n| count by latitude, longitude\n| where !isnull(latitude)", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1714,7 +1817,8 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" }, { "id": null, @@ -1728,7 +1832,8 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" }, { "id": null, @@ -1742,7 +1847,8 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" }, { "id": null, @@ -1756,7 +1862,8 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" } ], "coloringRules": [] From ca974b1aa1cddd9a19f6c7252ba64f75eb2621c7 Mon Sep 17 00:00:00 2001 From: Nitin Pande Date: Thu, 5 May 2022 10:49:16 +0530 Subject: [PATCH 08/82] Updated lambda cw logs FER for TF. Added new FER to extract namespace from generic CW logs in both CF and TF. Updated README.md --- .../app-modules/dynamodb/README.md | 1 + .../app-modules/lambda/README.md | 1 + .../app-modules/lambda/app.tf | 18 +++++++++++++-- .../apps/lambda/lambda_app.template.yaml | 23 ++++++++++++++++++- 4 files changed, 40 insertions(+), 3 deletions(-) diff --git a/aws-observability-terraform/app-modules/dynamodb/README.md b/aws-observability-terraform/app-modules/dynamodb/README.md index 9ee8b067..b6c48aae 100644 --- a/aws-observability-terraform/app-modules/dynamodb/README.md +++ b/aws-observability-terraform/app-modules/dynamodb/README.md @@ -27,6 +27,7 @@ No resources. | [email\_notifications](#input\_email\_notifications) | Email Notifications to be sent by the alert. |
list(object(
{
connection_type = string,
recipients = list(string),
subject = string,
time_zone = string,
message_body = string,
run_for_trigger_types = list(string)
}
))
| n/a | yes | | [environment](#input\_environment) | Enter au, ca, de, eu, jp, us2, in, fed or us1. Visit https://help.sumologic.com/APIs/General-API-Information/Sumo-Logic-Endpoints-and-Firewall-Security | `string` | n/a | yes | | [group\_notifications](#input\_group\_notifications) | Whether or not to group notifications for individual items that meet the trigger condition. Defaults to true. | `bool` | `true` | no | +| [json\_file\_directory\_path](#input\_json\_file\_directory\_path) | Directory path where all the JSONs are present. | `string` | n/a | yes | | [monitor\_folder\_id](#input\_monitor\_folder\_id) | Please provide a folder ID where you would like the monitors to be installed. | `string` | `""` | no | | [monitors\_disabled](#input\_monitors\_disabled) | Whether the monitors are enabled or not? | `bool` | `true` | no | diff --git a/aws-observability-terraform/app-modules/lambda/README.md b/aws-observability-terraform/app-modules/lambda/README.md index c5be3312..f2d3cd7d 100644 --- a/aws-observability-terraform/app-modules/lambda/README.md +++ b/aws-observability-terraform/app-modules/lambda/README.md @@ -27,6 +27,7 @@ No resources. | [email\_notifications](#input\_email\_notifications) | Email Notifications to be sent by the alert. |
list(object(
{
connection_type = string,
recipients = list(string),
subject = string,
time_zone = string,
message_body = string,
run_for_trigger_types = list(string)
}
))
| n/a | yes | | [environment](#input\_environment) | Enter au, ca, de, eu, jp, us2, in, fed or us1. Visit https://help.sumologic.com/APIs/General-API-Information/Sumo-Logic-Endpoints-and-Firewall-Security | `string` | n/a | yes | | [group\_notifications](#input\_group\_notifications) | Whether or not to group notifications for individual items that meet the trigger condition. Defaults to true. | `bool` | `true` | no | +| [json\_file\_directory\_path](#input\_json\_file\_directory\_path) | Directory path where all the JSONs are present. | `string` | n/a | yes | | [monitor\_folder\_id](#input\_monitor\_folder\_id) | Please provide a folder ID where you would like the monitors to be installed. | `string` | `""` | no | | [monitors\_disabled](#input\_monitors\_disabled) | Whether the monitors are enabled or not? | `bool` | `true` | no | diff --git a/aws-observability-terraform/app-modules/lambda/app.tf b/aws-observability-terraform/app-modules/lambda/app.tf index 59da4a1b..f8b8a55c 100644 --- a/aws-observability-terraform/app-modules/lambda/app.tf +++ b/aws-observability-terraform/app-modules/lambda/app.tf @@ -36,11 +36,25 @@ module "lambda_module" { }, "CloudWatchFieldExtractionRule" = { name = "AwsObservabilityLambdaCloudWatchLogsFER" - scope = "account=* region=* namespace=aws/lambda _sourceHost=/aws/lambda/*" + scope = "account=* region=* _sourceHost=/aws/lambda/*" parse_expression = < Date: Mon, 9 May 2022 14:35:19 +0530 Subject: [PATCH 09/82] DynamoDB - Updated cloudtrail specific Events dashboard for various optimizations and query fixes / updates. --- aws-observability/json/DynamoDb-App.json | 40 ++++++++++++------------ 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/aws-observability/json/DynamoDb-App.json b/aws-observability/json/DynamoDb-App.json index aa4492ad..d2377235 100644 --- a/aws-observability/json/DynamoDb-App.json +++ b/aws-observability/json/DynamoDb-App.json @@ -449,11 +449,11 @@ { "id": null, "name": "namespace", - "displayName": null, + "displayName": "namespace", "defaultValue": "aws/dynamodb", "sourceDefinition": { "variableSourceType": "MetadataVariableSourceDefinition", - "filter": "account={{account}} region={{region}}", + "filter": "account={{account}} region={{region}} namespace=aws/dynamodb", "key": "namespace" }, "allowMultiSelect": false, @@ -1052,11 +1052,11 @@ { "id": null, "name": "namespace", - "displayName": null, + "displayName": "namespace", "defaultValue": "aws/dynamodb", "sourceDefinition": { "variableSourceType": "MetadataVariableSourceDefinition", - "filter": "account={{account}} region={{region}}", + "filter": "account={{account}} region={{region}} namespace=aws/dynamodb", "key": "namespace" }, "allowMultiSelect": false, @@ -1274,11 +1274,11 @@ { "id": null, "name": "namespace", - "displayName": null, + "displayName": "namespace", "defaultValue": "aws/dynamodb", "sourceDefinition": { "variableSourceType": "MetadataVariableSourceDefinition", - "filter": "account={{account}} region={{region}}", + "filter": "account={{account}} region={{region}} namespace=aws/dynamodb", "key": "namespace" }, "allowMultiSelect": false, @@ -1307,7 +1307,7 @@ { "type": "DashboardV2SyncDefinition", "name": "3. AWS DynamoDB - Events", - "description": "See the details on events in your DynamoDB including the location, users, errors, updates, creations, and deletions to tables.", + "description": "See the details on cloudtrail audit events in your DynamoDB including the location, users, errors, updates, creations, and deletions to tables.", "title": "3. AWS DynamoDB - Events", "theme": "Light", "topologyLabelMap": { @@ -1379,7 +1379,7 @@ "queries": [ { "transient": false, - "queryString": "account={{account}} namespace={{namespace}} region={{region}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where tolowercase(tablename) matches tolowercase(\"{{tablename}}\")\n| count by EventName\n| sort by _count, EventName asc\n| limit 5", + "queryString": "account={{account}} namespace={{namespace}} region={{region}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where (tolowercase(tablename) matches tolowercase(\"{{tablename}}\")) or isBlank(tablename)\n| count by EventName\n| sort by _count, EventName asc\n| limit 5", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, @@ -1399,13 +1399,13 @@ "id": null, "key": "panelpane-da8bb2b4afbc5948", "title": "Events Over Time", - "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"column\",\"displayType\":\"stacked\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"fillOpacity\":1,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{}}", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"column\",\"displayType\":\"stacked\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"fillOpacity\":1,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[]}", "keepVisualSettingsConsistentWithParent": true, "panelType": "SumoSearchPanel", "queries": [ { "transient": false, - "queryString": "account={{account}} namespace={{namespace}} region={{region}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\" as EventName, Region, tablename, SourceIp, UserName\n| where tolowercase(tablename) matches tolowercase(\"{{tablename}}\")\n| timeslice 5m\n| count by EventName, _timeslice\n| transpose row _timeslice column EventName \n| fillmissing timeslice (5m)", + "queryString": "account={{account}} namespace={{namespace}} region={{region}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\" as EventName, Region, tablename, SourceIp, UserName\n| where (tolowercase(tablename) matches tolowercase(\"{{tablename}}\")) or isBlank(tablename)\n| timeslice 5m\n| count by EventName, _timeslice\n| transpose row _timeslice column EventName \n| fillmissing timeslice (5m)", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, @@ -1431,7 +1431,7 @@ "queries": [ { "transient": false, - "queryString": "account={{account}} namespace={{namespace}} region={{region}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\" errorCode errorMessage\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\", \"errorCode\", \"errorMessage\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName, ErrorCode, ErrorMessage nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where tolowercase(tablename) matches tolowercase(\"{{tablename}}\") and !isEmpty(ErrorCode)\n| count", + "queryString": "account={{account}} namespace={{namespace}} region={{region}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\" errorCode errorMessage\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\", \"errorCode\", \"errorMessage\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName, ErrorCode, ErrorMessage nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where (tolowercase(tablename) matches tolowercase(\"{{tablename}}\")) or isBlank(tablename)\n| where !isBlank(errorCode)\n| count", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, @@ -1451,13 +1451,13 @@ "id": null, "key": "panelpane-b8faa804b5a87b46", "title": "Top 10 IAM Users", - "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"bar\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#ED3CPE\",\"outlierBandFillOpacity\":0.15,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"fillOpacity\":1,\"mode\":\"distribution\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\"}},\"legend\":{\"enabled\":false,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{}}", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"bar\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#ED3CPE\",\"outlierBandFillOpacity\":0.15,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"fillOpacity\":1,\"mode\":\"distribution\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\"}},\"legend\":{\"enabled\":false,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[]}", "keepVisualSettingsConsistentWithParent": true, "panelType": "SumoSearchPanel", "queries": [ { "transient": false, - "queryString": "account={{account}} namespace={{namespace}} region={{region}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where tolowercase(tablename) matches tolowercase(\"{{tablename}}\")\n| count as count by UserName\n| sort count \n| limit 10", + "queryString": "account={{account}} namespace={{namespace}} region={{region}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where (tolowercase(tablename) matches tolowercase(\"{{tablename}}\")) or isBlank(tablename)\n| count as count by UserName\n| sort count \n| limit 10", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, @@ -1483,7 +1483,7 @@ "queries": [ { "transient": false, - "queryString": "account={{account}} namespace={{namespace}} region={{region}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\" errorCode errorMessage\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\", \"errorCode\", \"errorMessage\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName, ErrorCode, ErrorMessage nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where tolowercase(tablename) matches tolowercase(\"{{tablename}}\") and !isEmpty(ErrorCode)\n| count as Count by ErrorCode, ErrorMessage, EventName, UserName, SourceIp\n| sort by Count\n| limit 20", + "queryString": "account={{account}} namespace={{namespace}} region={{region}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\" errorCode errorMessage\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\", \"errorCode\", \"errorMessage\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName, ErrorCode, ErrorMessage nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where (tolowercase(tablename) matches tolowercase(\"{{tablename}}\")) or isBlank(tablename)\n| where !isBlank(errorCode)\n| count as Count by ErrorCode, ErrorMessage, EventName, UserName, SourceIp\n| sort by Count, ErrorCode, ErrorMessage\n| limit 20", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, @@ -1509,7 +1509,7 @@ "queries": [ { "transient": false, - "queryString": "account={{account}} namespace={{namespace}} region={{region}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\", \"requestParameters.keySchema\", \"requestParameters.attributeDefinitions\", \"userAgent\", \"responseElements.tableDescription.provisionedThroughput\", \"userIdentity.sessionContext.attributes.mfaAuthenticated\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName, TableSchema, AttributeDefinition, UserAgent, ProvisionedThroughput, MFAAuthenticated nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where tolowercase(tablename) matches tolowercase(\"{{tablename}}\")\n| formatDate(_messageTime, \"MM/dd/yyyy HH:mm:ss:SSS\") as MessageDate\n| count as Count by MessageDate, EventName, tablename, UserName, SourceIp, MFAAuthenticated\n| sort by MessageDate\n| fields MessageDate, EventName, tablename, UserName, SourceIp, MFAAuthenticated", + "queryString": "account={{account}} namespace={{namespace}} region={{region}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\", \"requestParameters.keySchema\", \"requestParameters.attributeDefinitions\", \"userAgent\", \"responseElements.tableDescription.provisionedThroughput\", \"userIdentity.sessionContext.attributes.mfaAuthenticated\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName, TableSchema, AttributeDefinition, UserAgent, ProvisionedThroughput, MFAAuthenticated nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where (tolowercase(tablename) matches tolowercase(\"{{tablename}}\")) or isBlank(tablename)\n| formatDate(_messageTime, \"MM/dd/yyyy HH:mm:ss:SSS\") as MessageDate\n| count as Count by MessageDate, EventName, tablename, UserName, SourceIp, MFAAuthenticated\n| sort by MessageDate\n| fields MessageDate, EventName, tablename, UserName, SourceIp, MFAAuthenticated", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, @@ -1535,7 +1535,7 @@ "queries": [ { "transient": false, - "queryString": "account={{account}} namespace={{namespace}} region={{region}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where tolowercase(tablename) matches tolowercase(\"{{tablename}}\")\n| count by SourceIp\n| lookup latitude, longitude, country_code, country_name, region, city, postal_code from geo://location on ip = SourceIp\n| count by latitude, longitude, country_code, country_name, region, city, postal_code", + "queryString": "account={{account}} namespace={{namespace}} region={{region}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where (tolowercase(tablename) matches tolowercase(\"{{tablename}}\")) or isBlank(tablename)\n| count by SourceIp\n| lookup latitude, longitude from geo://location on ip = SourceIp\n| count by latitude, longitude\n| where !isnull(latitude)", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, @@ -1586,11 +1586,11 @@ { "id": null, "name": "namespace", - "displayName": null, + "displayName": "namespace", "defaultValue": "aws/dynamodb", "sourceDefinition": { "variableSourceType": "MetadataVariableSourceDefinition", - "filter": "account={{account}} region={{region}}", + "filter": "account={{account}} region={{region}} namespace=aws/dynamodb", "key": "namespace" }, "allowMultiSelect": false, @@ -1838,11 +1838,11 @@ { "id": null, "name": "namespace", - "displayName": null, + "displayName": "namespace", "defaultValue": "aws/dynamodb", "sourceDefinition": { "variableSourceType": "MetadataVariableSourceDefinition", - "filter": "account={{account}} region={{region}}", + "filter": "account={{account}} region={{region}} namespace=aws/dynamodb", "key": "namespace" }, "allowMultiSelect": false, From 01bc9bf56e39c0d10d745a1d2df6cf2fe6803b61 Mon Sep 17 00:00:00 2001 From: Nitin Pande Date: Mon, 9 May 2022 16:22:01 +0530 Subject: [PATCH 10/82] Updated AWSO APIGateway dashboards - optimizations. --- aws-observability/json/Api-Gateway-App.json | 248 +++++++++++++++----- 1 file changed, 190 insertions(+), 58 deletions(-) diff --git a/aws-observability/json/Api-Gateway-App.json b/aws-observability/json/Api-Gateway-App.json index 46288e83..3478a2f4 100644 --- a/aws-observability/json/Api-Gateway-App.json +++ b/aws-observability/json/Api-Gateway-App.json @@ -8,7 +8,6 @@ "name": "1. AWS API Gateway - Latency, Cache", "description": "AWS API Gateway - Latency, Cache dashboard provides insights into API Gateway performance including API requests, latency, API cache hits, and back-end cache misses.", "title": "1. AWS API Gateway - Latency, Cache", - "rootPanel": null, "theme": "Light", "topologyLabelMap": { "data": { @@ -99,32 +98,38 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "Namespace={{namespace}} metric=count Statistic=sum account={{account}} region={{region}} apiname={{apiname}} | sum by apiname, namespace, region, account", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" }, { + "transient": false, "queryString": "Namespace={{namespace}} metric=count Statistic=sum account={{account}} region={{region}} apiname={{apiname}} | sum by apiname, namespace, region, account | timeshift 1d", "queryType": "Metrics", "queryKey": "B", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" }, { + "transient": false, "queryString": "Namespace={{namespace}} metric=count Statistic=sum account={{account}} region={{region}} apiname={{apiname}} | sum by apiname, namespace, region, account | timeshift 7d", "queryType": "Metrics", "queryKey": "C", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -161,12 +166,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "Namespace={{namespace}} metric=Latency statistic=Average account={{account}} region={{region}} apiname={{apiname}} | avg by apiname, namespace, region, account", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -185,12 +192,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "Namespace={{namespace}} metric=IntegrationLatency statistic=Average account={{account}} region={{region}} apiname={{apiname}} | avg by apiname, namespace, region, account", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -209,12 +218,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "Namespace={{namespace}} metric=CacheHitCount statistic=Average account={{account}} region={{region}} apiname={{apiname}} | avg by apiname, namespace, region, account | eval _value * 100 ", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -233,12 +244,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "Namespace={{namespace}} metric=CacheMissCount statistic=Average account={{account}} region={{region}} apiname={{apiname}} | avg by apiname, namespace, region, account | eval _value * 100", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -271,8 +284,8 @@ { "id": null, "name": "account", - "displayName": null, - "defaultValue": null, + "displayName": "account", + "defaultValue": "", "sourceDefinition": { "variableSourceType": "MetadataVariableSourceDefinition", "filter": "", @@ -280,7 +293,8 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" }, { "id": null, @@ -294,21 +308,23 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" }, { "id": null, "name": "namespace", - "displayName": null, + "displayName": "namespace", "defaultValue": "aws/apigateway", "sourceDefinition": { "variableSourceType": "MetadataVariableSourceDefinition", - "filter": "account={{account}} region={{region}}", + "filter": "account={{account}} region={{region}} namespace=aws/apigateway", "key": "namespace" }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" }, { "id": null, @@ -322,7 +338,8 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" } ], "coloringRules": [] @@ -332,7 +349,6 @@ "name": "1. AWS API Gateway - Overview", "description": "AWS API Gateway - Overview dashboard provides insights into API Gateway performance throughout your infrastructure, including API calls, latency, client and server-side errors, API cache hits, and back-end cache misses.", "title": "1. AWS API Gateway - Overview", - "rootPanel": null, "theme": "Light", "topologyLabelMap": { "data": { @@ -477,12 +493,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "Namespace={{namespace}} metric=Latency statistic=Average account={{account}} region={{region}} apiname={{apiname}} | avg by apiname, namespace, region, account", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -501,12 +519,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "Namespace={{namespace}} metric=5XXError Statistic=Sum account={{account}} region={{region}} apiname={{apiname}} | sum by apiname, namespace, region, account", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -525,12 +545,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "Namespace={{namespace}} metric=IntegrationLatency statistic=Average account={{account}} region={{region}} apiname={{apiname}} | avg by apiname, namespace, region, account", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -549,12 +571,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "Namespace={{namespace}} metric=CacheHitCount statistic=Average account={{account}} region={{region}} apiname={{apiname}} | avg by apiname, namespace, region, account | eval _value * 100", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -573,12 +597,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "Namespace={{namespace}} metric=CacheMissCount statistic=Average account={{account}} region={{region}} apiname={{apiname}} | avg by apiname, namespace, region, account | eval _value * 100", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -597,12 +623,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "Namespace={{namespace}} metric=4XXError Statistic=Sum account={{account}} region={{region}} apiname={{apiname}} | sum by apiname, namespace, region, account", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -657,12 +685,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "Namespace={{namespace}} metric=count statistic=Sum account={{account}} region={{region}} apiname={{apiname}} | sum", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -681,12 +711,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "Namespace={{namespace}} metric=count statistic=Sum account={{account}} region={{region}} apiname={{apiname}} | sum by apiname, namespace, region, account | count", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -705,12 +737,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "Namespace={{namespace}} metric=count statistic=Sum account={{account}} region={{region}} apiname={{apiname}} | sum by apiname | eval round(_value)", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -729,12 +763,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "Namespace={{namespace}} metric=Latency statistic=Average account={{account}} region={{region}} apiname={{apiname}} | avg by apiname, namespace, region, account", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -753,12 +789,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "Namespace={{namespace}} metric=IntegrationLatency statistic=Average account={{account}} region={{region}} apiname={{apiname}} | avg by apiname, namespace, region, account", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -777,32 +815,38 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "Namespace={{namespace}} metric=count Statistic=sum account={{account}} region={{region}} apiname={{apiname}} | sum by account, region, namespace", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" }, { + "transient": false, "queryString": "Namespace={{namespace}} metric=count Statistic=sum account={{account}} region={{region}} apiname={{apiname}} | sum by account, region, namespace | timeshift 1d", "queryType": "Metrics", "queryKey": "B", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" }, { + "transient": false, "queryString": "Namespace={{namespace}} metric=count Statistic=sum account={{account}} region={{region}} apiname={{apiname}} | sum by account, region, namespace | timeshift 7d", "queryType": "Metrics", "queryKey": "C", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -826,7 +870,8 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" }, { "id": null, @@ -840,21 +885,23 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" }, { "id": null, "name": "namespace", - "displayName": null, + "displayName": "namespace", "defaultValue": "aws/apigateway", "sourceDefinition": { "variableSourceType": "MetadataVariableSourceDefinition", - "filter": "account={{account}} region={{region}}", + "filter": "account={{account}} region={{region}} namespace=aws/apigateway", "key": "namespace" }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" }, { "id": null, @@ -868,7 +915,8 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" } ], "coloringRules": [] @@ -878,7 +926,6 @@ "name": "2. AWS API Gateway - 4XX and 5XX Errors", "description": "AWS API Gateway - 4xx and 5xx Errors dashboard provides insights into API Gateway HTTP 4xx and 5xx code errors throughout your infrastructure, including API requests, client-side errors, and server-side errors.", "title": "2. AWS API Gateway - 4XX and 5XX Errors", - "rootPanel": null, "theme": "Light", "topologyLabelMap": { "data": { @@ -944,12 +991,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "Namespace={{namespace}} metric=4XXError Statistic=Sum account={{account}} region={{region}} apiname={{apiname}} | sum by apiname, namespace, region, account", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -968,12 +1017,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "Namespace={{namespace}} metric=5XXError Statistic=Sum account={{account}} region={{region}} apiname={{apiname}} | sum by apiname, namespace, region, account", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -992,32 +1043,38 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "Namespace={{namespace}} metric=count Statistic=Sum account={{account}} region={{region}} apiname={{apiname}} | sum by apiname, namespace, region, account", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" }, { + "transient": false, "queryString": "Namespace={{namespace}} metric=count Statistic=Sum account={{account}} region={{region}} apiname={{apiname}} | sum by apiname, namespace, region, account | timeshift 1d", "queryType": "Metrics", "queryKey": "B", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" }, { + "transient": false, "queryString": "Namespace={{namespace}} metric=count Statistic=Sum account={{account}} region={{region}} apiname={{apiname}} | sum by apiname, namespace, region, account | timeshift 7d", "queryType": "Metrics", "queryKey": "C", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1068,7 +1125,8 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" }, { "id": null, @@ -1082,21 +1140,23 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" }, { "id": null, "name": "namespace", - "displayName": null, + "displayName": "namespace", "defaultValue": "aws/apigateway", "sourceDefinition": { "variableSourceType": "MetadataVariableSourceDefinition", - "filter": "account={{account}} region={{region}}", + "filter": "account={{account}} region={{region}} namespace=aws/apigateway", "key": "namespace" }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" }, { "id": null, @@ -1110,7 +1170,8 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" } ], "coloringRules": [] @@ -1120,7 +1181,6 @@ "name": "2. AWS API Gateway - Audit Events", "description": "AWS API Gateway - Audit Events dashboard provides detailed audit insights into API Gateway events by various dimensions including event names, trends, regions, user agents, and recipient account IDs.", "title": "2. AWS API Gateway - Audit Events", - "rootPanel": null, "theme": "Light", "topologyLabelMap": { "data": { @@ -1211,12 +1271,14 @@ "panelType": "SumoSearchPanel", "queries": [ { - "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" eventName account={{account}} Namespace={{namespace}} region={{region}}\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\"\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| timeslice 15m\n| count as eventCount by _timeslice, event_name\n| transpose row _timeslice column event_name", + "transient": false, + "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" eventName account={{account}} Namespace={{namespace}} region={{region}}\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\"\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| where (tolowercase(ApiName) matches tolowercase(\"{{apiname}}\")) or isBlank(apiname)\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| timeslice 15m\n| count as eventCount by _timeslice, event_name\n| transpose row _timeslice column event_name", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1235,12 +1297,14 @@ "panelType": "SumoSearchPanel", "queries": [ { - "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" userAgent account={{account}} Namespace={{namespace}} region={{region}}\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\"\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| count as eventCount by user_agent\n| sort by eventCount, user_agent asc", + "transient": false, + "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" userAgent account={{account}} Namespace={{namespace}} region={{region}}\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\"\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| where (tolowercase(ApiName) matches tolowercase(\"{{apiname}}\")) or isBlank(apiname)\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| count as eventCount by user_agent\n| sort by eventCount, user_agent asc", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1259,12 +1323,14 @@ "panelType": "SumoSearchPanel", "queries": [ { - "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" errorCode account={{account}} Namespace={{namespace}} region={{region}} sourceIPAddress\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\" and !(src_ip matches \"*.amazonaws.com\") and !isEmpty(errorCode)\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| count by src_ip\n| lookup latitude, longitude, country_code, country_name, region, city, postal_code from geo://location on ip = src_ip\n| where !isnull(latitude)", + "transient": false, + "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" errorCode account={{account}} Namespace={{namespace}} region={{region}} sourceIPAddress\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\" and !(src_ip matches \"*.amazonaws.com\") and !isEmpty(errorCode)\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| where (tolowercase(ApiName) matches tolowercase(\"{{apiname}}\")) or isBlank(apiname)\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| count by src_ip\n| lookup latitude, longitude from geo://location on ip = src_ip\n| where !isnull(latitude)", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1283,12 +1349,14 @@ "panelType": "SumoSearchPanel", "queries": [ { - "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" !errorCode account={{account}} Namespace={{namespace}} region={{region}} sourceIPAddress\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\" and !(src_ip matches \"*.amazonaws.com\") and isEmpty(errorCode)\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| count by src_ip\n| lookup latitude, longitude, country_code, country_name, region, city, postal_code from geo://location on ip = src_ip\n| where !isnull(latitude)", + "transient": false, + "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" !errorCode account={{account}} Namespace={{namespace}} region={{region}} sourceIPAddress\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\" and !(src_ip matches \"*.amazonaws.com\") and isEmpty(errorCode)\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| where (tolowercase(ApiName) matches tolowercase(\"{{apiname}}\")) or isBlank(apiname)\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| count by src_ip\n| lookup latitude, longitude from geo://location on ip = src_ip\n| where !isnull(latitude)", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1302,17 +1370,19 @@ "id": null, "key": "panelPANE-D3C4BB28A83C9947", "title": "Event Status", - "visualSettings": "{\"general\":{\"mode\":\"distribution\",\"type\":\"pie\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"fillOpacity\":1,\"startAngle\":270,\"innerRadius\":\"50%\",\"maxNumOfSlices\":10},\"title\":{\"fontSize\":16},\"legend\":{\"enabled\":false},\"overrides\":[{\"series\":[\"Success\"],\"queries\":[],\"userProvidedChartType\":false,\"properties\":{\"color\":\"#75bf00\",\"type\":\"pie\"}},{\"series\":[\"Failure\"],\"queries\":[],\"userProvidedChartType\":false,\"properties\":{\"color\":\"#f36644\",\"type\":\"pie\"}},{\"series\":[],\"queries\":[],\"userProvidedChartType\":false,\"properties\":{\"type\":\"pie\"}}],\"series\":{}}", + "visualSettings": "{\"general\":{\"mode\":\"distribution\",\"type\":\"pie\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"fillOpacity\":1,\"startAngle\":270,\"innerRadius\":\"50%\",\"maxNumOfSlices\":10},\"title\":{\"fontSize\":16},\"legend\":{\"enabled\":false},\"overrides\":[{\"series\":[\"Success\"],\"queries\":[],\"userProvidedChartType\":false,\"properties\":{\"color\":\"#75bf00\",\"type\":\"pie\"}},{\"series\":[\"Failure\"],\"queries\":[],\"userProvidedChartType\":false,\"properties\":{\"color\":\"#f36644\",\"type\":\"pie\"}}],\"series\":{}}", "keepVisualSettingsConsistentWithParent": true, "panelType": "SumoSearchPanel", "queries": [ { - "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" account={{account}} Namespace={{namespace}} region={{region}}\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\"\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| count as eventCount by eventStatus\n| sort by eventCount, eventStatus asc", + "transient": false, + "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" account={{account}} Namespace={{namespace}} region={{region}}\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\"\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| where (tolowercase(ApiName) matches tolowercase(\"{{apiname}}\")) or isBlank(apiname)\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| count as eventCount by eventStatus\n| sort by eventCount, eventStatus asc", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1331,12 +1401,14 @@ "panelType": "SumoSearchPanel", "queries": [ { - "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" account={{account}} Namespace={{namespace}} region={{region}}\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\"\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(userName), user, userName) as user\n| timeslice 15m\n| count by _timeslice, eventStatus\n| fillmissing timeslice(15m), values (\"Success\", \"Failure\") in eventStatus\n| transpose row _timeslice column eventStatus", + "transient": false, + "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" account={{account}} Namespace={{namespace}} region={{region}}\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\"\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| where (tolowercase(ApiName) matches tolowercase(\"{{apiname}}\")) or isBlank(apiname)\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(userName), user, userName) as user\n| timeslice 15m\n| count by _timeslice, eventStatus\n| fillmissing timeslice(15m), values (\"Success\", \"Failure\") in eventStatus\n| transpose row _timeslice column eventStatus", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1355,12 +1427,14 @@ "panelType": "SumoSearchPanel", "queries": [ { - "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" errorCode account={{account}} Namespace={{namespace}} region={{region}}\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\" and !isEmpty(errorCode)\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(userName), user, userName) as user\n| count as eventCount by errorCode \n| top 10 errorCode by eventCount, errorCode asc", + "transient": false, + "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" errorCode account={{account}} Namespace={{namespace}} region={{region}}\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\" and !isEmpty(errorCode)\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| where (tolowercase(ApiName) matches tolowercase(\"{{apiname}}\")) or isBlank(apiname)\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(userName), user, userName) as user\n| count as eventCount by errorCode \n| top 10 errorCode by eventCount, errorCode asc", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1379,12 +1453,14 @@ "panelType": "SumoSearchPanel", "queries": [ { - "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" errorCode account={{account}} Namespace={{namespace}} region={{region}}\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\" and !isEmpty(errorCode)\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| count as eventCount by event_name\n| sort by eventCount, event_name asc", + "transient": false, + "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" errorCode account={{account}} Namespace={{namespace}} region={{region}}\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\" and !isEmpty(errorCode)\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| where (tolowercase(ApiName) matches tolowercase(\"{{apiname}}\")) or isBlank(apiname)\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| count as eventCount by event_name\n| sort by eventCount, event_name asc", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1403,12 +1479,14 @@ "panelType": "SumoSearchPanel", "queries": [ { - "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" errorCode account={{account}} Namespace={{namespace}} region={{region}}\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\" and !isEmpty(errorCode)\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop \n| json field=responseElements \"name\", \"Message\" as ApiName, responseMessage nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| if (isEmpty(errorMessage), responseMessage, errorMessage) as errorMessage\n| timeslice 1s\n| count as eventCount by _timeslice, event_name, errorCode, errorMessage, Region, src_ip, accountId, user, type, requestID, user_agent\n| sort by _timeslice\n| limit 100", + "transient": false, + "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" errorCode account={{account}} Namespace={{namespace}} region={{region}}\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\" and !isEmpty(errorCode)\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop \n| json field=responseElements \"name\", \"Message\" as ApiName, responseMessage nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| where (tolowercase(ApiName) matches tolowercase(\"{{apiname}}\")) or isBlank(apiname)\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| if (isEmpty(errorMessage), responseMessage, errorMessage) as errorMessage\n| timeslice 1s\n| count as eventCount by _timeslice, event_name, errorCode, errorMessage, Region, src_ip, accountId, user, type, requestID, user_agent, apiname\n| sort by _timeslice\n| limit 100", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1427,12 +1505,14 @@ "panelType": "SumoSearchPanel", "queries": [ { - "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" !errorCode account={{account}} Namespace={{namespace}} region={{region}}\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\"\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| where eventStatus = \"Success\"\n| count as eventCount by event_name\n| sort by eventCount, event_name asc", + "transient": false, + "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" !errorCode account={{account}} Namespace={{namespace}} region={{region}}\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\"\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| where (tolowercase(ApiName) matches tolowercase(\"{{apiname}}\")) or isBlank(apiname)\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| where eventStatus = \"Success\"\n| count as eventCount by event_name\n| sort by eventCount, event_name asc", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1451,12 +1531,14 @@ "panelType": "SumoSearchPanel", "queries": [ { - "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" !errorCode account={{account}} Namespace={{namespace}} region={{region}}\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\"\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| where eventStatus = \"Success\"\n| timeslice 1s\n| count as eventCount by _timeslice, event_name, Region, src_ip, accountId, user, type, requestID, user_agent, ApiName\n| sort by _timeslice\n| limit 100", + "transient": false, + "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" !errorCode account={{account}} Namespace={{namespace}} region={{region}}\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\"\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| where (tolowercase(ApiName) matches tolowercase(\"{{apiname}}\")) or isBlank(apiname)\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| where eventStatus = \"Success\"\n| timeslice 1s\n| count as eventCount by _timeslice, event_name, Region, src_ip, accountId, user, type, requestID, user_agent, ApiName\n| sort by _timeslice\n| limit 100", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1475,12 +1557,14 @@ "panelType": "SumoSearchPanel", "queries": [ { - "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" account={{account}} Namespace={{namespace}} region={{region}}\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\"\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| count as eventCount by type, user\n| topk(10, eventCount) by type | fields -_rank", + "transient": false, + "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" account={{account}} Namespace={{namespace}} region={{region}}\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\"\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| where (tolowercase(ApiName) matches tolowercase(\"{{apiname}}\")) or isBlank(apiname)\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| count as eventCount by type, user\n| topk(10, eventCount) by type | fields -_rank", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1499,12 +1583,14 @@ "panelType": "SumoSearchPanel", "queries": [ { - "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" account={{account}} Namespace={{namespace}} region={{region}}\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\"\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| count by src_ip, event_name, user, user_agent\n| lookup type, actor, raw, threatlevel as malicious_confidence from sumo://threat/cs on threat=src_ip \n| json field=raw \"labels[*].name\" as label_name \n| replace(label_name, \"\\\\/\",\"->\") as label_name\n| replace(label_name, \"\\\"\",\" \") as label_name\n| where type=\"ip_address\" and malicious_confidence = \"high\"\n| if (isEmpty(actor), \"Unassigned\", actor) as Actor\n| sort by _count\n| fields src_ip, event_name, user, user_agent, type, actor, malicious_confidence", + "transient": false, + "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" account={{account}} Namespace={{namespace}} region={{region}}\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\"\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| where (tolowercase(ApiName) matches tolowercase(\"{{apiname}}\")) or isBlank(apiname)\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(userName), user, userName) as user\n| count by src_ip, event_name // , user, user_agent, apiname\n| lookup type, actor, raw, threatlevel as malicious_confidence from sumo://threat/cs on threat=src_ip \n| json field=raw \"labels[*].name\" as label_name \n| replace(label_name, \"\\\\/\",\"->\") as label_name\n| replace(label_name, \"\\\"\",\" \") as label_name\n| where type=\"ip_address\" and malicious_confidence = \"high\"\n| if (isEmpty(actor), \"Unassigned\", actor) as Actor\n| sort by _count\n| fields src_ip, event_name, type, actor, malicious_confidence // , user, user_agent, apiname", "queryType": "Logs", "queryKey": "A", "metricsQueryMode": null, "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1528,7 +1614,8 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" }, { "id": null, @@ -1542,21 +1629,38 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" }, { "id": null, "name": "namespace", - "displayName": null, + "displayName": "namespace", "defaultValue": "aws/apigateway", "sourceDefinition": { "variableSourceType": "MetadataVariableSourceDefinition", - "filter": "account={{account}} region={{region}}", + "filter": "account={{account}} region={{region}} namespace=aws/apigateway", "key": "namespace" }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "apiname", + "displayName": "apiname", + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace=aws/apigateway", + "key": "apiname" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" } ], "coloringRules": [] @@ -1566,7 +1670,6 @@ "name": "3. AWS API Gateway - Enhanced Monitoring", "description": "AWS API Gateway - Enhanced Monitoring dashboard provides detailed insights into API Gateway performance throughout your infrastructure, including the number and types of API calls, API resources, cache hits and misses, latency averages, and errors by HTTP method.", "title": "3. AWS API Gateway - Enhanced Monitoring", - "rootPanel": null, "theme": "Light", "topologyLabelMap": { "data": { @@ -1652,12 +1755,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "Namespace={{namespace}} metric=Count Statistic=Sum account={{account}} region={{region}} apiname={{apiname}} stage={{stage}} method={{method}} resource={{resource}} | sum by method", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1676,12 +1781,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "Namespace={{namespace}} metric=4XXError Statistic=Sum account={{account}} region={{region}} apiname={{apiname}} stage={{stage}} method={{method}} resource={{resource}} | sum by method", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1700,12 +1807,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "Namespace={{namespace}} metric=5XXError Statistic=Sum account={{account}} region={{region}} apiname={{apiname}} stage={{stage}} method={{method}} resource={{resource}} | sum by method", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1724,12 +1833,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "Namespace={{namespace}} metric=count statistic=Sum account={{account}} region={{region}} apiname={{apiname}} stage={{stage}} method={{method}} resource={{resource}} | sum", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1748,12 +1859,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "Namespace={{namespace}} metric=count statistic=Sum account={{account}} region={{region}} apiname={{apiname}} stage={{stage}} method={{method}} resource={{resource}} | sum by apiname, namespace, region, account, method | count", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1772,12 +1885,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "Namespace={{namespace}} metric=count statistic=Sum account={{account}} region={{region}} apiname={{apiname}} stage={{stage}} method={{method}} resource={{resource}} | sum by apiname, namespace, region, account, resource | count", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1796,12 +1911,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "Namespace={{namespace}} metric=count statistic=Sum account={{account}} region={{region}} apiname={{apiname}} stage={{stage}} method={{method}} resource={{resource}} | sum by apiname, method, resource | eval round(_value)", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1815,28 +1932,32 @@ "id": null, "key": "panelpane-6052fefb99524948", "title": "Cache Hits and Misses", - "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"line\",\"displayType\":\"default\",\"markerSize\":\"0\",\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":3,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Rate\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"Cache Hits, apiname={{apiname}} \"}},{\"series\":[],\"queries\":[\"B\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"Cache Miss, apiname={{apiname}}\"}}]}", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"line\",\"displayType\":\"default\",\"markerSize\":\"0\",\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":3,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Rate\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"Cache Hits, {{apiname}} \"}},{\"series\":[],\"queries\":[\"B\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"Cache Miss, {{apiname}}\"}}],\"series\":{}}", "keepVisualSettingsConsistentWithParent": true, "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "Namespace={{namespace}} metric=CacheHitCount statistic=Average account={{account}} region={{region}} apiname={{apiname}} stage={{stage}} method={{method}} resource={{resource}} | avg by apiname, namespace, region, account | eval _value * 100", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, - "parseMode": "Manual", + "spansQueryData": null, + "parseMode": "Auto", "timeSource": "Message" }, { + "transient": false, "queryString": "Namespace={{namespace}} metric=CacheMissCount statistic=Average account={{account}} region={{region}} apiname={{apiname}} stage={{stage}} method={{method}} resource={{resource}} | avg by apiname, namespace, region, account | eval _value * 100", "queryType": "Metrics", "queryKey": "B", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, - "parseMode": "Manual", + "spansQueryData": null, + "parseMode": "Auto", "timeSource": "Message" } ], @@ -1854,12 +1975,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "Namespace={{namespace}} metric=Latency statistic=Average account={{account}} region={{region}} apiname={{apiname}} stage={{stage}} method={{method}} resource={{resource}} | avg by apiname, namespace, region, account", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1878,12 +2001,14 @@ "panelType": "SumoSearchPanel", "queries": [ { + "transient": false, "queryString": "Namespace={{namespace}} metric=IntegrationLatency statistic=Average account={{account}} region={{region}} apiname={{apiname}} stage={{stage}} method={{method}} resource={{resource}} | avg by apiname, namespace, region, account", "queryType": "Metrics", "queryKey": "A", "metricsQueryMode": "Advanced", "metricsQueryData": null, "tracesQueryData": null, + "spansQueryData": null, "parseMode": "Manual", "timeSource": "Message" } @@ -1897,10 +2022,10 @@ "id": null, "key": "panelpane-4f8a91c58c9d3b4e", "title": "Note", - "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\"},\"text\":{\"alignment\":\"left\",\"fontSize\":16,\"backgroundColor\":\"#dfe5e9\"},\"title\":{\"fontSize\":\"20\"}}", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\"},\"text\":{\"alignment\":\"left\",\"fontSize\":16,\"backgroundColor\":\"#dfe5e9\"},\"title\":{\"fontSize\":\"20\"},\"series\":{}}", "keepVisualSettingsConsistentWithParent": true, "panelType": "TextPanel", - "text": "This dashboard works on detailed CloudWatch metrics which needs to be explicitly enabled. You can do this in the console by selecting \"Enable CloudWatch Metrics\" under a stage Settings tab. Alternatively, you can call the update-stage AWS CLI command to update the metricsEnabled property to true." + "text": "This dashboard works on detailed CloudWatch metrics which needs to be explicitly enabled. You can do this in the AWS console by selecting \"Enable CloudWatch Metrics\" under a stage Settings tab. Alternatively, you can call the update-stage AWS CLI command to update the metricsEnabled property to true." } ], "variables": [ @@ -1916,7 +2041,8 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" }, { "id": null, @@ -1930,21 +2056,23 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" }, { "id": null, "name": "namespace", - "displayName": null, + "displayName": "namespace", "defaultValue": "aws/apigateway", "sourceDefinition": { "variableSourceType": "MetadataVariableSourceDefinition", - "filter": "account={{account}} region={{region}}", + "filter": "account={{account}} region={{region}} namespace=aws/apigateway", "key": "namespace" }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" }, { "id": null, @@ -1958,7 +2086,8 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" }, { "id": null, @@ -1972,7 +2101,8 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" }, { "id": null, @@ -1986,7 +2116,8 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" }, { "id": null, @@ -2000,7 +2131,8 @@ }, "allowMultiSelect": false, "includeAllOption": true, - "hideFromUI": false + "hideFromUI": false, + "valueType": "Any" } ], "coloringRules": [] From eb60a311f67c50d4426aa8acf78e90c88bf0ced9 Mon Sep 17 00:00:00 2001 From: Himanshu Sharma Date: Mon, 16 May 2022 20:17:06 +0530 Subject: [PATCH 11/82] adding app module example and test framework --- .../examples/appmodule/LICENSE | 13 + .../examples/appmodule/README.md | 60 + .../examples/appmodule/field.tf | 97 + .../examples/appmodule/fields.sh | 101 + .../examples/appmodule/main.auto.tfvars | 9 + .../examples/appmodule/main.tf | 20 + .../examples/appmodule/output.tf | 222 + .../examples/appmodule/providers.tf | 21 + .../examples/appmodule/variables.tf | 137 + .../examples/appmodule/versions.tf | 22 + .../aws-observability/json/Alb-App.json | 3037 +++++++++++ .../aws-observability/json/Alerts-App.json | 1701 ++++++ .../json/Api-Gateway-App.json | 2009 +++++++ .../json/Classic-lb-App.json | 3039 +++++++++++ .../aws-observability/json/DynamoDb-App.json | 1765 ++++++ .../json/EC2-Metrics-App.json | 3241 ++++++++++++ .../aws-observability/json/Ecs-App.json | 1555 ++++++ .../json/ElastiCache-App.json | 4710 +++++++++++++++++ .../aws-observability/json/Lambda-App.json | 3195 +++++++++++ .../aws-observability/json/Nlb-App.json | 2052 +++++++ .../aws-observability/json/Overview-App.json | 1957 +++++++ .../aws-observability/json/Rce-App.json | 2185 ++++++++ .../aws-observability/json/Rds-App.json | 4673 ++++++++++++++++ .../aws-observability/json/Test-Alerts.json | 77 + aws-observability-terraform/go.mod | 86 + aws-observability-terraform/go.sum | 758 +++ aws-observability-terraform/test/README.md | 72 + aws-observability-terraform/test/him_test.go | 146 + aws-observability-terraform/test/terraform.go | 45 + .../test/unit_tests.sh | 38 + aws-observability-terraform/test/utils.go | 47 + .../test/validateSumo.go | 223 + 32 files changed, 37313 insertions(+) create mode 100644 aws-observability-terraform/examples/appmodule/LICENSE create mode 100644 aws-observability-terraform/examples/appmodule/README.md create mode 100644 aws-observability-terraform/examples/appmodule/field.tf create mode 100644 aws-observability-terraform/examples/appmodule/fields.sh create mode 100644 aws-observability-terraform/examples/appmodule/main.auto.tfvars create mode 100644 aws-observability-terraform/examples/appmodule/main.tf create mode 100644 aws-observability-terraform/examples/appmodule/output.tf create mode 100644 aws-observability-terraform/examples/appmodule/providers.tf create mode 100644 aws-observability-terraform/examples/appmodule/variables.tf create mode 100644 aws-observability-terraform/examples/appmodule/versions.tf create mode 100644 aws-observability-terraform/examples/aws-observability/json/Alb-App.json create mode 100644 aws-observability-terraform/examples/aws-observability/json/Alerts-App.json create mode 100644 aws-observability-terraform/examples/aws-observability/json/Api-Gateway-App.json create mode 100644 aws-observability-terraform/examples/aws-observability/json/Classic-lb-App.json create mode 100644 aws-observability-terraform/examples/aws-observability/json/DynamoDb-App.json create mode 100644 aws-observability-terraform/examples/aws-observability/json/EC2-Metrics-App.json create mode 100644 aws-observability-terraform/examples/aws-observability/json/Ecs-App.json create mode 100644 aws-observability-terraform/examples/aws-observability/json/ElastiCache-App.json create mode 100644 aws-observability-terraform/examples/aws-observability/json/Lambda-App.json create mode 100644 aws-observability-terraform/examples/aws-observability/json/Nlb-App.json create mode 100644 aws-observability-terraform/examples/aws-observability/json/Overview-App.json create mode 100644 aws-observability-terraform/examples/aws-observability/json/Rce-App.json create mode 100644 aws-observability-terraform/examples/aws-observability/json/Rds-App.json create mode 100644 aws-observability-terraform/examples/aws-observability/json/Test-Alerts.json create mode 100644 aws-observability-terraform/go.mod create mode 100644 aws-observability-terraform/go.sum create mode 100644 aws-observability-terraform/test/README.md create mode 100644 aws-observability-terraform/test/him_test.go create mode 100644 aws-observability-terraform/test/terraform.go create mode 100644 aws-observability-terraform/test/unit_tests.sh create mode 100644 aws-observability-terraform/test/utils.go create mode 100644 aws-observability-terraform/test/validateSumo.go diff --git a/aws-observability-terraform/examples/appmodule/LICENSE b/aws-observability-terraform/examples/appmodule/LICENSE new file mode 100644 index 00000000..f9b9ffe9 --- /dev/null +++ b/aws-observability-terraform/examples/appmodule/LICENSE @@ -0,0 +1,13 @@ +Copyright 2020. Sumo Logic Inc., All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/aws-observability-terraform/examples/appmodule/README.md b/aws-observability-terraform/examples/appmodule/README.md new file mode 100644 index 00000000..647b7397 --- /dev/null +++ b/aws-observability-terraform/examples/appmodule/README.md @@ -0,0 +1,60 @@ +## Requirements + +| Name | Version | +|------|---------| +| [terraform](#requirement\_terraform) | >= 0.13.0 | +| [aws](#requirement\_aws) | >= 3.42.0, < 4.0.0 | +| [random](#requirement\_random) | >= 3.1.0 | +| [sumologic](#requirement\_sumologic) | >= 2.13.0 | +| [time](#requirement\_time) | >= 0.7.1 | + +## Providers + +| Name | Version | +|------|---------| +| [sumologic](#provider\_sumologic) | 2.13.0 | + +## Modules + +| Name | Source | Version | +|------|--------|---------| +| [collection-module](#module\_collection-module) | ./source-module | n/a | +| [sumo-module](#module\_sumo-module) | ./app-modules | n/a | + +## Resources + +| Name | Type | +|------|------| +| [sumologic_field.account](https://registry.terraform.io/providers/SumoLogic/sumologic/latest/docs/resources/field) | resource | +| [sumologic_field.accountid](https://registry.terraform.io/providers/SumoLogic/sumologic/latest/docs/resources/field) | resource | +| [sumologic_field.apiname](https://registry.terraform.io/providers/SumoLogic/sumologic/latest/docs/resources/field) | resource | +| [sumologic_field.cacheclusterid](https://registry.terraform.io/providers/SumoLogic/sumologic/latest/docs/resources/field) | resource | +| [sumologic_field.clustername](https://registry.terraform.io/providers/SumoLogic/sumologic/latest/docs/resources/field) | resource | +| [sumologic_field.dbidentifier](https://registry.terraform.io/providers/SumoLogic/sumologic/latest/docs/resources/field) | resource | +| [sumologic_field.functionname](https://registry.terraform.io/providers/SumoLogic/sumologic/latest/docs/resources/field) | resource | +| [sumologic_field.instanceid](https://registry.terraform.io/providers/SumoLogic/sumologic/latest/docs/resources/field) | resource | +| [sumologic_field.loadbalancer](https://registry.terraform.io/providers/SumoLogic/sumologic/latest/docs/resources/field) | resource | +| [sumologic_field.loadbalancername](https://registry.terraform.io/providers/SumoLogic/sumologic/latest/docs/resources/field) | resource | +| [sumologic_field.namespace](https://registry.terraform.io/providers/SumoLogic/sumologic/latest/docs/resources/field) | resource | +| [sumologic_field.networkloadbalancer](https://registry.terraform.io/providers/SumoLogic/sumologic/latest/docs/resources/field) | resource | +| [sumologic_field.region](https://registry.terraform.io/providers/SumoLogic/sumologic/latest/docs/resources/field) | resource | +| [sumologic_field.tablename](https://registry.terraform.io/providers/SumoLogic/sumologic/latest/docs/resources/field) | resource | + +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| [aws\_account\_alias](#input\_aws\_account\_alias) | Provide the Name/Alias for the AWS environment from which you are collecting data. This name will appear in the Sumo Logic Explorer View, metrics, and logs.
If you are going to deploy the solution in multiple AWS accounts then this value has to be overidden at main.tf file.
Do not include special characters in the alias. | `string` | n/a | yes | +| [sumologic\_access\_id](#input\_sumologic\_access\_id) | Sumo Logic Access ID. Visit https://help.sumologic.com/Manage/Security/Access-Keys#Create_an_access_key | `string` | n/a | yes | +| [sumologic\_access\_key](#input\_sumologic\_access\_key) | Sumo Logic Access Key. Visit https://help.sumologic.com/Manage/Security/Access-Keys#Create_an_access_key | `string` | n/a | yes | +| [sumologic\_environment](#input\_sumologic\_environment) | Enter au, ca, de, eu, jp, us2, in, fed or us1. For more information on Sumo Logic deployments visit https://help.sumologic.com/APIs/General-API-Information/Sumo-Logic-Endpoints-and-Firewall-Security | `string` | n/a | yes | +| [sumologic\_folder\_installation\_location](#input\_sumologic\_folder\_installation\_location) | Indicates where to install the app folder. Enter "Personal Folder" for installing in "Personal" folder and "Admin Recommended Folder" for installing in "Admin Recommended" folder. | `string` | `"Personal Folder"` | no | +| [sumologic\_folder\_share\_with\_org](#input\_sumologic\_folder\_share\_with\_org) | Indicates if AWS Observability folder should be shared (view access) with entire organization. true to enable; false to disable. | `bool` | `true` | no | +| [sumologic\_organization\_id](#input\_sumologic\_organization\_id) | You can find your org on the Preferences page in the Sumo Logic UI. For more information, see the Preferences Page topic. Your org ID will be used to configure the IAM Role for Sumo Logic AWS Sources."
For more details, visit https://help.sumologic.com/01Start-Here/05Customize-Your-Sumo-Logic-Experience/Preferences-Page | `string` | n/a | yes | + +## Outputs + +| Name | Description | +|------|-------------| +| [Apps](#output\_Apps) | All outputs related to apps. | +| [Collection](#output\_Collection) | All outputs related to collection and sources. | \ No newline at end of file diff --git a/aws-observability-terraform/examples/appmodule/field.tf b/aws-observability-terraform/examples/appmodule/field.tf new file mode 100644 index 00000000..1b7dc985 --- /dev/null +++ b/aws-observability-terraform/examples/appmodule/field.tf @@ -0,0 +1,97 @@ +# common fields +resource "sumologic_field" "account" { + data_type = "String" + field_name = "account" + state = "Enabled" +} + +# common fields +resource "sumologic_field" "region" { + data_type = "String" + field_name = "region" + state = "Enabled" +} + +# common fields +resource "sumologic_field" "accountid" { + data_type = "String" + field_name = "accountid" + state = "Enabled" +} + +# common fields +resource "sumologic_field" "namespace" { + data_type = "String" + field_name = "namespace" + state = "Enabled" +} + +# Used in ALB +resource "sumologic_field" "loadbalancer" { + data_type = "String" + field_name = "loadbalancer" + state = "Enabled" +} + +# Used in Classic LB +resource "sumologic_field" "loadbalancername" { + data_type = "String" + field_name = "loadbalancername" + state = "Enabled" +} + +# Used in API gateway +resource "sumologic_field" "apiname" { + data_type = "String" + field_name = "apiname" + state = "Enabled" +} + +# Used in DynamoDB +resource "sumologic_field" "tablename" { + data_type = "String" + field_name = "tablename" + state = "Enabled" +} + +# Used in EC2 +resource "sumologic_field" "instanceid" { + data_type = "String" + field_name = "instanceid" + state = "Enabled" +} + +# Used in ECS +resource "sumologic_field" "clustername" { + data_type = "String" + field_name = "clustername" + state = "Enabled" +} + +# Used in Elasticache +resource "sumologic_field" "cacheclusterid" { + data_type = "String" + field_name = "cacheclusterid" + state = "Enabled" +} + +# Used in Lambda +resource "sumologic_field" "functionname" { + data_type = "String" + field_name = "functionname" + state = "Enabled" +} + +# Used in NLB +resource "sumologic_field" "networkloadbalancer" { + data_type = "String" + field_name = "networkloadbalancer" + state = "Enabled" +} + +# Used in RDS +resource "sumologic_field" "dbidentifier" { + data_type = "String" + field_name = "dbidentifier" + state = "Enabled" +} \ No newline at end of file diff --git a/aws-observability-terraform/examples/appmodule/fields.sh b/aws-observability-terraform/examples/appmodule/fields.sh new file mode 100644 index 00000000..5d4d83eb --- /dev/null +++ b/aws-observability-terraform/examples/appmodule/fields.sh @@ -0,0 +1,101 @@ +#! /bin/bash + +# ---------------------------------------------------------------------------------------------------------------------------------------------------------- +# This script imports the existing fields (required by aws observability solution) if field(s) already present in the user's Sumo Logic account. +# For SUMOLOGIC_ENV, provide one from the list : au, ca, de, eu, jp, us2, in, fed or us1. For more information on Sumo Logic deployments visit https://help.sumologic.com/APIs/General-API-Information/Sumo-Logic-Endpoints-and-Firewall-Security" +# Before using this script, set following environment variables using below commands: +# export SUMOLOGIC_ENV="" +# export SUMOLOGIC_ACCESSID="" +# export SUMOLOGIC_ACCESSKEY="" +#----------------------------------------------------------------------------------------------------------------------------------------------------------- + +# Validate Sumo Logic environment/deployment. +if ! [[ "$SUMOLOGIC_ENV" =~ ^(au|ca|de|eu|jp|us2|in|fed|us1)$ ]]; then + echo "$SUMOLOGIC_ENV is invalid Sumo Logic deployment. For SUMOLOGIC_ENV, provide one from list : au, ca, de, eu, jp, us2, in, fed or us1. For more information on Sumo Logic deployments visit https://help.sumologic.com/APIs/General-API-Information/Sumo-Logic-Endpoints-and-Firewall-Security" + exit 1 +fi + +# Get Sumo Logic api endpoint based on SUMOLOGIC_ENV +if [ "${SUMOLOGIC_ENV}" == "us1" ];then + SUMOLOGIC_BASE_URL="https://api.sumologic.com/api/" +else + SUMOLOGIC_BASE_URL="https://api.${SUMOLOGIC_ENV}.sumologic.com/api/" +fi + +# awso_list contains fields required for AWS Obervablity Solution. Update the list if new field is added to the solution. +declare -ra awso_list=(loadbalancer apiname tablename instanceid clustername cacheclusterid functionname networkloadbalancer account region namespace accountid dbidentifier loadbalancername) + +function get_remaining_fields() { + local RESPONSE + readonly RESPONSE="$(curl -XGET -s \ + -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ + "${SUMOLOGIC_BASE_URL}"v1/fields/quota)" + + echo "${RESPONSE}" +} + +# Check if we'd have at least 13 fields remaining after additional fields +# would be created for the collection +function should_create_fields() { + local RESPONSE + readonly RESPONSE=$(get_remaining_fields) + + if ! jq -e <<< "${RESPONSE}" ; then + printf "Failed requesting fields API:\n%s\n" "${RESPONSE}" + # Credential Issue + return 2 + fi + + if ! jq -e '.remaining' <<< "${RESPONSE}" ; then + printf "Failed requesting fields API:\n%s\n" "${RESPONSE}" + # Permissions/credential issuses + return 3 + fi + + local REMAINING + readonly REMAINING=$(jq -e '.remaining' <<< "${RESPONSE}") + + if [ $REMAINING -ge ${#awso_list[*]} ] ; then + # Function returning with success + return 0 + else + # Capacity not enough to create new fields + return 1 + fi +} + +should_create_fields +outputVal=$? +# Sumo Logic fields in field schema - Decide to import +if [ $outputVal == 0 ] ; then + # Get list of all fields present in field schema of user's Sumo Logic org. + readonly FIELDS_RESPONSE="$(curl -XGET -s \ + -u "${SUMOLOGIC_ACCESSID}:${SUMOLOGIC_ACCESSKEY}" \ + "${SUMOLOGIC_BASE_URL}"v1/fields | jq '.data[]' )" + + for FIELD in "${awso_list[@]}" ; do + FIELD_ID=$( echo "${FIELDS_RESPONSE}" | jq -r "select(.fieldName == \"${FIELD}\") | .fieldId" ) + if [[ -z "${FIELD_ID}" ]]; then + # If field is not present in Sumo org, skip importing + continue + fi + # Field exist in Sumo org, hence import + terraform import \ + sumologic_field."${FIELD}" "${FIELD_ID}" + done +elif [ $outputVal == 1 ] ; then + echo "Couldn't automatically create fields" + echo "You do not have enough field capacity to create the required fields automatically." + echo "Please refer to https://help.sumologic.com/Manage/Fields to manually create the fields after you have removed unused fields to free up capacity." +elif [ $outputVal == 2 ] ; then + echo "Error in calling Sumo Logic Fields API." + echo "User's credentials (SUMOLOGIC_ACCESSID and SUMOLOGIC_ACCESSKEY) are not valid." +elif [ $outputVal == 3 ] ; then + echo "Error in calling Sumo Logic Fields API. The reasons can be:" + echo "1. Credentials could not be verified. Cross check SUMOLOGIC_ACCESSID and SUMOLOGIC_ACCESSKEY." + echo "2. You do not have the role capabilities to create Sumo Logic fields. Please see the Sumo Logic docs on role capabilities https://help.sumologic.com/Manage/Users-and-Roles/Manage-Roles/05-Role-Capabilities" +else + echo "Error in calling Sumo Logic Fields API. The reasons can be:" + echo "1. User's credentials (SUMOLOGIC_ACCESSID and SUMOLOGIC_ACCESSKEY) are not associated with SUMOLOGIC_ENV" + echo "2. You do not have the role capabilities to create Sumo Logic fields. Please see the Sumo Logic docs on role capabilities https://help.sumologic.com/Manage/Users-and-Roles/Manage-Roles/05-Role-Capabilities" +fi \ No newline at end of file diff --git a/aws-observability-terraform/examples/appmodule/main.auto.tfvars b/aws-observability-terraform/examples/appmodule/main.auto.tfvars new file mode 100644 index 00000000..71210f35 --- /dev/null +++ b/aws-observability-terraform/examples/appmodule/main.auto.tfvars @@ -0,0 +1,9 @@ +####### BELOW ARE REQUIRED PARAMETERS FOR TERRAFORM SCRIPT ####### +# Visit - https://help.sumologic.com/Solutions/AWS_Observability_Solution/03_Set_Up_the_AWS_Observability_Solution#sumo-logic-access-configuration-required +sumologic_environment = "" # Please replace (including brackets) with au, ca, de, eu, jp, us2, in, fed or us1. +sumologic_access_id = "" +sumologic_access_key = "" +sumologic_organization_id = "" # Please replace (including brackets) with your Sumo Logic Organization ID. +aws_account_alias = "" # Please replace with an AWS account alias for identification in Sumo Logic Explorer View, metrics and logs. +# Example: https://api.sumologic.com/api/ Please update with your sumologic api endpoint. Refer, https://help.sumologic.com/APIs/General-API-Information/Sumo-Logic-Endpoints-and-Firewall-Security +sumo_api_endpoint = "" #"" \ No newline at end of file diff --git a/aws-observability-terraform/examples/appmodule/main.tf b/aws-observability-terraform/examples/appmodule/main.tf new file mode 100644 index 00000000..1df0231d --- /dev/null +++ b/aws-observability-terraform/examples/appmodule/main.tf @@ -0,0 +1,20 @@ +# +# The below module is used to install apps, metric rules, Field extraction rules, Fields and Monitors. +# NOTE - The "app-modules" should be installed per Sumo Logic organization. +# +module "sumo-module" { + source = "../../app-modules" + access_id = var.sumologic_access_id + access_key = var.sumologic_access_key + environment = var.sumologic_environment + json_file_directory_path = dirname(path.cwd) + folder_installation_location = var.sumologic_folder_installation_location + folder_share_with_org = var.sumologic_folder_share_with_org + sumologic_organization_id = var.sumologic_organization_id + apps_folder_name = var.apps_folder + monitors_folder_name = var.monitors_folder + alb_monitors_disabled = var.alb_monitors + ec2metrics_monitors_disabled = var.ec2metrics_monitors + ecs_monitors_disabled = var.ecs_monitors + elasticache_monitors_disabled = var.elasticache_monitors +} diff --git a/aws-observability-terraform/examples/appmodule/output.tf b/aws-observability-terraform/examples/appmodule/output.tf new file mode 100644 index 00000000..9eb28373 --- /dev/null +++ b/aws-observability-terraform/examples/appmodule/output.tf @@ -0,0 +1,222 @@ +output "apps_folder_id" { + value = module.sumo-module.sumologic_apps_folder.id + description = "This output contains sumologic apps folder." +} + +output "alb_apps_folder_id" { + value = module.sumo-module.sumologic_content_alb.ALBApp.id + description = "This output contains sumologic ALB apps folder." +} + +output "apigateway_apps_folder_id" { + value = module.sumo-module.sumologic_content_apigateway.APIGatewayApp.id + description = "This output contains sumologic API Gateway apps folder." +} + +output "dynamodb_apps_folder_id" { + value = module.sumo-module.sumologic_content_dynamodb.DynamoDBApp.id + description = "This output contains sumologic DynamoDB apps folder." +} + +output "ec2metrics_apps_folder_id" { + value = module.sumo-module.sumologic_content_ec2metrics.EC2MetricsApp.id + description = "This output contains sumologic EC2 metrics apps folder." +} + +output "ecs_apps_folder_id" { + value = module.sumo-module.sumologic_content_ecs.ecsApp.id + description = "This output contains sumologic ECS apps folder." +} + +output "elasticache_apps_folder_id" { + value = module.sumo-module.sumologic_content_elasticache.ElastiCacheApp.id + description = "This output contains sumologic ElastiCacheApp apps folder." +} + +output "clb_apps_folder_id" { + value = module.sumo-module.sumologic_content_elb.ClassicLBApp.id + description = "This output contains sumologic CLB apps folder." +} + +output "lambda_apps_folder_id" { + value = module.sumo-module.sumologic_content_lambda.LambdaApp.id + description = "This output contains sumologic Lambda apps folder." +} + +output "nlb_apps_folder_id" { + value = module.sumo-module.sumologic_content_nlb.NlbApp.id + description = "This output contains sumologic NLB apps folder." +} + +output "overview_apps_folder_id" { + value = module.sumo-module.sumologic_content_overview.OverviewApp.id + description = "This output contains sumologic Overview apps folder." +} + +output "rds_apps_folder_id" { + value = module.sumo-module.sumologic_content_rds.RdsApp.id + description = "This output contains sumologic RDS apps folder." +} + +output "rce_apps_folder_id" { + value = module.sumo-module.sumologic_content_rce.RceApp.id + description = "This output contains sumologic Rce apps folder." +} + +output "monitors_folder_id" { + value = module.sumo-module.sumologic_monitors_folder.id + description = "This output contains sumologic monitors folder." +} + +output "hierarchy_id" { + value = module.sumo-module.sumologic_hierarchy.id + description = "This output contains sumologic hierarchy id." +} + +# API gateway FER id +output "sumologic_field_extraction_rule_apigateway" { + value = module.sumo-module.sumologic_field_extraction_rule_apigateway.CloudTrailFieldExtractionRule.id + description = "This output contains sumologic API gateway field extraction rule id." +} + +# ALB FER id +output "sumologic_field_extraction_rule_alb" { + value = module.sumo-module.sumologic_field_extraction_rule_alb.AlbAccessLogsFieldExtractionRule.id + description = "This output contains sumologic ALB field extraction rule id." +} + +# CLB FER id +output "sumologic_field_extraction_rule_elb" { + value = module.sumo-module.sumologic_field_extraction_rule_elb.ElbAccessLogsFieldExtractionRule.id + description = "This output contains sumologic CLB field extraction rule id." +} + +# DynamoDB FER id +output "sumologic_field_extraction_rule_dynamodb" { + value = module.sumo-module.sumologic_field_extraction_rule_dynamodb.CloudTrailFieldExtractionRule.id + description = "This output contains sumologic dynamoDB field extraction rule id." +} + +# Elasticache FER id +output "sumologic_field_extraction_rule_elasticache" { + value = module.sumo-module.sumologic_field_extraction_rule_elasticache.CloudTrailFieldExtractionRule.id + description = "This output contains sumologic Elasticache field extraction rule id." +} + +# ECS FER id +output "sumologic_field_extraction_rule_ecs" { + value = module.sumo-module.sumologic_field_extraction_rule_ecs.CloudTrailFieldExtractionRule.id + description = "This output contains sumologic ECS field extraction rule id." +} + +# EC2 FER id +# output "sumologic_field_extraction_rule_ec2metrics" { +# value = module.sumo-module.sumologic_field_extraction_rule_ec2metrics.CloudTrailFieldExtractionRule.id +# description = "This output contains sumologic EC2 field extraction rule id." +# } + +# Lambda CloudTrail FER id +output "sumologic_field_extraction_rule_lambda" { + value = module.sumo-module.sumologic_field_extraction_rule_lambda.CloudTrailFieldExtractionRule.id + description = "This output contains sumologic Lambda cloudtrail field extraction rule id." +} + +# Lambda CloudWatch FER id +output "sumologic_field_extraction_rule_lambda_cw" { + value = module.sumo-module.sumologic_field_extraction_rule_lambda.CloudWatchFieldExtractionRule.id + description = "This output contains sumologic Lambda cloudwatch field extraction rule id." +} + +# RDS FER id +output "sumologic_field_extraction_rule_rds" { + value = module.sumo-module.sumologic_field_extraction_rule_rds.CloudTrailFieldExtractionRule.id + description = "This output contains sumologic RDS field extraction rule id." +} + +# NLB Metric rule +output "sumologic_metric_rule_nlb" { + value = module.sumo-module.sumologic_metric_rules_nlb.NLBMetricRule.triggers.name + description = "This output contains sumologic NLB metric rule name." +} + +# RDS Cluster Metric rule +output "sumologic_metric_rule_rds_cluster" { + value = module.sumo-module.sumologic_metric_rules_rds.ClusterMetricRule.triggers.name + description = "This output contains sumologic RDS cluster metric rule name." +} + +# RDS Instance Metric rule +output "sumologic_metric_rule_rds_instance" { + value = module.sumo-module.sumologic_metric_rules_rds.InstanceMetricRule.triggers.name + description = "This output contains sumologic RDS instance metric rule name." +} + +output "sumologic_field_account" { + value = sumologic_field.account.id + description = "This output contains sumologic Account field id." +} + +output "sumologic_field_region" { + value = sumologic_field.region.id + description = "This output contains sumologic Region field id." +} + +output "sumologic_field_accountid" { + value = sumologic_field.accountid.id + description = "This output contains sumologic accountid field id." +} + +output "sumologic_field_namespace" { + value = sumologic_field.namespace.id + description = "This output contains sumologic namespace field id." +} + +output "sumologic_field_loadbalancer" { + value = sumologic_field.loadbalancer.id + description = "This output contains sumologic loadbalancer field id." +} + +output "sumologic_field_loadbalancername" { + value = sumologic_field.loadbalancername.id + description = "This output contains sumologic loadbalancername field id." +} + +output "sumologic_field_apiname" { + value = sumologic_field.apiname.id + description = "This output contains sumologic apiname field id." +} + +output "sumologic_field_tablename" { + value = sumologic_field.tablename.id + description = "This output contains sumologic tablename field id." +} + +output "sumologic_field_instanceid" { + value = sumologic_field.instanceid.id + description = "This output contains sumologic instanceid field id." +} + +output "sumologic_field_clustername" { + value = sumologic_field.clustername.id + description = "This output contains sumologic clustername field id." +} + +output "sumologic_field_cacheclusterid" { + value = sumologic_field.cacheclusterid.id + description = "This output contains sumologic cacheclusterid field id." +} + +output "sumologic_field_functionname" { + value = sumologic_field.functionname.id + description = "This output contains sumologic functionname field id." +} + +output "sumologic_field_networkloadbalancer" { + value = sumologic_field.networkloadbalancer.id + description = "This output contains sumologic networkloadbalancer field id." +} + +output "sumologic_field_dbidentifier" { + value = sumologic_field.dbidentifier.id + description = "This output contains sumologic dbidentifier field id." +} \ No newline at end of file diff --git a/aws-observability-terraform/examples/appmodule/providers.tf b/aws-observability-terraform/examples/appmodule/providers.tf new file mode 100644 index 00000000..413e6d80 --- /dev/null +++ b/aws-observability-terraform/examples/appmodule/providers.tf @@ -0,0 +1,21 @@ +provider "sumologic" { + environment = var.sumologic_environment + access_id = var.sumologic_access_id + access_key = var.sumologic_access_key + admin_mode = var.sumologic_folder_installation_location == "Personal Folder" ? false : true +} + +provider "aws" { + region = "us-east-1" + # + # Below properties should be added when you would like to onboard more than one region and account + # More Information regarding AWS Profile can be found at - + # + # Access configuration + # + # profile = + # + # Terraform alias + # + # alias = +} \ No newline at end of file diff --git a/aws-observability-terraform/examples/appmodule/variables.tf b/aws-observability-terraform/examples/appmodule/variables.tf new file mode 100644 index 00000000..0bc0872c --- /dev/null +++ b/aws-observability-terraform/examples/appmodule/variables.tf @@ -0,0 +1,137 @@ +variable "sumologic_environment" { + type = string + description = "Enter au, ca, de, eu, jp, us2, in, fed or us1. For more information on Sumo Logic deployments visit https://help.sumologic.com/APIs/General-API-Information/Sumo-Logic-Endpoints-and-Firewall-Security" + + validation { + condition = contains([ + "au", + "ca", + "de", + "eu", + "jp", + "us1", + "us2", + "in", + "fed"], var.sumologic_environment) + error_message = "The value must be one of au, ca, de, eu, jp, us1, us2, in, or fed." + } +} + +variable "sumologic_access_id" { + type = string + description = "Sumo Logic Access ID. Visit https://help.sumologic.com/Manage/Security/Access-Keys#Create_an_access_key" + + validation { + condition = can(regex("\\w+", var.sumologic_access_id)) + error_message = "The SumoLogic access ID must contain valid characters." + } +} + +variable "sumologic_access_key" { + type = string + description = "Sumo Logic Access Key. Visit https://help.sumologic.com/Manage/Security/Access-Keys#Create_an_access_key" + #sensitive = true + + validation { + condition = can(regex("\\w+", var.sumologic_access_key)) + error_message = "The SumoLogic access key must contain valid characters." + } + +} + +variable "sumologic_organization_id" { + type = string + description = <\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})\" multi\n| where ClientIp != \"0.0.0.0\" and ClientIp != \"127.0.0.1\"\n| timeslice 5m\n| count as ip_count by ClientIp, loadbalancer, account, region, namespace\n| lookup type, actor, raw, threatlevel as MaliciousConfidence from sumo://threat/cs on threat=ClientIp \n| json field=raw \"labels[*].name\" as LabelName \n| replace(LabelName, \"\\\\/\",\"->\") as LabelName\n| replace(LabelName, \"\\\"\",\" \") as LabelName\n| where type=\"ip_address\" and MaliciousConfidence=\"high\"\n| if (isEmpty(actor), \"Unassigned\", actor) as Actor\n| sum (ip_count) as ThreatCount by loadbalancer, account, region, namespace\n| sort by ThreatCount", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/applicationelb", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "loadbalancer", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "loadbalancer" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "1. AWS Application Load Balancer - Response Analysis", + "description": "See the details of the Load Balancer HTTP codes 3XX, 4XX, and 5XX by availability zone, and load balancer.", + "title": "1. AWS Application Load Balancer - Response Analysis", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "loadbalancer": [ + "*" + ], + "namespace": [ + "aws/applicationelb" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelPANE-6431EF94BE865945", + "structure": "{\"height\":1,\"width\":8,\"x\":0,\"y\":6}" + }, + { + "key": "panelPANE-9488B966ABC1E940", + "structure": "{\"height\":1,\"width\":8,\"x\":8,\"y\":6}" + }, + { + "key": "panel80A18A0EB225FB4B", + "structure": "{\"height\":1,\"width\":8,\"x\":16,\"y\":6}" + }, + { + "key": "panel373343E8B68AA846", + "structure": "{\"height\":6,\"width\":8,\"x\":0,\"y\":14}" + }, + { + "key": "panelPANE-351E28339D1FDB40", + "structure": "{\"height\":7,\"width\":8,\"x\":8,\"y\":7}" + }, + { + "key": "panelAA81D9348A212B4B", + "structure": "{\"height\":7,\"width\":8,\"x\":0,\"y\":7}" + }, + { + "key": "panelFAD82336AEDD0B49", + "structure": "{\"height\":7,\"width\":8,\"x\":16,\"y\":7}" + }, + { + "key": "panelPANE-CCFCC1BB99CA3843", + "structure": "{\"height\":6,\"width\":8,\"x\":0,\"y\":20}" + }, + { + "key": "panelE7BD64DF89B9B94E", + "structure": "{\"height\":6,\"width\":8,\"x\":8,\"y\":14}" + }, + { + "key": "panel849F83B5B73CC844", + "structure": "{\"height\":6,\"width\":8,\"x\":16,\"y\":14}" + }, + { + "key": "panel848E183B8031884D", + "structure": "{\"height\":6,\"width\":8,\"x\":8,\"y\":20}" + }, + { + "key": "panel114E4560B4917A43", + "structure": "{\"height\":6,\"width\":8,\"x\":16,\"y\":20}" + }, + { + "key": "panelPANE-4E589BF4AEA7D84B", + "structure": "{\"height\":6,\"width\":24,\"x\":0,\"y\":0}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelPANE-6431EF94BE865945", + "title": "Untitled", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"showTitle\":false,\"backgroundColor\":\"#f36644\",\"textColor\":\"#222d3b\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Load Balancer 5XX Response Codes" + }, + { + "id": null, + "key": "panelPANE-9488B966ABC1E940", + "title": "Untitled", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"textColor\":\"#222d3b\",\"backgroundColor\":\"#f4a866\",\"showTitle\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Load Balancer 4XX Response Codes" + }, + { + "id": null, + "key": "panel80A18A0EB225FB4B", + "title": "Untitled", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"textColor\":\"#222d3b\",\"backgroundColor\":\"#f6c851\",\"showTitle\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Load Balancer 3XX Response Codes" + }, + { + "id": null, + "key": "panel373343E8B68AA846", + "title": "5XX Response Codes", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Count\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"loadbalancer={{loadbalancer}} AvailabilityZone={{AvailabilityZone}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancer={{loadbalancer}} AvailabilityZone=* metric=HTTPCode_ELB_5XX_Count Statistic=Sum | sum by account, region, namespace, loadbalancer, AvailabilityZone", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-351E28339D1FDB40", + "title": "Client Locations", + "visualSettings": "{\"general\":{\"mode\":\"map\",\"type\":\"map\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#ED3CPE\",\"outlierBandFillOpacity\":0.15,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse field=Client \"*:*\" as ClientIP, ClientPort nodrop\n| where (ElbStatusCode matches \"4*\")\n| count by ClientIP\n| lookup latitude, longitude, country_code, country_name, region, city, postal_code from geo://location on ip = ClientIP\n| count by latitude, longitude, country_code, country_name, region, city, postal_code\n| where !isnull(latitude)", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelAA81D9348A212B4B", + "title": "Client Locations", + "visualSettings": "{\"general\":{\"mode\":\"map\",\"type\":\"map\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#ED3CPE\",\"outlierBandFillOpacity\":0.15,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse field=Client \"*:*\" as ClientIP, ClientPort nodrop\n| where (ElbStatusCode matches \"5*\")\n| count by ClientIP\n| lookup latitude, longitude, country_code, country_name, region, city, postal_code from geo://location on ip = ClientIP\n| count by latitude, longitude, country_code, country_name, region, city, postal_code\n| where !isnull(latitude)", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelFAD82336AEDD0B49", + "title": "Client Locations", + "visualSettings": "{\"general\":{\"mode\":\"map\",\"type\":\"map\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#ED3CPE\",\"outlierBandFillOpacity\":0.15,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse field=Client \"*:*\" as ClientIP, ClientPort nodrop\n| where (ElbStatusCode matches \"3*\")\n| count by ClientIP\n| lookup latitude, longitude, country_code, country_name, region, city, postal_code from geo://location on ip = ClientIP\n| count by latitude, longitude, country_code, country_name, region, city, postal_code\n| where !isnull(latitude)", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-CCFCC1BB99CA3843", + "title": "Events - 5XX Response Codes", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Server Errors\"}},\"legend\":{\"enabled\":false,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse field=Client \"*:*\" as ClientIP, ClientPort nodrop\n| if(ElbStatusCode matches \"5*\", 1, 0) as ServerErrors \n| timeslice 1m\n| sum(ServerErrors) as ServerErrors by _timeslice\n| sort _timeslice asc", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelE7BD64DF89B9B94E", + "title": "4XX Response Codes", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Count\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"loadbalancer={{loadbalancer}} AvailabilityZone={{AvailabilityZone}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancer={{loadbalancer}} AvailabilityZone=* metric=HTTPCode_ELB_4XX_Count Statistic=Sum | sum by account, region, namespace, loadbalancer, AvailabilityZone", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel849F83B5B73CC844", + "title": "3XX Response Codes", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Count\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"loadbalancer={{loadbalancer}} AvailabilityZone={{AvailabilityZone}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancer={{loadbalancer}} AvailabilityZone=* metric=HTTPCode_ELB_3XX_Count Statistic=Sum | sum by account, region, namespace, loadbalancer, AvailabilityZone", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel848E183B8031884D", + "title": "Events - 4XX Response Codes", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Server Errors\"}},\"legend\":{\"enabled\":false,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse field=Client \"*:*\" as ClientIP, ClientPort nodrop\n| if(ElbStatusCode matches \"4*\", 1, 0) as ServerErrors \n| timeslice 1m\n| sum(ServerErrors) as ServerErrors by _timeslice\n| sort _timeslice asc", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel114E4560B4917A43", + "title": "Events - 3XX Response Codes", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Server Errors\"}},\"legend\":{\"enabled\":false,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse field=Client \"*:*\" as ClientIP, ClientPort nodrop\n| if(ElbStatusCode matches \"3*\", 1, 0) as ServerErrors \n| timeslice 1m\n| sum(ServerErrors) as ServerErrors by _timeslice\n| sort _timeslice asc", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-4E589BF4AEA7D84B", + "title": "Response Codes Distribution by Domain and URI", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"distribution\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse field=Request \"* *://*:*/* HTTP\" as Method, Protocol, Domain, ServerPort, URI \n| if (ElbStatusCode matches \"5*\",1,0) as ELB_5XX\n| if (ElbStatusCode matches \"4*\",1,0) as ELB_4XX\n| if (ElbStatusCode matches \"3*\",1,0) as ELB_3XX\n| sum(ELB_5XX) as ELB_5XX, sum(ELB_4XX) as ELB_4XX, sum(ELB_3XX) as ELB_3XX by loadbalancer, Domain, URI\n| limit 20\n| sort by ELB_5XX", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/applicationelb", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "loadbalancer", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "loadbalancer" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "2. AWS Application Load Balancer - Target Group Response Analysis", + "description": "See the details of the Target Group HTTP codes 2XX, 3XX, 4XX, and 5XX by target group, availability zone, and load balancer.", + "title": "2. AWS Application Load Balancer - Target Group Response Analysis", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "loadbalancer": [ + "*" + ], + "namespace": [ + "aws/applicationelb" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelPANE-EFB93C23B0ABA948", + "structure": "{\"height\":1,\"width\":12,\"x\":0,\"y\":6}" + }, + { + "key": "panel05DD969FA8F84846", + "structure": "{\"height\":1,\"width\":12,\"x\":12,\"y\":19}" + }, + { + "key": "panelE8037BA1BAFE4840", + "structure": "{\"height\":1,\"width\":12,\"x\":12,\"y\":6}" + }, + { + "key": "panel11E5E924B7E46B4D", + "structure": "{\"height\":1,\"width\":12,\"x\":0,\"y\":19}" + }, + { + "key": "panelPANE-31F3A4E7852C484F", + "structure": "{\"height\":6,\"width\":24,\"x\":0,\"y\":0}" + }, + { + "key": "panel8D3D1B68A68C1B49", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":7}" + }, + { + "key": "panelA52CD401A29F7942", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":20}" + }, + { + "key": "panelDF364B0988414A44", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":20}" + }, + { + "key": "panelPANE-2A2CE58CB024284B", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":13}" + }, + { + "key": "panelDCE3556190369A4B", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":13}" + }, + { + "key": "panel74660D2CA5358B47", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":26}" + }, + { + "key": "panelA5A5D6698A94CB4F", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":26}" + }, + { + "key": "panel13B1911EADE35944", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":7}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelPANE-EFB93C23B0ABA948", + "title": "5xx", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"textColor\":\"#222d3b\",\"backgroundColor\":\"#f36644\",\"showTitle\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Target Group 5XX Response Codes" + }, + { + "id": null, + "key": "panel05DD969FA8F84846", + "title": "2XX", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"textColor\":\"#222d3b\",\"backgroundColor\":\"#75bf00\",\"showTitle\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Target Group 2XX Response Codes" + }, + { + "id": null, + "key": "panelE8037BA1BAFE4840", + "title": "4xx", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"textColor\":\"#222d3b\",\"backgroundColor\":\"#f4a866\",\"showTitle\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Target Group 4XX Response Codes" + }, + { + "id": null, + "key": "panel11E5E924B7E46B4D", + "title": "3XX", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"textColor\":\"#222d3b\",\"backgroundColor\":\"#f6c851\",\"showTitle\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Target Group 3XX Response Codes" + }, + { + "id": null, + "key": "panelPANE-31F3A4E7852C484F", + "title": "Response Codes Distribution by Domain and URI", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"distribution\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse field=Request \"* *://*:*/* HTTP\" as Method, Protocol, Domain, ServerPort, URI nodrop\n| parse field=TargetGroupArn \"arn:aws:elasticloadbalancing:*:*:*\" as AwsRegion, AccountId, TargetGroup nodrop\n| if (TargetStatusCode matches \"5*\",1,0) as Target_5XX\n| if (TargetStatusCode matches \"4*\",1,0) as Target_4XX\n| if (TargetStatusCode matches \"3*\",1,0) as Target_3XX\n| if (TargetStatusCode matches \"2*\",1,0) as Target_2XX\n| sum(Target_5XX) as Target_5XX, sum(Target_4XX) as Target_4XX, sum(Target_3XX) as Target_3XX, sum(Target_2XX) as Target_2XX by loadbalancer, TargetGroup, Domain, URI\n| limit 20\n| sort by Target_5XX, Target_4XX, Target_3XX, Target_2XX", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel8D3D1B68A68C1B49", + "title": "4XX Response Codes", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Count\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"AvailabilityZone={{AvailabilityZone}} TargetGroup={{TargetGroup}} loadbalancer={{loadbalancer}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancer={{loadbalancer}} AvailabilityZone=* TargetGroup=* metric=HTTPCode_Target_4XX_Count Statistic=Sum | parse field= TargetGroup */* as Unused, TargetGroup | sum by account, region, namespace, loadbalancer, TargetGroup, AvailabilityZone", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelA52CD401A29F7942", + "title": "2XX Response Codes", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Count\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"AvailabilityZone={{AvailabilityZone}} TargetGroup={{TargetGroup}} loadbalancer={{loadbalancer}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancer={{loadbalancer}} AvailabilityZone=* TargetGroup=* metric=HTTPCode_Target_2XX_Count Statistic=Sum | parse field= TargetGroup */* as Unused, TargetGroup | sum by account, region, namespace, loadbalancer, TargetGroup, AvailabilityZone", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelDF364B0988414A44", + "title": "3XX Response Codes", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Count\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"AvailabilityZone={{AvailabilityZone}} TargetGroup={{TargetGroup}} loadbalancer={{loadbalancer}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancer={{loadbalancer}} AvailabilityZone=* TargetGroup=* metric=HTTPCode_Target_3XX_Count Statistic=Sum | parse field= TargetGroup */* as Unused, TargetGroup | sum by account, region, namespace, loadbalancer, TargetGroup, AvailabilityZone", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-2A2CE58CB024284B", + "title": "Events - 5XX Response Codes", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Count\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse field=TargetGroupArn \"arn:aws:elasticloadbalancing:*:*:*\" as AwsRegion, AccountId, TargetGroup nodrop\n| parse field=Client \"*:*\" as ClientIP, ClientPort nodrop\n| where !isEmpty(TargetGroup)\n| if(TargetStatusCode matches \"5*\", 1, 0) as TargetErrors \n| timeslice 1m\n| sum(TargetErrors) as TargetErrors by _timeslice, TargetGroup\n| transpose row _timeslice column TargetGroup", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelDCE3556190369A4B", + "title": "Events - 4XX Response Codes", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Count\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse field=TargetGroupArn \"arn:aws:elasticloadbalancing:*:*:*\" as AwsRegion, AccountId, TargetGroup nodrop\n| parse field=Client \"*:*\" as ClientIP, ClientPort nodrop\n| where !isEmpty(TargetGroup)\n| if(TargetStatusCode matches \"4*\", 1, 0) as TargetErrors \n| timeslice 1m\n| sum(TargetErrors) as TargetErrors by _timeslice, TargetGroup\n| transpose row _timeslice column TargetGroup", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel74660D2CA5358B47", + "title": "Events - 3XX Response Codes", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Count\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse field=TargetGroupArn \"arn:aws:elasticloadbalancing:*:*:*\" as AwsRegion, AccountId, TargetGroup nodrop\n| parse field=Client \"*:*\" as ClientIP, ClientPort nodrop\n| where !isEmpty(TargetGroup)\n| if(TargetStatusCode matches \"3*\", 1, 0) as TargetErrors \n| timeslice 1m\n| sum(TargetErrors) as TargetErrors by _timeslice, TargetGroup\n| transpose row _timeslice column TargetGroup", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelA5A5D6698A94CB4F", + "title": "Events - 2XX Response Codes", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Count\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse field=TargetGroupArn \"arn:aws:elasticloadbalancing:*:*:*\" as AwsRegion, AccountId, TargetGroup nodrop\n| parse field=Client \"*:*\" as ClientIP, ClientPort nodrop\n| where !isEmpty(TargetGroup)\n| if(TargetStatusCode matches \"2*\", 1, 0) as TargetErrors \n| timeslice 1m\n| sum(TargetErrors) as TargetErrors by _timeslice, TargetGroup\n| transpose row _timeslice column TargetGroup", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel13B1911EADE35944", + "title": "5XX Response Codes", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Count\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"AvailabilityZone={{AvailabilityZone}} TargetGroup={{TargetGroup}} loadbalancer={{loadbalancer}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancer={{loadbalancer}} AvailabilityZone=* TargetGroup=* metric=HTTPCode_Target_5XX_Count Statistic=Sum | parse field= TargetGroup */* as Unused, TargetGroup | sum by account, region, namespace, loadbalancer, TargetGroup, AvailabilityZone", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/applicationelb", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "loadbalancer", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "loadbalancer" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "3. AWS Application Load Balancer - Latency Overview", + "description": "See the details of latency in your application load balancer by target group, availability zone, and load balancer.", + "title": "3. AWS Application Load Balancer - Latency Overview", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "loadbalancer": [ + "*" + ], + "namespace": [ + "aws/applicationelb" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelpane-8fb7ac20b210584f", + "structure": "{\"height\":6,\"width\":24,\"x\":0,\"y\":1}" + }, + { + "key": "panelpane-46aba672bb08b846", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":8}" + }, + { + "key": "panelpane-3ebb85e685bf1b4f", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":8}" + }, + { + "key": "panelpane-c1ca3098892bea40", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":14}" + }, + { + "key": "panelpane-c301d958990e694d", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":14}" + }, + { + "key": "panelPANE-42811CC2ADA89846", + "structure": "{\"height\":1,\"width\":24,\"x\":0,\"y\":0}" + }, + { + "key": "panelPANE-BAF589A28E007840", + "structure": "{\"height\":1,\"width\":24,\"x\":0,\"y\":7}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelpane-8fb7ac20b210584f", + "title": "Target Response Time (seconds)", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"axes\":{\"axisY\":{\"title\":\"Seconds\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"AvailabilityZone={{AvailabilityZone}} TargetGroup={{TargetGroup}} loadbalancer={{loadbalancer}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancer={{loadbalancer}} metric=TargetResponseTime Statistic=Average targetgroup=* AvailabilityZone=* | parse field= TargetGroup */* as Unused, TargetGroup | sum by account, region, namespace, loadbalancer, TargetGroup, AvailabilityZone", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-46aba672bb08b846", + "title": "Max and Average Total Client Latency by Target Group", + "visualSettings": "{\"general\":{\"mode\":\"distribution\",\"type\":\"column\",\"fontSize\":12,\"paginationPageSize\":100,\"displayType\":\"default\",\"fillOpacity\":1},\"color\":{\"family\":\"scheme1\"},\"hiddenQueryKeys\":[],\"legend\":{\"enabled\":false},\"axes\":{\"axisY\":{\"title\":\"Latency\"}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse field=TargetGroupArn \"arn:aws:elasticloadbalancing:*:*:*\" as AwsRegion, AccountId, TargetGroup nodrop\n| where RequestProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and TargetProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and ResponseProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/\n| (RequestProcessingTime+TargetProcessingTime+ResponseProcessingTime) as ClientLatency\n// Need to filter out logs where request_processing_time, target_processing_time, or response_processing_time are -1\n// This means the load balancer can't dispatch the request to a target\n| avg(ClientLatency) as AverageClientLatency, max(ClientLatency) as MaximumClientLatency by TargetGroup\n| order by MaximumClientLatency", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-3ebb85e685bf1b4f", + "title": "Max and Average Target Processing Time by Target Group", + "visualSettings": "{\"general\":{\"mode\":\"distribution\",\"type\":\"column\"},\"legend\":{\"enabled\":false},\"axes\":{\"axisY\":{\"title\":\"Latency\"}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse field=TargetGroupArn \"arn:aws:elasticloadbalancing:*:*:*\" as AwsRegion, AccountId, TargetGroup nodrop\n| where RequestProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and TargetProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and ResponseProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/\n// Need to filter out logs where request_processing_time, target_processing_time, or response_processing_time are -1\n// This means the load balancer can't dispatch the request to a target\n| avg(TargetProcessingTime) as AverageTargetProcessingTime, max(TargetProcessingTime) as MaximumTargetProcessingTime by TargetGroup\n| order by MaximumTargetProcessingTime\n\n\n", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-c1ca3098892bea40", + "title": "Average Total Client Latency Over Time by Target Group", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"area\"},\"axes\":{\"axisY\":{\"title\":\"Latency\"}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse field=TargetGroupArn \"arn:aws:elasticloadbalancing:*:*:*\" as AwsRegion, AccountId, TargetGroup nodrop\n| where RequestProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and TargetProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and ResponseProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/\n| (RequestProcessingTime+TargetProcessingTime+ResponseProcessingTime) as ClientLatency\n// Need to filter out logs where request_processing_time, target_processing_time, or response_processing_time are -1\n// This means the load balancer can't dispatch the request to a target\n| timeslice 1m\n| avg(ClientLatency) as AverageClientLatency by TargetGroup ,_timeslice\n| transpose row _timeslice column TargetGroup\n\n", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-c301d958990e694d", + "title": "Average Target Processing Time Over Time by Target Group", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"area\"},\"axes\":{\"axisY\":{\"title\":\"Latency\"}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse field=TargetGroupArn \"arn:aws:elasticloadbalancing:*:*:*\" as AwsRegion, AccountId, TargetGroup nodrop\n| where RequestProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and TargetProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and ResponseProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/\n// Need to filter out logs where request_processing_time, target_processing_time, or response_processing_time are -1\n// This means the load balancer can't dispatch the request to a target\n| timeslice by 1m\n| avg(TargetProcessingTime) as AverageTargetProcessingTime by _timeslice, TargetGroup\n| transpose row _timeslice column TargetGroup", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-42811CC2ADA89846", + "title": "Response", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"backgroundColor\":\"#dfe5e9\",\"showTitle\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Target Response Time" + }, + { + "id": null, + "key": "panelPANE-BAF589A28E007840", + "title": "Latency", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"backgroundColor\":\"#dfe5e9\",\"showTitle\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Events - Backend Latency" + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/applicationelb", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "loadbalancer", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "loadbalancer" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "4. AWS Application Load Balancer - Latency Details", + "description": "See the details of latency in your application load balancer including the average and maximum request and response processing time, by target group and ELB server.", + "title": "4. AWS Application Load Balancer - Latency Details", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "loadbalancer": [ + "*" + ], + "namespace": [ + "aws/applicationelb" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelpane-e21d1869af8bbb43", + "structure": "{\"height\":6,\"width\":24,\"x\":0,\"y\":0}" + }, + { + "key": "panelpane-50edccbfa1cd8b4f", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":6}" + }, + { + "key": "panelpane-39d07f8699151b42", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":6}" + }, + { + "key": "panelpane-9ce61eae9fc92848", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":12}" + }, + { + "key": "panelpane-6fda9ea0b259db4f", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":12}" + }, + { + "key": "panelpane-256726aaafcdba4d", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":24}" + }, + { + "key": "panelpane-d9489b8ebd5daa4c", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":18}" + }, + { + "key": "panelpane-fee25a48afe96841", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":18}" + }, + { + "key": "panelpane-9fa04ab689a4594a", + "structure": "{\"height\":5,\"width\":24,\"x\":0,\"y\":30}" + }, + { + "key": "panelPANE-BCC4A01F93DBD84C", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":24}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelpane-e21d1869af8bbb43", + "title": "Defintions", + "visualSettings": "{\"text\":{\"format\":\"markdown\",\"backgroundColor\":\"#ffffff\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "#### All Time units are in Seconds\n\n#### **Client Latency** = ( RequestProcessingTime + TargetProcessingTime + ResponseProcessingTime)\n\n#### **RequestProcessingTime** = The total time elapsed from the time the load balancer received the request until the time it sent it to a registered instance.\n\n#### **ResponseProcessingTime** = The total time elapsed from the time the load balancer received the response header from the registered instance until it started to send the response to the client. This includes both the queuing time at the load balancer and the connection acquisition time from the load balancer to the back end.\n\n#### **TargetProcessingTime** = The total time elapsed from the time the load balancer sent the request to a registered instance until the instance started to send the response headers." + }, + { + "id": null, + "key": "panelpane-50edccbfa1cd8b4f", + "title": "Events - Client Latency by Domain", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme3\"},\"axes\":{\"axisY\":{\"title\":\"Time\"}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse field=TargetGroupArn \"arn:aws:elasticloadbalancing:*:*:*\" as AwsRegion, AccountId, TargetGroup nodrop\n| parse field=Request \"* *://*:*/* HTTP\" as Method, Protocol, Domain, ServerPort, URI nodrop\n| where RequestProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and TargetProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and ResponseProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/\n// Need to filter out logs where request_processing_time, target_processing_time, or response_processing_time are -1\n// This means the load balancer can't dispatch the request to a target\n| timeslice by 1m\n| avg(RequestProcessingTime) as a1, avg(TargetProcessingTime) as a2,avg(ResponseProcessingTime) as a3 by _timeslice, Domain \n| (a1+a2+a3) as TotalProcessTime\n| fields _timeslice, Domain, TotalProcessTime \n| transpose row _timeslice column Domain\n", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-39d07f8699151b42", + "title": "Events - Client Latency by ELB Server", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme3\"},\"axes\":{\"axisY\":{\"title\":\"Time\"}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse field=TargetGroupArn \"arn:aws:elasticloadbalancing:*:*:*\" as AwsRegion, AccountId, TargetGroup nodrop\n| parse field=Request \"* *://*:*/* HTTP\" as Method, Protocol, Domain, ServerPort, URI nodrop\n| where RequestProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and TargetProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and ResponseProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/\n// Need to filter out logs where request_processing_time, target_processing_time, or response_processing_time are -1\n// This means the load balancer can't dispatch the request to a target\n| timeslice by 1m\n| avg(RequestProcessingTime) as a1, avg(TargetProcessingTime) as a2,avg(ResponseProcessingTime) as a3 by _timeslice, loadbalancer \n| (a1+a2+a3) as TotalProcessTime\n| fields _timeslice, loadbalancer, TotalProcessTime \n| transpose row _timeslice column loadbalancer\n", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-9ce61eae9fc92848", + "title": "Events - Average Request Processing Time by ELB Server", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"column\"},\"axes\":{\"axisY\":{\"title\":\"Time\"}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse field=TargetGroupArn \"arn:aws:elasticloadbalancing:*:*:*\" as AwsRegion, AccountId, TargetGroup nodrop\n| parse field=Request \"* *://*:*/* HTTP\" as Method, Protocol, Domain, ServerPort, URI nodrop\n| where RequestProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and TargetProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and ResponseProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/\n// Need to filter out logs where request_processing_time, target_processing_time, or response_processing_time are -1\n// This means the load balancer can't dispatch the request to a target\n| timeslice by 1m\n| avg(RequestProcessingTime) as AverageRequestProcessingTime by _timeslice, loadbalancer\n| transpose row _timeslice column loadbalancer", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-6fda9ea0b259db4f", + "title": "Events - Average Response Processing Time by ELB Server", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"column\"},\"axes\":{\"axisY\":{\"title\":\"Time\"}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse field=TargetGroupArn \"arn:aws:elasticloadbalancing:*:*:*\" as AwsRegion, AccountId, TargetGroup nodrop\n| parse field=Request \"* *://*:*/* HTTP\" as Method, Protocol, Domain, ServerPort, URI nodrop\n| where RequestProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and TargetProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and ResponseProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/\n// Need to filter out logs where request_processing_time, target_processing_time, or response_processing_time are -1\n// This means the load balancer can't dispatch the request to a target\n| timeslice by 1m\n| avg(ResponseProcessingTime) as AverageResponseProcessingTime by _timeslice, loadbalancer\n| transpose row _timeslice column loadbalancer\n", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-256726aaafcdba4d", + "title": "Events - Average Request Processing Time by Target Group", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"column\"},\"axes\":{\"axisY\":{\"title\":\"Time\"}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse field=TargetGroupArn \"arn:aws:elasticloadbalancing:*:*:*\" as AwsRegion, AccountId, TargetGroup nodrop\n| where RequestProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and TargetProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and ResponseProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/\n// Need to filter out logs where request_processing_time, target_processing_time, or response_processing_time are -1\n// This means the load balancer can't dispatch the request to a target\n| timeslice by 1m\n| avg(RequestProcessingTime) as AverageRequestProcessingTime by _timeslice, TargetGroup\n| transpose row _timeslice column TargetGroup\n", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-d9489b8ebd5daa4c", + "title": "Events - Max Request Processing Time by ELB Server", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"axes\":{\"axisY\":{\"title\":\"Time\"}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse field=TargetGroupArn \"arn:aws:elasticloadbalancing:*:*:*\" as AwsRegion, AccountId, TargetGroup nodrop\n| parse field=Request \"* *://*:*/* HTTP\" as Method, Protocol, Domain, ServerPort, URI nodrop\n| where RequestProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and TargetProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and ResponseProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/\n// Need to filter out logs where request_processing_time, target_processing_time, or response_processing_time are -1\n// This means the load balancer can't dispatch the request to a target\n| timeslice by 1m\n| max(RequestProcessingTime) as MaximumRequestProcessingTime by _timeslice, loadbalancer\n| transpose row _timeslice column loadbalancer\n", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-fee25a48afe96841", + "title": "Events - Max Response Processing Time by ELB Server", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"axes\":{\"axisY\":{\"title\":\"Time\"}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n// Need to filter out logs where request_processing_time, target_processing_time, or response_processing_time are -1\n// This means the load balancer can't dispatch the request to a target\n| where RequestProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and TargetProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and ResponseProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/\n| timeslice by 1m\n| max(ResponseProcessingTime) as MaximumResponseProcessingTime by _timeslice, loadbalancer\n| transpose row _timeslice column loadbalancer\n", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-9fa04ab689a4594a", + "title": "Events - Top 20 Client Latency by Paths", + "visualSettings": "{\"general\":{\"mode\":\"distribution\",\"type\":\"table\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse field=Request \"* *://*:*/* HTTP\" as Method, Protocol, Domain, ServerPort, URI nodrop\n| parse field=TargetGroupArn \"arn:aws:elasticloadbalancing:*:*:*\" as AwsRegion, AccountId, TargetGroup nodrop\n| where RequestProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and TargetProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and ResponseProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/\n// Need to filter out logs where request_processing_time, target_processing_time, or response_processing_time are -1\n// This means the load balancer can't dispatch the request to a target\n| avg(RequestProcessingTime) as a1, avg(TargetProcessingTime) as a2,avg(ResponseProcessingTime) as a3 by uri\n| (a1+a2+a3) as TotalProcessTime\n| fields URI, TotalProcessTime \n| sort by TotalProcessTime \n| limit 20\n\n", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-BCC4A01F93DBD84C", + "title": "Events - Average Response Processing Time by Target Group", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"column\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"fillOpacity\":1,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Time\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse field=TargetGroupArn \"arn:aws:elasticloadbalancing:*:*:*\" as AwsRegion, AccountId, TargetGroup nodrop\n| where RequestProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and TargetProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and ResponseProcessingTime matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/\n// Need to filter out logs where request_processing_time, target_processing_time, or response_processing_time are -1\n// This means the load balancer can't dispatch the request to a target\n| timeslice by 1m\n| avg(ResponseProcessingTime) as AverageResponseProcessingTime by _timeslice, TargetGroup\n| transpose row _timeslice column TargetGroup\n", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/applicationelb", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "loadbalancer", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "loadbalancer" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "5. AWS Application Load Balancer - Connections and Host Status", + "description": "See the details of request and host status including the average unhealthy host count, and healthy host count by target group, availability zone, and load balancer, and request count, outliers in requests by backend, and requests by target.", + "title": "5. AWS Application Load Balancer - Connections and Host Status", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "loadbalancer": [ + "*" + ], + "namespace": [ + "aws/applicationelb" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelpane-72162e80bf98794a", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":15}" + }, + { + "key": "panelpane-3f69e9d8acb63944", + "structure": "{\"height\":6,\"width\":8,\"x\":16,\"y\":8}" + }, + { + "key": "panelpane-b0dcb7ce9acff84d", + "structure": "{\"height\":6,\"width\":8,\"x\":0,\"y\":1}" + }, + { + "key": "panelpane-0a6b3b1a8e6f2a4d", + "structure": "{\"height\":6,\"width\":8,\"x\":8,\"y\":1}" + }, + { + "key": "panelpane-256d7e9895990b46", + "structure": "{\"height\":6,\"width\":8,\"x\":16,\"y\":1}" + }, + { + "key": "panelPANE-AC8CEF56B14A3B49", + "structure": "{\"height\":1,\"width\":24,\"x\":0,\"y\":0}" + }, + { + "key": "panelA50246B29A29584D", + "structure": "{\"height\":1,\"width\":24,\"x\":0,\"y\":7}" + }, + { + "key": "panel248E85BAAAC3FA49", + "structure": "{\"height\":1,\"width\":12,\"x\":0,\"y\":14}" + }, + { + "key": "panel93A07615B0C15B44", + "structure": "{\"height\":1,\"width\":12,\"x\":12,\"y\":14}" + }, + { + "key": "panelF582E76F8F681B46", + "structure": "{\"height\":6,\"width\":8,\"x\":0,\"y\":8}" + }, + { + "key": "panelDCF2F2A88E731942", + "structure": "{\"height\":6,\"width\":8,\"x\":8,\"y\":8}" + }, + { + "key": "panel15B701BABC802B4F", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":15}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelpane-72162e80bf98794a", + "title": "Unhealthy Hosts", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"AvailabilityZone={{AvailabilityZone}} TargetGroup={{TargetGroup}} loadbalancer={{loadbalancer}}\"}}],\"axes\":{\"axisY\":{\"title\":\"Count\"}}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancer={{loadbalancer}} metric=UnHealthyHostCount Statistic=Average AvailabilityZone=* TargetGroup=* | parse field= TargetGroup */* as Unused, TargetGroup | sum by account, region, namespace, loadbalancer, AvailabilityZone, TargetGroup ", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-3f69e9d8acb63944", + "title": "Target Connections Errors", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"axes\":{\"axisY\":{\"title\":\"Count\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"AvailabilityZone={{AvailabilityZone}} TargetGroup={{TargetGroup}} loadbalancer={{loadbalancer}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancer={{loadbalancer}} metric=TargetConnectionErrorCount Statistic=Sum AvailabilityZone=* TargetGroup=* | sum by account, region, namespace, loadbalancer, AvailabilityZone, TargetGroup", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-b0dcb7ce9acff84d", + "title": "Active Connections", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"axes\":{\"axisY\":{\"title\":\"Count\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{loadbalancer}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancer={{loadbalancer}} metric=ActiveConnectionCount Statistic=Sum | sum by account, region, namespace, loadbalancer", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-0a6b3b1a8e6f2a4d", + "title": "New Connections", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"axes\":{\"axisY\":{\"title\":\"Count\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{loadbalancer}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancer={{loadbalancer}} metric= NewConnectionCount Statistic=Sum | sum by account, region, namespace, loadbalancer", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-256d7e9895990b46", + "title": "Rejected Connections", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"axes\":{\"axisY\":{\"title\":\"Count\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"AvailabilityZone={{AvailabilityZone}} loadbalancer={{loadbalancer}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancer={{loadbalancer}} AvailabilityZone=* metric=RejectedConnectionCount Statistic=Sum | sum by account, region, namespace, loadbalancer, AvailabilityZone", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-AC8CEF56B14A3B49", + "title": "Connections", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"backgroundColor\":\"#dfe5e9\",\"showTitle\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Connections" + }, + { + "id": null, + "key": "panelA50246B29A29584D", + "title": "Connections", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"backgroundColor\":\"#dfe5e9\",\"showTitle\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Connections Errors" + }, + { + "id": null, + "key": "panel248E85BAAAC3FA49", + "title": "Hosts", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"backgroundColor\":\"#dfe5e9\",\"showTitle\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Unhealthy Hosts" + }, + { + "id": null, + "key": "panel93A07615B0C15B44", + "title": "Hosts", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"backgroundColor\":\"#dfe5e9\",\"showTitle\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Healthy Hosts" + }, + { + "id": null, + "key": "panelF582E76F8F681B46", + "title": "Client TLS Negotiation Error Count", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"axes\":{\"axisY\":{\"title\":\"Count\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"AvailabilityZone={{AvailabilityZone}} loadbalancer={{loadbalancer}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancer={{loadbalancer}} metric=ClientTLSNegotiationErrorCount Statistic=Sum AvailabilityZone=* | sum by account, region, namespace, loadbalancer, AvailabilityZone", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelDCF2F2A88E731942", + "title": "Target TLS Negotiation Error Count", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"axes\":{\"axisY\":{\"title\":\"Count\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"AvailabilityZone={{AvailabilityZone}} TargetGroup={{TargetGroup}} loadbalancer={{loadbalancer}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancer={{loadbalancer}} metric=TargetTLSNegotiationErrorCount Statistic=Sum AvailabilityZone=* TargetGroup=* | sum by account, region, namespace, loadbalancer, AvailabilityZone, TargetGroup", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel15B701BABC802B4F", + "title": "Healthy Hosts", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"AvailabilityZone={{AvailabilityZone}} TargetGroup={{TargetGroup}} loadbalancer={{loadbalancer}}\"}}],\"axes\":{\"axisY\":{\"title\":\"Count\"}}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancer={{loadbalancer}} metric=HealthyHostCount Statistic=Average AvailabilityZone=* TargetGroup=* | parse field= TargetGroup */* as Unused, TargetGroup | sum by account, region, namespace, loadbalancer, AvailabilityZone, TargetGroup ", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/applicationelb", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "loadbalancer", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "loadbalancer" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "6. AWS Application Load Balancer - Requests and Processed Bytes", + "description": "See the details of requests and Processed bytes for your application load balancer.", + "title": "6. AWS Application Load Balancer - Requests and Processed Bytes", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "loadbalancer": [ + "*" + ], + "namespace": [ + "aws/applicationelb" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelpane-2fb20d99840ff849", + "structure": "{\"height\":6,\"width\":6,\"x\":18,\"y\":13}" + }, + { + "key": "panelpane-7836817bb708584c", + "structure": "{\"height\":6,\"width\":6,\"x\":12,\"y\":13}" + }, + { + "key": "panelpane-9b153d55a89e9849", + "structure": "{\"height\":6,\"width\":6,\"x\":6,\"y\":13}" + }, + { + "key": "panelpane-0a893b479b02184f", + "structure": "{\"height\":6,\"width\":6,\"x\":0,\"y\":13}" + }, + { + "key": "panelPANE-EFE34823AB0FD841", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":0}" + }, + { + "key": "panel9C8F307FA318284A", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":0}" + }, + { + "key": "panelPANE-B00C3708A858994E", + "structure": "{\"height\":1,\"width\":12,\"x\":12,\"y\":12}" + }, + { + "key": "panel15C0E6E0A725A84E", + "structure": "{\"height\":1,\"width\":12,\"x\":0,\"y\":12}" + }, + { + "key": "panel506081A3919ACA4A", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":6}" + }, + { + "key": "panel6A37B8FBA033EB4D", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":6}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelpane-2fb20d99840ff849", + "title": "Events - Outlier (Decrease) Requests by Backend", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"column\"},\"color\":{\"family\":\"scheme4\"},\"axes\":{\"axisY\":{\"title\":\"Requests\"}},\"series\":{},\"overrides\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse field=Target \"*:*\" as TargetIp, TargetPort nodrop\n// Parse all fields above, then aggregate\n| timeslice 1m \n| count by _timeslice, TargetIp\n| outlier _count by TargetIp threshold=2, direction=- \n| where (_count_violation=1) and (_count_indicator=1)\n| fields _timeslice, TargetIp, _count \n| transpose row _timeslice column TargetIp", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-7836817bb708584c", + "title": "Events - Outlier (Increase) Requests by Backend", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"column\",\"fillOpacity\":1},\"color\":{\"family\":\"scheme4\"},\"axes\":{\"axisY\":{\"title\":\"Requests\"}},\"series\":{},\"overrides\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse field=Target \"*:*\" as TargetIp, TargetPort nodrop\n// Parse all fields above, then aggregate\n| timeslice 1m \n| count by _timeslice, TargetIp\n| outlier _count by TargetIp threshold=2, direction=+ \n| where (_count_violation=1) and (_count_indicator=1) and !isEmpty(TargetIp)\n| fields _timeslice, TargetIp, _count \n| transpose row _timeslice column TargetIp", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-9b153d55a89e9849", + "title": "Events - Outlier (Decrease) Requests by Target Group", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"column\"},\"axes\":{\"axisY\":{\"title\":\"Requests\"}},\"series\":{},\"overrides\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse field=TargetGroupArn \"arn:aws:elasticloadbalancing:*:*:*\" as AwsRegion, AccountId, TargetGroup nodrop\n// Parse all fields above, then aggregate\n| timeslice 1m \n| count by _timeslice, TargetGroup\n| outlier _count by TargetGroup threshold=2, direction=+ \n| where (_count_violation=1) and (_count_indicator=1)\n| fields _timeslice, TargetGroup, _count \n| transpose row _timeslice column TargetGroup", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-0a893b479b02184f", + "title": "Events - Outlier (Increase) Requests by Target Group", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"column\"},\"axes\":{\"axisY\":{\"title\":\"Requests\"}},\"series\":{},\"overrides\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse field=TargetGroupArn \"arn:aws:elasticloadbalancing:*:*:*\" as AwsRegion, AccountId, TargetGroup nodrop\n// Parse all fields above, then aggregate\n| timeslice 1m \n| count by _timeslice, TargetGroup\n| outlier _count by TargetGroup threshold=2, direction=+ \n| where (_count_violation=1) and (_count_indicator=1)\n| fields _timeslice, TargetGroup, _count \n| transpose row _timeslice column TargetGroup", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-EFE34823AB0FD841", + "title": "Request Counts", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Count\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"TargetGroup={{TargetGroup}} loadbalancer={{loadbalancer}} \"}}],\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancer={{loadbalancer}} metric= RequestCount TargetGroup=* statistic=sum | sum by account, region, namespace, loadbalancer, TargetGroup", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel9C8F307FA318284A", + "title": "Processed Bytes", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Count\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{loadbalancer}} \"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancer={{loadbalancer}} metric=ProcessedBytes Statistic=Sum | sum by account, region, namespace, loadbalancer", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-B00C3708A858994E", + "title": "Untitled", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"backgroundColor\":\"#dfe5e9\",\"showTitle\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Requests to Backend Servers" + }, + { + "id": null, + "key": "panel15C0E6E0A725A84E", + "title": "Untitled", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"backgroundColor\":\"#dfe5e9\",\"showTitle\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Requests by Target Group" + }, + { + "id": null, + "key": "panel506081A3919ACA4A", + "title": "Received Bytes", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Bytes\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse field=Target \"*:*\" as TargetIp, TargetPort nodrop\n// Parse all fields above, then aggregate\n| timeslice 1m \n| sum(ReceivedBytes) as ReceivedBytes by _timeslice", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel6A37B8FBA033EB4D", + "title": "Sent Bytes", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Bytes\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse field=Target \"*:*\" as TargetIp, TargetPort nodrop\n// Parse all fields above, then aggregate\n| timeslice 1m \n| sum(SentBytes) as SentBytes by _timeslice", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/applicationelb", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "loadbalancer", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "loadbalancer" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "7. AWS Application Load Balancer - Threat Intel", + "description": "See the details of IP threats including the count, location, and highly malicious IP threats.", + "title": "7. AWS Application Load Balancer - Threat Intel", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "loadbalancer": [ + "*" + ], + "namespace": [ + "aws/applicationelb" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelpane-3b762241ac0aba4d", + "structure": "{\"height\":6,\"width\":5,\"x\":8,\"y\":0}" + }, + { + "key": "panelpane-c08479a8a0390b4d", + "structure": "{\"height\":6,\"width\":16,\"x\":8,\"y\":6}" + }, + { + "key": "panelpane-b8ffc92b8b722a41", + "structure": "{\"height\":6,\"width\":24,\"x\":0,\"y\":20}" + }, + { + "key": "panelpane-c605d948852ffb48", + "structure": "{\"height\":6,\"width\":11,\"x\":13,\"y\":0}" + }, + { + "key": "panelPANE-642147F890E0F848", + "structure": "{\"height\":12,\"width\":8,\"x\":0,\"y\":0}" + }, + { + "key": "panelPANE-3AA22D409203F942", + "structure": "{\"height\":8,\"width\":24,\"x\":0,\"y\":12}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelpane-3b762241ac0aba4d", + "title": "All IP Threat Count", + "visualSettings": "{\"general\":{\"type\":\"svp\"},\"svp\":{\"option\":\"Sum\",\"label\":\"Threats\",\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"valueFontSize\":20,\"labelFontSize\":8,\"sparkline\":{\"show\":false,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false,\"min\":0,\"max\":100}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse regex \"(?\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})\" multi\n| where ClientIp != \"0.0.0.0\" and ClientIp != \"127.0.0.1\"\n| count as ip_count by ClientIp\n| lookup type, actor, raw, threatlevel as MaliciousConfidence from sumo://threat/cs on threat=ClientIp \n| json field=raw \"labels[*].name\" as LabelName \n| replace(LabelName, \"\\\\/\",\"->\") as LabelName\n| replace(LabelName, \"\\\"\",\" \") as LabelName\n| where type=\"ip_address\" and !isNull(MaliciousConfidence)\n| if (isEmpty(actor), \"Unassigned\", actor) as Actor\n| sum (ip_count) as threat_count", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-c08479a8a0390b4d", + "title": "Highly Malicious IP Threats Table", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"table\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse regex \"(?\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})\" multi\n| where ClientIp != \"0.0.0.0\" and ClientIp != \"127.0.0.1\"\n| count as ip_count by ClientIp\n| lookup type, actor, raw, threatlevel as MaliciousConfidence from sumo://threat/cs on threat=ClientIp \n| json field=raw \"labels[*].name\" as LabelName \n| replace(LabelName, \"\\\\/\",\"->\") as LabelName\n| replace(LabelName, \"\\\"\",\" \") as LabelName\n| where type=\"ip_address\" and MaliciousConfidence=\"high\"\n| if (isEmpty(actor), \"Unassigned\", actor) as Actor\n| sum (ip_count) as ThreatCount by ClientIp, MaliciousConfidence, Actor, LabelName\n| sort by ThreatCount", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-b8ffc92b8b722a41", + "title": "All IP Threats Table", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"table\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse regex \"(?\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})\" multi\n| where ClientIp != \"0.0.0.0\" and ClientIp != \"127.0.0.1\"\n| count as ip_count by ClientIp\n| lookup type, actor, raw, threatlevel as MaliciousConfidence from sumo://threat/cs on threat=ClientIp \n| json field=raw \"labels[*].name\" as LabelName \n| replace(LabelName, \"\\\\/\",\"->\") as LabelName\n| replace(LabelName, \"\\\"\",\" \") as LabelName\n| where type=\"ip_address\" and !isNull(MaliciousConfidence)\n| if (isEmpty(actor), \"Unassigned\", actor) as Actor\n| sum (ip_count) as ThreatCount by ClientIp, MaliciousConfidence, Actor, LabelName\n| sort by MaliciousConfidence", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-c605d948852ffb48", + "title": "Malicious Confidence", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"bar\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"fillOpacity\":1,\"mode\":\"distribution\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse regex \"(?\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})\" multi\n| where ClientIp != \"0.0.0.0\" and ClientIp != \"127.0.0.1\"\n| count as ip_count by ClientIp\n| count as Count by ClientIp\n| lookup type, actor, raw, threatlevel as MaliciousConfidence from sumo://threat/cs on threat=ClientIp \n| json field=raw \"labels[*].name\" as LabelName \n| replace(LabelName, \"\\\\/\",\"->\") as LabelName\n| replace(LabelName, \"\\\"\",\" \") as LabelName\n| where type=\"ip_address\" and !isNull(MaliciousConfidence)\n| if (isEmpty(actor), \"Unassigned\", actor) as Actor\n| count by MaliciousConfidence\n| sort by _count", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-642147F890E0F848", + "title": "Threat Locations", + "visualSettings": "{\"general\":{\"mode\":\"map\",\"type\":\"map\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#ED3CPE\",\"outlierBandFillOpacity\":0.15,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse regex \"(?\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})\" multi\n| where ClientIp != \"0.0.0.0\" and ClientIp != \"127.0.0.1\"\n| count as Count by ClientIp\n| lookup type, actor, raw, threatlevel as MaliciousConfidence from sumo://threat/cs on threat=ClientIp \n| json field=raw \"labels[*].name\" as LabelName \n| replace(LabelName, \"\\\\/\",\"->\") as LabelName\n| replace(LabelName, \"\\\"\",\" \") as LabelName\n| where type=\"ip_address\" and !isNull(MaliciousConfidence)\n| if (isEmpty(actor), \"Unassigned\", actor) as Actor\n| count by ClientIp\n| lookup latitude, longitude, country_code, country_name, region, city, postal_code from geo://location on ip = ClientIp\n| count by latitude, longitude, country_code, country_name, region, city, postal_code\n| where !isnull(latitude)", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-3AA22D409203F942", + "title": "Top URI's Accessed by Highly Malicious Threat IPs", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"distribution\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| where tolowercase(loadbalancer) matches tolowercase(\"{{loadbalancer}}\")\n| parse field=Request \"* *://*:*/* HTTP\" as Method, Protocol, Domain, ServerPort, URI nodrop\n| parse regex \"(?\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})\" multi\n| where ClientIp != \"0.0.0.0\" and ClientIp != \"127.0.0.1\"\n| count as ip_count by ClientIp, URI\n| lookup type, actor, raw, threatlevel as MaliciousConfidence from sumo://threat/cs on threat=ClientIp \n| json field=raw \"labels[*].name\" as LabelName \n| replace(LabelName, \"\\\\/\",\"->\") as LabelName\n| replace(LabelName, \"\\\"\",\" \") as LabelName\n| where type=\"ip_address\" and MaliciousConfidence=\"high\"\n| if (isEmpty(actor), \"Unassigned\", actor) as Actor\n| count(ip_count) as UniqueThreatIPs by URI\n| top 20 URI by UniqueThreatIPs, URI asc", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/applicationelb", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "loadbalancer", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "loadbalancer" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + } + ], + "coloringRules": [] + } + ] +} \ No newline at end of file diff --git a/aws-observability-terraform/examples/aws-observability/json/Alerts-App.json b/aws-observability-terraform/examples/aws-observability/json/Alerts-App.json new file mode 100644 index 00000000..2ecae908 --- /dev/null +++ b/aws-observability-terraform/examples/aws-observability/json/Alerts-App.json @@ -0,0 +1,1701 @@ +{ + "name": "AWS Observability", + "description": "", + "type": "MonitorsLibraryFolderExport", + "children": [ + { + "name": "AWS API Gateway - High Latency", + "description": "This alert fires when we detect that the average latency for a given API Gateway is greater than or equal to one second for 5 minutes.", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/apigateway metric=Latency statistic=Average account=* region=* apiname=* | avg by apiname, namespace, region, account" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 1000, + "thresholdType": "GreaterThanOrEqual", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 1000, + "thresholdType": "LessThan", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + }, + { + "name": "Amazon Elasticache - High Engine CPU Utilization", + "description": "This alert fires when the average CPU utilization for the Redis engine process within a 5 minute interval is high (>=90%). For larger node types with four vCPUs or more, use the EngineCPUUtilization metric to monitor and set thresholds for scaling.", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/elasticache metric=EngineCPUUtilization statistic=Average account=* region=* CacheClusterId=* CacheNodeId=* | avg by CacheClusterId, CacheNodeId, account, region, namespace" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 90, + "thresholdType": "GreaterThanOrEqual", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 90, + "thresholdType": "LessThan", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + }, + { + "name": "AWS EC2 - High Memory Utilization", + "description": "This alert fires when the average memory utilization within a 5 minute interval for an EC2 instance is high (>=85%).", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/ec2 metric=Mem_UsedPercent account=* region=* instanceid=* | avg by account, region, namespace, instanceid" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 85, + "thresholdType": "GreaterThanOrEqual", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 85, + "thresholdType": "LessThan", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + }, + { + "name": "Amazon Elasticache - Low Redis Cache Hit Rate", + "description": "This alert fires when the average cache hit rate for Redis within a 5 minute interval is low (<= 80%). This indicates low efficiency of the Redis instance. If cache ratio is lower than 80%, that indicates a significant amount of keys are either evicted, expired, or don't exist.", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/elasticache metric=CacheHitRate statistic=Average account=* region=* CacheClusterId=* CacheNodeId=* | avg by account, region, namespace, CacheClusterId, CacheNodeId" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 80, + "thresholdType": "LessThanOrEqual", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 80, + "thresholdType": "GreaterThan", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + }, + { + "name": "AWS API Gateway - High 5XX Errors", + "description": "This alert fires where there are too many HTTP requests (>5%) with a response status of 5xx within an interval of 5 minutes.", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/apigateway metric=5xxError Statistic=Sum account=* region=* apiname=* | sum by apiname, account, region, namespace" + }, + { + "rowId": "B", + "query": "Namespace=aws/apigateway metric=count Statistic=Sum account=* region=* apiname=* | sum by apiname, account, region, namespace" + }, + { + "rowId": "C", + "query": "#A * 100 / #B along account, region, namespace" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 5, + "thresholdType": "GreaterThanOrEqual", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 5, + "thresholdType": "LessThan", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + }, + { + "name": "AWS Application Load Balancer - High Latency", + "description": "This alert fires when we detect that the average latency for a given Application load balancer within a time interval of 5 minutes is greater than or equal to three seconds.", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/applicationelb metric=TargetResponseTime Statistic=Average account=* region=* loadbalancer=* | eval(_value*1000) | sum by account, region, namespace, loadbalancer" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 3000, + "thresholdType": "GreaterThanOrEqual", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 3000, + "thresholdType": "LessThan", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + }, + { + "name": "Amazon ECS - High Memory Utilization", + "description": "This alert fires when the average memory utilization within a 5 minute interval for a service within a cluster is high (>=85%).", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/ecs metric=MemoryUtilization statistic=Average account=* region=* ClusterName=* ServiceName=* | avg by ClusterName, ServiceName, account, region, namespace" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 85, + "thresholdType": "GreaterThanOrEqual", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 85, + "thresholdType": "LessThan", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + }, + { + "name": "Amazon RDS - High Write Latency", + "description": "This alert fires when the average write latency of a database within a 5 minute interval is high (>=5 seconds) . High write latencies will affect the performance of your application.", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/rds metric=WriteLatency statistic=Average account=* region=* dbidentifier=* | avg by dbidentifier, namespace, region, account" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 5, + "thresholdType": "GreaterThanOrEqual", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 5, + "thresholdType": "LessThan", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + }, + { + "name": "AWS Application Load Balancer - High 4XX Errors", + "description": "This alert fires where there are too many HTTP requests (>5%) with a response status of 4xx within an interval of 5 minutes.", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/applicationelb metric=HTTPCode_ELB_4XX_Count Statistic=Sum account=* region=* loadbalancer=* | sum by loadbalancer, account, region, namespace" + }, + { + "rowId": "B", + "query": "Namespace=aws/applicationelb metric=RequestCount Statistic=Sum account=* region=* loadbalancer=* | sum by loadbalancer, account, region, namespace" + }, + { + "rowId": "C", + "query": "#A * 100 / #B along loadbalancer, account, region, namespace" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 5, + "thresholdType": "GreaterThanOrEqual", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 5, + "thresholdType": "LessThan", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + }, + { + "name": "Amazon RDS - Low Burst Balance", + "description": "This alert fires when we observe a low burst balance (<= 50%) for a given database. A low burst balance indicates you won't be able to scale up as fast for burstable database workloads on gp2 volumes.", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/rds metric=BurstBalance statistic=Average account=* region=* dbidentifier=* | avg by dbidentifier, namespace, region, account" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 50, + "thresholdType": "LessThanOrEqual", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 50, + "thresholdType": "GreaterThan", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + }, + { + "name": "AWS Classic Load Balancer - Access from Highly Malicious Sources", + "description": "This alert fires when the Classic load balancer is accessed from highly malicious IP addresses within last 5 minutes.", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Logs", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "account=* region=* namespace=aws/elb\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| parse regex \"(?\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})\" multi\n| where ClientIp != \"0.0.0.0\" and ClientIp != \"127.0.0.1\"\n| count as ip_count by ClientIp, loadbalancername, account, region, namespace\n| lookup type, actor, raw, threatlevel as MaliciousConfidence from sumo://threat/cs on threat=ClientIp \n| json field=raw \"labels[*].name\" as LabelName \n| replace(LabelName, \"\\\\/\",\"->\") as LabelName\n| replace(LabelName, \"\\\"\",\" \") as LabelName\n| where type=\"ip_address\" and MaliciousConfidence=\"high\"\n| if (isEmpty(actor), \"Unassigned\", actor) as Actor\n| sum (ip_count) as ThreatCount by ClientIp, loadbalancername, account, region, namespace, MaliciousConfidence, Actor, LabelName" + } + ], + "triggers": [ + { + "detectionMethod": "LogsStaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 0, + "thresholdType": "GreaterThan", + "field": "" + }, + { + "detectionMethod": "LogsStaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 0, + "thresholdType": "LessThanOrEqual", + "field": "" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": true, + "playbook": "" + }, + { + "name": "AWS Classic Load Balancer - High 5XX Errors", + "description": "This alert fires where there are too many HTTP requests (>5%) with a response status of 5xx within an interval of 5 minutes.", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/elb metric=HTTPCode_ELB_5XX Statistic=Sum account=* region=* loadbalancername=* | sum by loadbalancername, account, region, namespace" + }, + { + "rowId": "B", + "query": "Namespace=aws/elb metric=RequestCount Statistic=Sum account=* region=* loadbalancername=* | sum by loadbalancername, account, region, namespace" + }, + { + "rowId": "C", + "query": "#A * 100 / #B along loadbalancername, account, region, namespace" + } + ], + "triggers": [ + { + "detectionMethod": "MetricsStaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 5, + "thresholdType": "GreaterThanOrEqual", + "occurrenceType": "Always" + }, + { + "detectionMethod": "MetricsStaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 5, + "thresholdType": "LessThan", + "occurrenceType": "Always" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + }, + { + "name": "AWS Network Load Balancer - High Unhealthy Hosts", + "description": "This alert fires when we detect that are there are too many unhealthy hosts (>=10%) within an interval of 5 minutes for a given network load balancer", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/NetworkELB metric=UnHealthyHostCount Statistic=sum account=* region=* LoadBalancer=* AvailabilityZone=* | sum by LoadBalancer, AvailabilityZone, account, region, namespace" + }, + { + "rowId": "B", + "query": "Namespace=aws/NetworkELB metric=HealthyHostCount Statistic=sum account=* region=* LoadBalancer=* AvailabilityZone=* | sum by LoadBalancer, AvailabilityZone, account, region, namespace" + }, + { + "rowId": "C", + "query": "#A * 100 / (#A + #B) along LoadBalancer, AvailabilityZone, account, region, namespace" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 10, + "thresholdType": "GreaterThanOrEqual", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 10, + "thresholdType": "LessThan", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + }, + { + "name": "AWS API Gateway - High Integration Latency", + "description": "This alert fires when we detect that the average integration latency for a given API Gateway is greater than or equal to one second for 5 minutes.", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/apigateway metric=IntegrationLatency statistic=Average account=* region=* apiname=* | avg by apiname, namespace, region, account" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 1000, + "thresholdType": "GreaterThanOrEqual", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 1000, + "thresholdType": "LessThan", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + }, + { + "name": "AWS Lambda - High Percentage of Failed Requests", + "description": "This alert fires when we detect a large number of failed Lambda requests (>5%) within an interval of 5 minutes.", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/lambda metric=Errors Statistic=Sum account=* region=* functionname=* | sum by functionname, account, region, namespace" + }, + { + "rowId": "B", + "query": "Namespace=aws/lambda metric=Invocations Statistic=Sum account=* region=* functionname=* | sum by functionname, account, region, namespace" + }, + { + "rowId": "C", + "query": "#A * 100 / #B along functionname, account, region, namespace" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 5, + "thresholdType": "GreaterThanOrEqual", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 5, + "thresholdType": "LessThan", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + }, + { + "name": "AWS Application Load Balancer - High 5XX Errors", + "description": "This alert fires where there are too many HTTP requests (>5%) with a response status of 5xx within an interval of 5 minutes.", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/applicationelb metric=HTTPCode_ELB_5XX_Count Statistic=Sum account=* region=* loadbalancer=* | sum by loadbalancer, account, region, namespace" + }, + { + "rowId": "B", + "query": "Namespace=aws/applicationelb metric=RequestCount Statistic=Sum account=* region=* loadbalancer=* | sum by loadbalancer, account, region, namespace" + }, + { + "rowId": "C", + "query": "#A * 100 / #B along loadbalancer, account, region, namespace" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 5, + "thresholdType": "GreaterThanOrEqual", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 5, + "thresholdType": "LessThan", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + }, + { + "name": "Amazon Elasticache - High Redis Memory Fragmentation Ratio", + "description": "This alert fires when the average Redis memory fragmentation ratio for within a 5 minute interval is high (>=1.5). Value equal to or greater than 1.5 Indicate significant memory fragmentation.", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/elasticache metric=MemoryFragmentationRatio statistic=Average account=* region=* CacheClusterId=* CacheNodeId=* | avg by account, region, namespace, CacheClusterId, CacheNodeId" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 1.5, + "thresholdType": "GreaterThanOrEqual", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 1.5, + "thresholdType": "LessThan", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + }, + { + "name": "Amazon Elasticache - High CPU Utilization", + "description": "This alert fires when the average CPU utilization within a 5 minute interval for a host is high (>=90%). The CPUUtilization metric includes total CPU utilization across application, operating system and management processes. We highly recommend monitoring CPU utilization for hosts with two vCPUs or less.", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/elasticache metric=CPUUtilization statistic=Average account=* region=* CacheClusterId=* CacheNodeId=* | avg by CacheClusterId, CacheNodeId, account, region, namespace" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 90, + "thresholdType": "GreaterThanOrEqual", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 90, + "thresholdType": "LessThan", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + }, + { + "name": "Amazon RDS - Low Aurora Buffer Cache Hit Ratio", + "description": "This alert fires when the average RDS Aurora buffer cache hit ratio within a 5 minute interval is low (<= 50%). This indicates that a lower percentage of requests were are served by the buffer cache, which could further indicate a degradation in application performance.", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/rds metric=BufferCacheHitRatio statistic=Average account=* region=* dbidentifier=* | avg by dbidentifier, namespace, region, account" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 50, + "thresholdType": "LessThanOrEqual", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 50, + "thresholdType": "GreaterThan", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + }, + { + "name": "AWS API Gateway - High 4XX Errors", + "description": "This alert fires where there are too many HTTP requests (>5%) with a response status of 4xx within an interval of 5 minutes.", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/apigateway metric=4xxError Statistic=Sum account=* region=* apiname=* | sum by apiname, account, region, namespace" + }, + { + "rowId": "B", + "query": "Namespace=aws/apigateway metric=count Statistic=Sum account=* region=* apiname=* | sum by apiname, account, region, namespace" + }, + { + "rowId": "C", + "query": "#A * 100 / #B along apiname, account, region, namespace" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 5, + "thresholdType": "GreaterThanOrEqual", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 5, + "thresholdType": "LessThan", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + }, + { + "name": "AWS EC2 - High Total CPU Utilization", + "description": "This alert fires when the average total CPU utilization within a 5 minute interval for an EC2 instance is high (>=85%).", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/ec2 metric=CPU_Total account=* region=* instanceid=* | avg by account, region, namespace, instanceid" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 85, + "thresholdType": "GreaterThanOrEqual", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 85, + "thresholdType": "LessThan", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + }, + { + "name": "AWS Classic Load Balancer - High Latency", + "description": "This alert fires when we detect that the average latency for a given Classic load balancer within a time interval of 5 minutes is greater than or equal to three seconds.", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/elb metric=Latency Statistic=Average account=* region=* loadbalancername=* | eval(_value*1000) | sum by account, region, namespace, loadbalancername" + } + ], + "triggers": [ + { + "detectionMethod": "MetricsStaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 3000, + "thresholdType": "GreaterThanOrEqual", + "occurrenceType": "Always" + }, + { + "detectionMethod": "MetricsStaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 3000, + "thresholdType": "LessThan", + "occurrenceType": "Always" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + }, + { + "name": "AWS EC2 - High Disk Utilization", + "description": "This alert fires when the average disk utilization within a 5 minute time interval for an EC2 instance is high (>=85%).", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/ec2 metric=Disk_UsedPercent account=* region=* instanceid=* | avg by account, region, namespace, instanceid, devname" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 85, + "thresholdType": "GreaterThanOrEqual", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 85, + "thresholdType": "LessThan", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + }, + { + "name": "Amazon ECS - High CPU Utilization", + "description": "This alert fires when the average CPU utilization within a 5 minute interval for a service within a cluster is high (>=85%).", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/ecs metric=CPUUtilization statistic=Average account=* region=* ClusterName=* ServiceName=* | avg by ClusterName, ServiceName, account, region, namespace" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 85, + "thresholdType": "GreaterThanOrEqual", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 85, + "thresholdType": "LessThan", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + }, + { + "name": "AWS Network Load Balancer - High TLS Negotiation Errors", + "description": "This alert fires when we detect that there are too many TLS Negotiation Errors (>=10%) within an interval of 5 minutes for a given network load balancer", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/NetworkELB metric=ClientTLSNegotiationErrorCount Statistic=sum account=* region=* LoadBalancer=* | sum by LoadBalancer, account, region, namespace" + }, + { + "rowId": "B", + "query": "Namespace=aws/NetworkELB metric=TargetTLSNegotiationErrorCount Statistic=sum account=* region=* LoadBalancer=* | sum by LoadBalancer, account, region, namespace" + }, + { + "rowId": "C", + "query": "(#A + #B) along LoadBalancer, account, region, namespace" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 10, + "thresholdType": "GreaterThanOrEqual", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 10, + "thresholdType": "LessThan", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + }, + { + "name": "Amazon Elasticache - Multiple Failed Operations", + "description": "This alert fires when we detect multiple failed operations within a 15 minute interval for an ElastiCache service.", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Logs", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "account=* region=* namespace=aws/elasticache \"\\\"eventSource\\\":\\\"elasticache.amazonaws.com\\\"\" errorCode errorMessage\n| json \"eventSource\", \"errorCode\", \"errorMessage\", \"userIdentity\", \"requestParameters\", \"responseElements\" as event_source, error_code, error_message, user_identity, requestParameters, responseElements nodrop\n| json field=requestParameters \"cacheClusterId\" as req_cacheClusterId nodrop\n| json field=responseElements \"cacheClusterId\" as res_cacheClusterId nodrop\n| json field=user_identity \"arn\", \"userName\" nodrop \n| parse field=arn \":assumed-role/*\" as user nodrop \n| parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| if (isEmpty(userName), user, userName) as user\n| if (isEmpty(req_cacheClusterId), res_cacheClusterId, req_cacheClusterId) as cacheclusterid\n| where event_source matches \"elasticache.amazonaws.com\" and !isEmpty(error_code) and !isEmpty(error_message) and !isEmpty(user)\n| count as event_count by _messageTime, account, region, event_source, error_code, error_message, user, cacheclusterid\n| formatDate(_messageTime, \"MM/dd/yyyy HH:mm:ss:SSS Z\") as message_date\n| fields message_date, account, region, event_source, error_code, error_message, user, cacheclusterid\n| fields -_messageTime" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-15m", + "threshold": 10, + "thresholdType": "GreaterThanOrEqual", + "field": null, + "occurrenceType": "ResultCount", + "triggerSource": "AllResults" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-15m", + "threshold": 10, + "thresholdType": "LessThan", + "field": null, + "occurrenceType": "ResultCount", + "triggerSource": "AllResults" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": true, + "playbook": "" + }, + { + "name": "Amazon Elasticache - High Redis Database Memory Usage", + "description": "This alert fires when the average database memory usage within a 5 minute interval for the Redis engine is high (>=95%). When the value reaches 100%, eviction may happen or write operations may fail based on ElastiCache policies thereby impacting application performance.", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/elasticache metric=DatabaseMemoryUsagePercentage statistic=Average account=* region=* CacheClusterId=* CacheNodeId=* | avg by account, region, namespace, CacheClusterId, CacheNodeId" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 95, + "thresholdType": "GreaterThanOrEqual", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 95, + "thresholdType": "LessThan", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + }, + { + "name": "AWS EC2 - High System CPU Utilization", + "description": "This alert fires when the average system CPU utilization within a 5 minute interval for an EC2 instance is high (>=85%).", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/ec2 metric=CPU_Sys account=* region=* instanceid=* | avg by account, region, namespace, instanceid" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 85, + "thresholdType": "GreaterThanOrEqual", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 85, + "thresholdType": "LessThan", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + }, + { + "name": "AWS Lambda - Low Provisioned Concurrency Utilization", + "description": "This alert fires when the average provisioned concurrency utilization for 5 minutes is low (<= 50%). This indicates low provisioned concurrency utilization efficiency.", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/lambda metric=ProvisionedConcurrencyUtilization statistic=Average account=* region=* functionname=* | avg by functionname, namespace, region, account" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 50, + "thresholdType": "LessThanOrEqual", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 50, + "thresholdType": "GreaterThan", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + }, + { + "name": "AWS DynamoDB - High Max Provisioned Table Write Capacity", + "description": "This alert fires when we detect that the average percentage of write provisioned capacity used by the highest write provisioned table of an account for a time interval of 5 minutes is great than or equal to 80%. High values indicate requests to the database are being throttled, which could further indicate that your application may not be working as intended.", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/dynamodb metric=MaxProvisionedTableWriteCapacityUtilization statistic=Average account=* region=* | avg by namespace, region, account" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 80, + "thresholdType": "GreaterThanOrEqual", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 80, + "thresholdType": "LessThan", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + }, + { + "name": "AWS DynamoDB - High Max Provisioned Table Read Capacity", + "description": "This alert fires when we detect that the average percentage of read provisioned capacity used by the highest read provisioned table of an account for a time interval of 5 minutes is great than or equal to 80%. High values indicate requests to the database are being throttled, which could further indicate that your application may not be working as intended.", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/dynamodb metric=MaxProvisionedTableReadCapacityUtilization statistic=Average account=* region=* | avg by namespace, region, account" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 80, + "thresholdType": "GreaterThanOrEqual", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 80, + "thresholdType": "LessThan", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + }, + { + "name": "AWS DynamoDB - Multiple Tables deleted", + "description": "This alert fires when we detect multiple failed operations for Elasticache service within 15 minutes", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Logs", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "account=* region=* namespace=aws/dynamodb eventSource \"dynamodb.amazonaws.com\"\n| json \"eventSource\", \"eventName\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as event_source, event_name, tablename, SourceIp, UserName, ContextUserName nodrop\n| where event_source = \"dynamodb.amazonaws.com\" and event_name = \"DeleteTable\"\n| if (isEmpty(UserName), ContextUserName, UserName) as user\n| count by _messageTime, account, region, namespace, event_name, user, tablename\n| formatDate(_messageTime, \"MM/dd/yyyy HH:mm:ss:SSS Z\") as message_date\n| fields message_date, account, region, namespace, event_name, user, tablename\n| fields -_messageTime" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-15m", + "threshold": 5, + "thresholdType": "GreaterThanOrEqual", + "field": null, + "occurrenceType": "ResultCount", + "triggerSource": "AllResults" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-15m", + "threshold": 5, + "thresholdType": "LessThan", + "field": null, + "occurrenceType": "ResultCount", + "triggerSource": "AllResults" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": true, + "playbook": "" + }, + { + "name": "AWS DynamoDB - High Account Provisioned Write Capacity", + "description": "This alert fires when we detect that the average write capacity provisioned for an account for a time interval of 5 minutes is greater than or equal to 80%. High values indicate requests to the database are being throttled, which could further indicate that your application may not be working as intended.", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/dynamodb metric=AccountProvisionedWriteCapacityUtilization statistic=Average account=* region=* | avg by namespace, region, account" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 80, + "thresholdType": "GreaterThanOrEqual", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 80, + "thresholdType": "LessThan", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + }, + { + "name": "Amazon RDS - High Read Latency", + "description": "This alert fires when the average read latency of a database within a 5 minutes time inerval is high (>=5 seconds). High read latency will affect the performance of your application.", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/rds metric=ReadLatency statistic=Average account=* region=* dbidentifier=* | avg by dbidentifier, namespace, region, account" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 5, + "thresholdType": "GreaterThanOrEqual", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 5, + "thresholdType": "LessThan", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + }, + { + "name": "AWS Application Load Balancer - Access from Highly Malicious Sources", + "description": "This alert fires when an Application load balancer is accessed from highly malicious IP addresses within last 5 minutes", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Logs", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "account=* region=* namespace=aws/applicationelb\n| parse \"* * * * * * * * * * * * \\\"*\\\" \\\"*\\\" * * * \\\"*\\\"\" as Type, DateTime, loadbalancer, Client, Target, RequestProcessingTime, TargetProcessingTime, ResponseProcessingTime, ElbStatusCode, TargetStatusCode, ReceivedBytes, SentBytes, Request, UserAgent, SslCipher, SslProtocol, TargetGroupArn, TraceId\n| parse regex \"(?\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})\" multi\n| where ClientIp != \"0.0.0.0\" and ClientIp != \"127.0.0.1\"\n| count as ip_count by ClientIp, loadbalancer, account, region, namespace\n| lookup type, actor, raw, threatlevel as MaliciousConfidence from sumo://threat/cs on threat=ClientIp \n| json field=raw \"labels[*].name\" as LabelName \n| replace(LabelName, \"\\\\/\",\"->\") as LabelName\n| replace(LabelName, \"\\\"\",\" \") as LabelName\n| where type=\"ip_address\" and MaliciousConfidence=\"high\"\n| if (isEmpty(actor), \"Unassigned\", actor) as Actor\n| sum (ip_count) as ThreatCount by ClientIp, loadbalancer, account, region, namespace, MaliciousConfidence, Actor, LabelName" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 0, + "thresholdType": "GreaterThan", + "field": null, + "occurrenceType": "ResultCount", + "triggerSource": "AllResults" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 0, + "thresholdType": "LessThanOrEqual", + "field": null, + "occurrenceType": "ResultCount", + "triggerSource": "AllResults" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": true, + "playbook": "" + }, + { + "name": "AWS Classic Load Balancer - High 4XX Errors", + "description": "This alert fires where there are too many HTTP requests (>5%) with a response status of 4xx within an interval of 5 minutes.", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/elb metric=HTTPCode_ELB_4XX Statistic=Sum account=* region=* loadbalancername=* | sum by loadbalancername, account, region, namespace" + }, + { + "rowId": "B", + "query": "Namespace=aws/elb metric=RequestCount Statistic=Sum account=* region=* loadbalancername=* | sum by loadbalancername, account, region, namespace" + }, + { + "rowId": "C", + "query": "#A * 100 / #B along loadbalancername, account, region, namespace" + } + ], + "triggers": [ + { + "detectionMethod": "MetricsStaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 5, + "thresholdType": "GreaterThanOrEqual", + "occurrenceType": "Always" + }, + { + "detectionMethod": "MetricsStaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 5, + "thresholdType": "LessThan", + "occurrenceType": "Always" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + }, + { + "name": "Amazon RDS - High CPU Utilization", + "description": "This alert fires when we detect that the average CPU utilization for a database is high (>=85%) for an interval of 5 minutes.", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/rds metric=CPUUtilization statistic=Average account=* region=* dbidentifier=* | avg by dbidentifier, namespace, region, account" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 85, + "thresholdType": "GreaterThanOrEqual", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 85, + "thresholdType": "LessThan", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + }, + { + "name": "Amazon RDS - High Disk Queue Depth", + "description": "This alert fires when the average disk queue depth for a database is high (>=5) for an interval of 5 minutes. Higher this value, higher will be the number of outstanding I/Os (read/write requests) waiting to access the disk, which will impact the performance of your application.", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/rds metric=DiskQueueDepth statistic=Average account=* region=* dbidentifier=* | avg by dbidentifier, namespace, region, account" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 5, + "thresholdType": "GreaterThanOrEqual", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 5, + "thresholdType": "LessThan", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + }, + { + "name": "AWS DynamoDB - High Account Provisioned Read Capacity", + "description": "This alert fires when we detect that the average read capacity provisioned for an account for a time interval of 5 minutes is greater than or equal to 80%. High values indicate requests to the database are being throttled, which could further indicate that your application may not be working as intended.", + "type": "MonitorsLibraryMonitorExport", + "monitorType": "Metrics", + "evaluationDelay": "0m", + "alertName": null, + "runAs": null, + "notificationGroupFields": [], + "queries": [ + { + "rowId": "A", + "query": "Namespace=aws/dynamodb metric=AccountProvisionedReadCapacityUtilization statistic=Average account=* region=* | avg by namespace, region, account" + } + ], + "triggers": [ + { + "detectionMethod": "StaticCondition", + "triggerType": "Critical", + "timeRange": "-5m", + "threshold": 80, + "thresholdType": "GreaterThanOrEqual", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + }, + { + "detectionMethod": "StaticCondition", + "triggerType": "ResolvedCritical", + "timeRange": "-5m", + "threshold": 80, + "thresholdType": "LessThan", + "field": null, + "occurrenceType": "Always", + "triggerSource": "AnyTimeSeries" + } + ], + "notifications": [], + "isDisabled": true, + "groupNotifications": false, + "playbook": "" + } + ] +} diff --git a/aws-observability-terraform/examples/aws-observability/json/Api-Gateway-App.json b/aws-observability-terraform/examples/aws-observability/json/Api-Gateway-App.json new file mode 100644 index 00000000..46288e83 --- /dev/null +++ b/aws-observability-terraform/examples/aws-observability/json/Api-Gateway-App.json @@ -0,0 +1,2009 @@ +{ + "type": "FolderSyncDefinition", + "name": "AWS API Gateway", + "description": "The Sumo Logic App for AWS API Gateway provides visibility into your Amazon APIGateway Service Metrics collected via a CloudWatch Metrics Source. The App’s Dashboards provide preconfigured searches and filters that allow you to monitor your API Gateway Infrastructure.", + "children": [ + { + "type": "DashboardV2SyncDefinition", + "name": "1. AWS API Gateway - Latency, Cache", + "description": "AWS API Gateway - Latency, Cache dashboard provides insights into API Gateway performance including API requests, latency, API cache hits, and back-end cache misses.", + "title": "1. AWS API Gateway - Latency, Cache", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "apiname": [ + "*" + ], + "namespace": [ + "aws/apigateway" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelpane-1282e8dc8b362944", + "structure": "{\"height\":1,\"width\":24,\"x\":0,\"y\":0}" + }, + { + "key": "panelpane-07fe4834864daa40", + "structure": "{\"height\":6,\"width\":24,\"x\":0,\"y\":1}" + }, + { + "key": "panelpane-d8cca1fd9e28fa4e", + "structure": "{\"height\":2,\"width\":12,\"x\":0,\"y\":7}" + }, + { + "key": "panelpane-be2d46b2823fbb44", + "structure": "{\"height\":2,\"width\":12,\"x\":12,\"y\":7}" + }, + { + "key": "panelpane-825676c9a42b7844", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":9}" + }, + { + "key": "panelpane-95b93c0ea7c2694f", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":9}" + }, + { + "key": "panelpane-de1fae9b96f50949", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":16}" + }, + { + "key": "panelpane-611d41d29c4b0b46", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":16}" + }, + { + "key": "panelpane-86be2b008a2db942", + "structure": "{\"height\":1,\"width\":12,\"x\":0,\"y\":15}" + }, + { + "key": "panelpane-903472b3b1481b4a", + "structure": "{\"height\":1,\"width\":12,\"x\":12,\"y\":15}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelpane-1282e8dc8b362944", + "title": "API Calls Over Time", + "visualSettings": "{\"text\":{\"backgroundColor\":\"#dfe5e9\"},\"title\":{\"fontSize\":\"20\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "" + }, + { + "id": null, + "key": "panelpane-07fe4834864daa40", + "title": " API Requests (Today, Yesterday, Last Week)", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"lineThickness\":\"3\"},\"axes\":{\"axisY\":{\"title\":\"Requests\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"Today, {{apiname}}\"}},{\"series\":[],\"queries\":[],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\"}},{\"series\":[],\"queries\":[\"B\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"Yesterday, {{apiname}}\"}},{\"series\":[],\"queries\":[\"C\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"Last Week, {{apiname}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Namespace={{namespace}} metric=count Statistic=sum account={{account}} region={{region}} apiname={{apiname}} | sum by apiname, namespace, region, account", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "Namespace={{namespace}} metric=count Statistic=sum account={{account}} region={{region}} apiname={{apiname}} | sum by apiname, namespace, region, account | timeshift 1d", + "queryType": "Metrics", + "queryKey": "B", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "Namespace={{namespace}} metric=count Statistic=sum account={{account}} region={{region}} apiname={{apiname}} | sum by apiname, namespace, region, account | timeshift 7d", + "queryType": "Metrics", + "queryKey": "C", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-d8cca1fd9e28fa4e", + "title": "Latency", + "visualSettings": "{\"text\":{\"backgroundColor\":\"#dfe5e9\",\"alignment\":\"left\",\"fontSize\":16},\"title\":{\"fontSize\":\"20\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Time in between API Gateway receives request from client and returns response to the client" + }, + { + "id": null, + "key": "panelpane-be2d46b2823fbb44", + "title": "‎Integration Latency", + "visualSettings": "{\"text\":{\"backgroundColor\":\"#dfe5e9\",\"fontSize\":16,\"alignment\":\"left\"},\"title\":{\"fontSize\":\"20\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Time in between API Gateway relays request to backend and receives response from backend" + }, + { + "id": null, + "key": "panelpane-825676c9a42b7844", + "title": "Average Latency (ms)", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"lineThickness\":\"3\"},\"axes\":{\"axisY\":{\"title\":\"Millisecond\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{apiname}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Namespace={{namespace}} metric=Latency statistic=Average account={{account}} region={{region}} apiname={{apiname}} | avg by apiname, namespace, region, account", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-95b93c0ea7c2694f", + "title": "Average Integration Latency (ms)", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"lineThickness\":\"3\"},\"axes\":{\"axisY\":{\"title\":\"Millisecond\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{apiname}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Namespace={{namespace}} metric=IntegrationLatency statistic=Average account={{account}} region={{region}} apiname={{apiname}} | avg by apiname, namespace, region, account", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-de1fae9b96f50949", + "title": "Cache Hit Rate", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":3},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Cache Hit Rate\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{apiname}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Namespace={{namespace}} metric=CacheHitCount statistic=Average account={{account}} region={{region}} apiname={{apiname}} | avg by apiname, namespace, region, account | eval _value * 100 ", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-611d41d29c4b0b46", + "title": "Cache Miss Rate", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":3},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Cache Miss Rate\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{apiname}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Namespace={{namespace}} metric=CacheMissCount statistic=Average account={{account}} region={{region}} apiname={{apiname}} | avg by apiname, namespace, region, account | eval _value * 100", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-86be2b008a2db942", + "title": " Requests Served From API Cache (Cache Hits)", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\"},\"text\":{\"fontSize\":24,\"backgroundColor\":\"#dfe5e9\",\"textColor\":\"#222D3B\",\"alignment\":\"center\",\"showTitle\":true,\"format\":\"text\",\"text\":\"\"},\"title\":{\"fontSize\":\"20\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "" + }, + { + "id": null, + "key": "panelpane-903472b3b1481b4a", + "title": "Requests Served From Back-end (Cache Misses)", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\"},\"text\":{\"fontSize\":24,\"backgroundColor\":\"#dfe5e9\",\"textColor\":\"#222D3B\",\"alignment\":\"center\",\"showTitle\":true,\"format\":\"text\",\"text\":\"\"},\"title\":{\"fontSize\":\"20\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "" + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": null, + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": null, + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/apigateway", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "apiname", + "displayName": null, + "defaultValue": null, + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "apiname" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "1. AWS API Gateway - Overview", + "description": "AWS API Gateway - Overview dashboard provides insights into API Gateway performance throughout your infrastructure, including API calls, latency, client and server-side errors, API cache hits, and back-end cache misses.", + "title": "1. AWS API Gateway - Overview", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "namespace": [ + "aws/apigateway" + ], + "region": [ + "*" + ], + "_sumo_domain_name": [ + "aws" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelpane-1282e8dc8b362944", + "structure": "{\"height\":1,\"width\":24,\"x\":0,\"y\":0}" + }, + { + "key": "panelpane-d8cca1fd9e28fa4e", + "structure": "{\"height\":2,\"width\":12,\"x\":0,\"y\":21}" + }, + { + "key": "panelpane-be2d46b2823fbb44", + "structure": "{\"height\":2,\"width\":12,\"x\":12,\"y\":21}" + }, + { + "key": "panelpane-afb5d2309a793847", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":31}" + }, + { + "key": "panelpane-825676c9a42b7844", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":15}" + }, + { + "key": "panelpane-0f271c0fbb72984c", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":31}" + }, + { + "key": "panelpane-aac836daa8753b49", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":38}" + }, + { + "key": "panelpane-3f51a1d2b3563b4c", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":38}" + }, + { + "key": "panelpane-de1fae9b96f50949", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":15}" + }, + { + "key": "panelpane-86be2b008a2db942", + "structure": "{\"height\":1,\"width\":12,\"x\":0,\"y\":37}" + }, + { + "key": "panelpane-903472b3b1481b4a", + "structure": "{\"height\":1,\"width\":12,\"x\":12,\"y\":37}" + }, + { + "key": "panelpane-30914953bcc44b4e", + "structure": "{\"height\":1,\"width\":12,\"x\":0,\"y\":14}" + }, + { + "key": "panelpane-2e8c53a18e9a484c", + "structure": "{\"height\":1,\"width\":12,\"x\":12,\"y\":14}" + }, + { + "key": "panelpane-70bda313b0965946", + "structure": "{\"height\":6,\"width\":6,\"x\":0,\"y\":8}" + }, + { + "key": "panelpane-7a458955b12bd94e", + "structure": "{\"height\":6,\"width\":6,\"x\":6,\"y\":8}" + }, + { + "key": "panelpane-c557c5d28b2c684f", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":8}" + }, + { + "key": "panelpane-51ff6a2cae479944", + "structure": "{\"height\":8,\"width\":12,\"x\":0,\"y\":23}" + }, + { + "key": "panelpane-30c3b615b3da684f", + "structure": "{\"height\":8,\"width\":12,\"x\":12,\"y\":23}" + }, + { + "key": "panelPANE-F43AE7E8952D5A40", + "structure": "{\"height\":7,\"width\":24,\"x\":0,\"y\":1}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelpane-1282e8dc8b362944", + "title": "All API Calls", + "visualSettings": "{\"text\":{\"backgroundColor\":\"#dfe5e9\"},\"title\":{\"fontSize\":\"20\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "" + }, + { + "id": null, + "key": "panelpane-d8cca1fd9e28fa4e", + "title": "Latency", + "visualSettings": "{\"text\":{\"backgroundColor\":\"#dfe5e9\",\"alignment\":\"left\",\"fontSize\":16,\"format\":\"text\"},\"title\":{\"fontSize\":\"20\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Overall Latency in ms" + }, + { + "id": null, + "key": "panelpane-be2d46b2823fbb44", + "title": "‎Integration Latency", + "visualSettings": "{\"text\":{\"backgroundColor\":\"#dfe5e9\",\"fontSize\":16,\"alignment\":\"left\"},\"title\":{\"fontSize\":\"20\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Time in between API Gateway relays request to backend and receives response from backend" + }, + { + "id": null, + "key": "panelpane-afb5d2309a793847", + "title": "Average Latency (ms)", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"lineThickness\":\"3\"},\"axes\":{\"axisY\":{\"title\":\"Millisecond\"}},\"overrides\":[{\"series\":[],\"queries\":[],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\"}},{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{apiname}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Namespace={{namespace}} metric=Latency statistic=Average account={{account}} region={{region}} apiname={{apiname}} | avg by apiname, namespace, region, account", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-825676c9a42b7844", + "title": "5XX Errors", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"lineThickness\":\"3\"},\"axes\":{\"axisY\":{\"title\":\"Sum of 5XX Errors\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{apiname}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Namespace={{namespace}} metric=5XXError Statistic=Sum account={{account}} region={{region}} apiname={{apiname}} | sum by apiname, namespace, region, account", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-0f271c0fbb72984c", + "title": "Average Integration Latency (ms)", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"lineThickness\":\"3\"},\"axes\":{\"axisY\":{\"title\":\"Millisecond\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{apiname}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Namespace={{namespace}} metric=IntegrationLatency statistic=Average account={{account}} region={{region}} apiname={{apiname}} | avg by apiname, namespace, region, account", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-aac836daa8753b49", + "title": "Cache Hit Rate", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":3},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Cache Hit Rate \"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{apiname}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Namespace={{namespace}} metric=CacheHitCount statistic=Average account={{account}} region={{region}} apiname={{apiname}} | avg by apiname, namespace, region, account | eval _value * 100", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-3f51a1d2b3563b4c", + "title": "Cache Miss Rate", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":3},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Cache Miss Rate \"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{apiname}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Namespace={{namespace}} metric=CacheMissCount statistic=Average account={{account}} region={{region}} apiname={{apiname}} | avg by apiname, namespace, region, account | eval _value * 100", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-de1fae9b96f50949", + "title": "4XX Errors", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":3},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Sum of 4XX Errors\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{apiname}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Namespace={{namespace}} metric=4XXError Statistic=Sum account={{account}} region={{region}} apiname={{apiname}} | sum by apiname, namespace, region, account", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-86be2b008a2db942", + "title": " Requests Served From API Cache (Cache Hits)", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\"},\"text\":{\"fontSize\":24,\"backgroundColor\":\"#dfe5e9\",\"textColor\":\"#222D3B\",\"alignment\":\"center\",\"showTitle\":true,\"format\":\"text\",\"text\":\"\"},\"title\":{\"fontSize\":\"20\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "" + }, + { + "id": null, + "key": "panelpane-903472b3b1481b4a", + "title": "Requests Served From Back-end (Cache Misses)", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\"},\"text\":{\"fontSize\":24,\"backgroundColor\":\"#dfe5e9\",\"textColor\":\"#222D3B\",\"alignment\":\"center\",\"showTitle\":true,\"format\":\"text\",\"text\":\"\"},\"title\":{\"fontSize\":\"20\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "" + }, + { + "id": null, + "key": "panelpane-30914953bcc44b4e", + "title": "Client Side Errors", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\"},\"text\":{\"backgroundColor\":\"#dfe5e9\"},\"title\":{\"fontSize\":\"20\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "" + }, + { + "id": null, + "key": "panelpane-2e8c53a18e9a484c", + "title": "Server Side Errors", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\"},\"text\":{\"backgroundColor\":\"#dfe5e9\"},\"title\":{\"fontSize\":\"20\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "" + }, + { + "id": null, + "key": "panelpane-70bda313b0965946", + "title": "API Calls", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Sum\",\"label\":\"Total Calls\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"\",\"hideData\":false,\"rounding\":0,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":false,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false,\"min\":0,\"max\":100,\"showThreshold\":false,\"showThresholdMarker\":false},\"valueFontSize\":20}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Namespace={{namespace}} metric=count statistic=Sum account={{account}} region={{region}} apiname={{apiname}} | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-7a458955b12bd94e", + "title": "Unique API Calls", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Maximum\",\"label\":\"Unique Calls\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"\",\"hideData\":false,\"rounding\":0,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":false,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false,\"min\":0,\"max\":100,\"showThreshold\":false,\"showThresholdMarker\":false},\"valueFontSize\":20}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Namespace={{namespace}} metric=count statistic=Sum account={{account}} region={{region}} apiname={{apiname}} | sum by apiname, namespace, region, account | count", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-c557c5d28b2c684f", + "title": "API Calls by apiname", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"distribution\",\"aggregationType\":\"sum\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"Calls\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Namespace={{namespace}} metric=count statistic=Sum account={{account}} region={{region}} apiname={{apiname}} | sum by apiname | eval round(_value)", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-51ff6a2cae479944", + "title": "Average Latency (ms)", + "visualSettings": "{\"general\":{\"mode\":\"honeyComb\",\"type\":\"honeyComb\",\"displayType\":\"default\"},\"title\":{\"fontSize\":16},\"honeyComb\":{\"thresholds\":[{\"from\":0,\"to\":500,\"color\":\"#75bf00\"},{\"from\":500,\"to\":1000,\"color\":\"#f6c851\"},{\"from\":1000,\"to\":null,\"color\":\"#f36644\"}],\"shape\":\"hexagon\",\"groupBy\":[],\"aggregationType\":\"avg\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Namespace={{namespace}} metric=Latency statistic=Average account={{account}} region={{region}} apiname={{apiname}} | avg by apiname, namespace, region, account", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-30c3b615b3da684f", + "title": "Average Integration Latency (ms)", + "visualSettings": "{\"general\":{\"mode\":\"honeyComb\",\"type\":\"honeyComb\",\"displayType\":\"default\"},\"title\":{\"fontSize\":16},\"honeyComb\":{\"thresholds\":[{\"from\":0,\"to\":500,\"color\":\"#75bf00\"},{\"from\":500,\"to\":1000,\"color\":\"#f6c851\"},{\"from\":1000,\"to\":null,\"color\":\"#f36644\"}],\"shape\":\"hexagon\",\"groupBy\":[],\"aggregationType\":\"avg\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Namespace={{namespace}} metric=IntegrationLatency statistic=Average account={{account}} region={{region}} apiname={{apiname}} | avg by apiname, namespace, region, account", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-F43AE7E8952D5A40", + "title": " API Requests (Today, Yesterday, Last Week)", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"Today\"}},{\"series\":[],\"queries\":[\"B\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"Yesterday\"}},{\"series\":[],\"queries\":[\"C\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"Last Week\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Namespace={{namespace}} metric=count Statistic=sum account={{account}} region={{region}} apiname={{apiname}} | sum by account, region, namespace", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "Namespace={{namespace}} metric=count Statistic=sum account={{account}} region={{region}} apiname={{apiname}} | sum by account, region, namespace | timeshift 1d", + "queryType": "Metrics", + "queryKey": "B", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "Namespace={{namespace}} metric=count Statistic=sum account={{account}} region={{region}} apiname={{apiname}} | sum by account, region, namespace | timeshift 7d", + "queryType": "Metrics", + "queryKey": "C", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": null, + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": null, + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/apigateway", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "apiname", + "displayName": null, + "defaultValue": null, + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "apiname" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "2. AWS API Gateway - 4XX and 5XX Errors", + "description": "AWS API Gateway - 4xx and 5xx Errors dashboard provides insights into API Gateway HTTP 4xx and 5xx code errors throughout your infrastructure, including API requests, client-side errors, and server-side errors.", + "title": "2. AWS API Gateway - 4XX and 5XX Errors", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "apiname": [ + "*" + ], + "namespace": [ + "aws/apigateway" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelpane-4d3d7212b5a8484a", + "structure": "{\"height\":7,\"width\":24,\"x\":0,\"y\":9}" + }, + { + "key": "panelpane-ddc0c4fd966e4844", + "structure": "{\"height\":7,\"width\":24,\"x\":0,\"y\":17}" + }, + { + "key": "panelpane-ecbd97eab891e846", + "structure": "{\"height\":7,\"width\":24,\"x\":0,\"y\":1}" + }, + { + "key": "panelpane-4b69798bbe22784a", + "structure": "{\"height\":1,\"width\":24,\"x\":0,\"y\":0}" + }, + { + "key": "panelpane-62f5162ba859eb45", + "structure": "{\"height\":1,\"width\":24,\"x\":0,\"y\":8}" + }, + { + "key": "panelpane-ecd366908889b943", + "structure": "{\"height\":1,\"width\":24,\"x\":0,\"y\":16}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelpane-4d3d7212b5a8484a", + "title": "4XX Errors", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":3},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Sum of 4XX Errors\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{apiname}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Namespace={{namespace}} metric=4XXError Statistic=Sum account={{account}} region={{region}} apiname={{apiname}} | sum by apiname, namespace, region, account", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-ddc0c4fd966e4844", + "title": "5XX Errors", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":3},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Sum of 5XX Errors\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{apiname}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Namespace={{namespace}} metric=5XXError Statistic=Sum account={{account}} region={{region}} apiname={{apiname}} | sum by apiname, namespace, region, account", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-ecbd97eab891e846", + "title": "API Requests (Today, Yesterday, Last Week)", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":3},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Requests\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"Today, {{apiname}}\"}},{\"series\":[],\"queries\":[\"B\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"Yesterday, {{apiname}}\"}},{\"series\":[],\"queries\":[\"C\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"Last Week, {{apiname}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Namespace={{namespace}} metric=count Statistic=Sum account={{account}} region={{region}} apiname={{apiname}} | sum by apiname, namespace, region, account", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "Namespace={{namespace}} metric=count Statistic=Sum account={{account}} region={{region}} apiname={{apiname}} | sum by apiname, namespace, region, account | timeshift 1d", + "queryType": "Metrics", + "queryKey": "B", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "Namespace={{namespace}} metric=count Statistic=Sum account={{account}} region={{region}} apiname={{apiname}} | sum by apiname, namespace, region, account | timeshift 7d", + "queryType": "Metrics", + "queryKey": "C", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-4b69798bbe22784a", + "title": "All API Calls", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\"},\"text\":{\"fontSize\":24,\"backgroundColor\":\"#dfe5e9\",\"textColor\":\"#222D3B\",\"alignment\":\"center\",\"showTitle\":true,\"format\":\"text\",\"text\":\"\"},\"title\":{\"fontSize\":\"20\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "" + }, + { + "id": null, + "key": "panelpane-62f5162ba859eb45", + "title": "Client Side Errors", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\"},\"text\":{\"fontSize\":24,\"backgroundColor\":\"#dfe5e9\",\"textColor\":\"#222D3B\",\"alignment\":\"center\",\"showTitle\":true,\"format\":\"text\",\"text\":\"\"},\"title\":{\"fontSize\":\"20\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "" + }, + { + "id": null, + "key": "panelpane-ecd366908889b943", + "title": "Server Side Errors", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\"},\"text\":{\"fontSize\":24,\"backgroundColor\":\"#dfe5e9\",\"textColor\":\"#222D3B\",\"alignment\":\"center\",\"showTitle\":true,\"format\":\"text\",\"text\":\"\"},\"title\":{\"fontSize\":\"20\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "" + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": null, + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": null, + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/apigateway", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "apiname", + "displayName": null, + "defaultValue": null, + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "apiname" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "2. AWS API Gateway - Audit Events", + "description": "AWS API Gateway - Audit Events dashboard provides detailed audit insights into API Gateway events by various dimensions including event names, trends, regions, user agents, and recipient account IDs.", + "title": "2. AWS API Gateway - Audit Events", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "namespace": [ + "aws/apigateway" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelpane-d39a82d0b687ab49", + "structure": "{\"height\":7,\"width\":12,\"x\":12,\"y\":27}" + }, + { + "key": "panelpane-78017f49a1d96a4a", + "structure": "{\"height\":7,\"width\":6,\"x\":6,\"y\":27}" + }, + { + "key": "panelPANE-C60FE45FAF802B4D", + "structure": "{\"height\":8,\"width\":12,\"x\":12,\"y\":0}" + }, + { + "key": "panelPANE-54D6935CA0D19846", + "structure": "{\"height\":8,\"width\":12,\"x\":0,\"y\":0}" + }, + { + "key": "panelPANE-D3C4BB28A83C9947", + "structure": "{\"height\":6,\"width\":6,\"x\":0,\"y\":8}" + }, + { + "key": "panelPANE-A9432A4D87BED943", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":8}" + }, + { + "key": "panelPANE-79C1069AAE9C2948", + "structure": "{\"height\":6,\"width\":6,\"x\":6,\"y\":8}" + }, + { + "key": "panelPANE-8D29F0E780F36846", + "structure": "{\"height\":6,\"width\":6,\"x\":0,\"y\":14}" + }, + { + "key": "panelPANE-2EA5D39A9A67D846", + "structure": "{\"height\":6,\"width\":18,\"x\":6,\"y\":14}" + }, + { + "key": "panelPANE-A839F6B38A2CD840", + "structure": "{\"height\":7,\"width\":6,\"x\":0,\"y\":20}" + }, + { + "key": "panelPANE-FBDDCA8195930A44", + "structure": "{\"height\":7,\"width\":18,\"x\":6,\"y\":20}" + }, + { + "key": "panelPANE-A9420681BB19294B", + "structure": "{\"height\":7,\"width\":6,\"x\":0,\"y\":27}" + }, + { + "key": "panelPANE-E9024AE2A1BFCB4F", + "structure": "{\"height\":8,\"width\":24,\"x\":0,\"y\":34}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelpane-d39a82d0b687ab49", + "title": "Events Trend by Event Name", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"column\",\"displayType\":\"stacked\",\"fillOpacity\":1,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Events\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" eventName account={{account}} Namespace={{namespace}} region={{region}}\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\"\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| timeslice 15m\n| count as eventCount by _timeslice, event_name\n| transpose row _timeslice column event_name", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-78017f49a1d96a4a", + "title": "Top User Agents", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"pie\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"fillOpacity\":1,\"startAngle\":270,\"innerRadius\":\"50%\",\"maxNumOfSlices\":10,\"mode\":\"distribution\"},\"legend\":{\"enabled\":false},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" userAgent account={{account}} Namespace={{namespace}} region={{region}}\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\"\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| count as eventCount by user_agent\n| sort by eventCount, user_agent asc", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-C60FE45FAF802B4D", + "title": "Failure Activity Location", + "visualSettings": "{\"general\":{\"mode\":\"map\",\"type\":\"map\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#ED3CPE\",\"outlierBandFillOpacity\":0.15,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" errorCode account={{account}} Namespace={{namespace}} region={{region}} sourceIPAddress\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\" and !(src_ip matches \"*.amazonaws.com\") and !isEmpty(errorCode)\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| count by src_ip\n| lookup latitude, longitude, country_code, country_name, region, city, postal_code from geo://location on ip = src_ip\n| where !isnull(latitude)", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-54D6935CA0D19846", + "title": "Successful Activity Location", + "visualSettings": "{\"general\":{\"mode\":\"map\",\"type\":\"map\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#ED3CPE\",\"outlierBandFillOpacity\":0.15,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" !errorCode account={{account}} Namespace={{namespace}} region={{region}} sourceIPAddress\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\" and !(src_ip matches \"*.amazonaws.com\") and isEmpty(errorCode)\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| count by src_ip\n| lookup latitude, longitude, country_code, country_name, region, city, postal_code from geo://location on ip = src_ip\n| where !isnull(latitude)", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-D3C4BB28A83C9947", + "title": "Event Status", + "visualSettings": "{\"general\":{\"mode\":\"distribution\",\"type\":\"pie\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"fillOpacity\":1,\"startAngle\":270,\"innerRadius\":\"50%\",\"maxNumOfSlices\":10},\"title\":{\"fontSize\":16},\"legend\":{\"enabled\":false},\"overrides\":[{\"series\":[\"Success\"],\"queries\":[],\"userProvidedChartType\":false,\"properties\":{\"color\":\"#75bf00\",\"type\":\"pie\"}},{\"series\":[\"Failure\"],\"queries\":[],\"userProvidedChartType\":false,\"properties\":{\"color\":\"#f36644\",\"type\":\"pie\"}},{\"series\":[],\"queries\":[],\"userProvidedChartType\":false,\"properties\":{\"type\":\"pie\"}}],\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" account={{account}} Namespace={{namespace}} region={{region}}\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\"\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| count as eventCount by eventStatus\n| sort by eventCount, eventStatus asc", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-A9432A4D87BED943", + "title": "Event Status Trend", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"column\",\"displayType\":\"stacked\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"fillOpacity\":1,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[{\"series\":[\"Failure\"],\"queries\":[],\"userProvidedChartType\":false,\"properties\":{\"color\":\"#f36644\",\"type\":\"column\"}},{\"series\":[\"Success\"],\"queries\":[],\"userProvidedChartType\":false,\"properties\":{\"color\":\"#75bf00\",\"type\":\"column\"}}],\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" account={{account}} Namespace={{namespace}} region={{region}}\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\"\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(userName), user, userName) as user\n| timeslice 15m\n| count by _timeslice, eventStatus\n| fillmissing timeslice(15m), values (\"Success\", \"Failure\") in eventStatus\n| transpose row _timeslice column eventStatus", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-79C1069AAE9C2948", + "title": "Top Error Codes", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"distribution\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" errorCode account={{account}} Namespace={{namespace}} region={{region}}\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\" and !isEmpty(errorCode)\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(userName), user, userName) as user\n| count as eventCount by errorCode \n| top 10 errorCode by eventCount, errorCode asc", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-8D29F0E780F36846", + "title": "Failed Events", + "visualSettings": "{\"general\":{\"mode\":\"distribution\",\"type\":\"pie\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"fillOpacity\":1,\"startAngle\":270,\"innerRadius\":\"50%\",\"maxNumOfSlices\":10},\"title\":{\"fontSize\":16},\"legend\":{\"enabled\":false},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" errorCode account={{account}} Namespace={{namespace}} region={{region}}\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\" and !isEmpty(errorCode)\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| count as eventCount by event_name\n| sort by eventCount, event_name asc", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-2EA5D39A9A67D846", + "title": "Failed Event Details", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"timeSeries\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" errorCode account={{account}} Namespace={{namespace}} region={{region}}\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\" and !isEmpty(errorCode)\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop \n| json field=responseElements \"name\", \"Message\" as ApiName, responseMessage nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| if (isEmpty(errorMessage), responseMessage, errorMessage) as errorMessage\n| timeslice 1s\n| count as eventCount by _timeslice, event_name, errorCode, errorMessage, Region, src_ip, accountId, user, type, requestID, user_agent\n| sort by _timeslice\n| limit 100", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-A839F6B38A2CD840", + "title": "Successful Events", + "visualSettings": "{\"general\":{\"mode\":\"distribution\",\"type\":\"pie\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"fillOpacity\":1,\"startAngle\":270,\"innerRadius\":\"50%\",\"maxNumOfSlices\":10},\"title\":{\"fontSize\":16},\"legend\":{\"enabled\":false},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" !errorCode account={{account}} Namespace={{namespace}} region={{region}}\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\"\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| where eventStatus = \"Success\"\n| count as eventCount by event_name\n| sort by eventCount, event_name asc", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-FBDDCA8195930A44", + "title": "Successful Event Details", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"timeSeries\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" !errorCode account={{account}} Namespace={{namespace}} region={{region}}\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\"\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| where eventStatus = \"Success\"\n| timeslice 1s\n| count as eventCount by _timeslice, event_name, Region, src_ip, accountId, user, type, requestID, user_agent, ApiName\n| sort by _timeslice\n| limit 100", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-A9420681BB19294B", + "title": "Top Users", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"distribution\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" account={{account}} Namespace={{namespace}} region={{region}}\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\"\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| count as eventCount by type, user\n| topk(10, eventCount) by type | fields -_rank", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-E9024AE2A1BFCB4F", + "title": "Threat Table based on Caller IP Address", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"distribution\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "\"\\\"eventSource\\\":\\\"apigateway.amazonaws.com\\\"\" account={{account}} Namespace={{namespace}} region={{region}}\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"responseElements\", \"sourceIPAddress\", \"errorCode\", \"errorMessage\", \"requestID\" as event_name, event_source, Region, user_agent, accountId1, userIdentity, requestParameters, responseElements, src_ip, errorCode, errorMessage, requestID nodrop\n| where event_source = \"apigateway.amazonaws.com\"\n| json field=userIdentity \"accountId\", \"arn\", \"userName\", \"type\" as accountId2, arn, username, type nodrop | parse field=arn \":assumed-role/*\" as user nodrop | parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"basePath\", \"domainName\" as basePath, domainName nodrop | json field=responseElements \"name\" as ApiName nodrop // CreateRestApi, CreateApiKey, CreateUsagePlan, CreateUsagePlanKey, CreateUsagePlanKey, ImportApi, ImportRestApi, UpdateRestApi, UpdateUsagePlan provides ApiName\n| if (!isEmpty(accountId1), accountId1, accountId2) as accountId\n| if (isEmpty(errorCode), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| count by src_ip, event_name, user, user_agent\n| lookup type, actor, raw, threatlevel as malicious_confidence from sumo://threat/cs on threat=src_ip \n| json field=raw \"labels[*].name\" as label_name \n| replace(label_name, \"\\\\/\",\"->\") as label_name\n| replace(label_name, \"\\\"\",\" \") as label_name\n| where type=\"ip_address\" and malicious_confidence = \"high\"\n| if (isEmpty(actor), \"Unassigned\", actor) as Actor\n| sort by _count\n| fields src_ip, event_name, user, user_agent, type, actor, malicious_confidence", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": null, + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": null, + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/apigateway", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "3. AWS API Gateway - Enhanced Monitoring", + "description": "AWS API Gateway - Enhanced Monitoring dashboard provides detailed insights into API Gateway performance throughout your infrastructure, including the number and types of API calls, API resources, cache hits and misses, latency averages, and errors by HTTP method.", + "title": "3. AWS API Gateway - Enhanced Monitoring", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "apiname": [ + "*" + ], + "namespace": [ + "aws/apigateway" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelpane-bf711447aeb87a4d", + "structure": "{\"height\":6,\"width\":24,\"x\":0,\"y\":9}" + }, + { + "key": "panelpane-0c6ca348a22a684a", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":15}" + }, + { + "key": "panelpane-fcf2a359aca4f947", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":21}" + }, + { + "key": "panelpane-1bd728408f442a49", + "structure": "{\"height\":6,\"width\":5,\"x\":0,\"y\":3}" + }, + { + "key": "panelpane-134c2b108813b846", + "structure": "{\"height\":6,\"width\":5,\"x\":5,\"y\":3}" + }, + { + "key": "panelpane-8623b689ab09684a", + "structure": "{\"height\":6,\"width\":5,\"x\":10,\"y\":3}" + }, + { + "key": "panelpane-2c931e93b0a25940", + "structure": "{\"height\":6,\"width\":9,\"x\":15,\"y\":3}" + }, + { + "key": "panelpane-6052fefb99524948", + "structure": "{\"height\":7,\"width\":24,\"x\":0,\"y\":27}" + }, + { + "key": "panelpane-b7fcf1e9a9428b41", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":15}" + }, + { + "key": "panelpane-3bd1f319951a1949", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":21}" + }, + { + "key": "panelpane-4f8a91c58c9d3b4e", + "structure": "{\"height\":3,\"width\":24,\"x\":0,\"y\":0}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelpane-bf711447aeb87a4d", + "title": "API Calls By HTTP Method", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"column\",\"displayType\":\"stacked\",\"fillOpacity\":1,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Requests\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"column\",\"name\":\"{{Method}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Namespace={{namespace}} metric=Count Statistic=Sum account={{account}} region={{region}} apiname={{apiname}} stage={{stage}} method={{method}} resource={{resource}} | sum by method", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-0c6ca348a22a684a", + "title": "4XX Errors by HTTP Method", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"column\",\"displayType\":\"stacked\",\"fillOpacity\":1,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Sum of 4XX Errors\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"column\",\"name\":\"{{method}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Namespace={{namespace}} metric=4XXError Statistic=Sum account={{account}} region={{region}} apiname={{apiname}} stage={{stage}} method={{method}} resource={{resource}} | sum by method", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-fcf2a359aca4f947", + "title": "5XX Errors By HTTP Method", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"column\",\"displayType\":\"stacked\",\"fillOpacity\":1,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Sum of 5XX Errors\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"column\",\"name\":\"{{method}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Namespace={{namespace}} metric=5XXError Statistic=Sum account={{account}} region={{region}} apiname={{apiname}} stage={{stage}} method={{method}} resource={{resource}} | sum by method", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-1bd728408f442a49", + "title": "API Calls", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Sum\",\"label\":\"Total Calls\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"\",\"hideData\":false,\"rounding\":0,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":false,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false,\"min\":0,\"max\":100,\"showThreshold\":false,\"showThresholdMarker\":false}}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Namespace={{namespace}} metric=count statistic=Sum account={{account}} region={{region}} apiname={{apiname}} stage={{stage}} method={{method}} resource={{resource}} | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-134c2b108813b846", + "title": "Unique API Calls", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Average\",\"label\":\"Unique Calls\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"\",\"hideData\":false,\"rounding\":0,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":false,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false,\"min\":0,\"max\":100,\"showThreshold\":false,\"showThresholdMarker\":false}}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Namespace={{namespace}} metric=count statistic=Sum account={{account}} region={{region}} apiname={{apiname}} stage={{stage}} method={{method}} resource={{resource}} | sum by apiname, namespace, region, account, method | count", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-8623b689ab09684a", + "title": "API Resources", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Average\",\"label\":\"Resource\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"\",\"hideData\":false,\"rounding\":0,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":false,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false,\"min\":0,\"max\":100,\"showThreshold\":false,\"showThresholdMarker\":false}}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Namespace={{namespace}} metric=count statistic=Sum account={{account}} region={{region}} apiname={{apiname}} stage={{stage}} method={{method}} resource={{resource}} | sum by apiname, namespace, region, account, resource | count", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-2c931e93b0a25940", + "title": "API Call Breakdown", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"distribution\",\"aggregationType\":\"sum\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"Calls\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Namespace={{namespace}} metric=count statistic=Sum account={{account}} region={{region}} apiname={{apiname}} stage={{stage}} method={{method}} resource={{resource}} | sum by apiname, method, resource | eval round(_value)", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-6052fefb99524948", + "title": "Cache Hits and Misses", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"line\",\"displayType\":\"default\",\"markerSize\":\"0\",\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":3,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Rate\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"Cache Hits, apiname={{apiname}} \"}},{\"series\":[],\"queries\":[\"B\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"Cache Miss, apiname={{apiname}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Namespace={{namespace}} metric=CacheHitCount statistic=Average account={{account}} region={{region}} apiname={{apiname}} stage={{stage}} method={{method}} resource={{resource}} | avg by apiname, namespace, region, account | eval _value * 100", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "Namespace={{namespace}} metric=CacheMissCount statistic=Average account={{account}} region={{region}} apiname={{apiname}} stage={{stage}} method={{method}} resource={{resource}} | avg by apiname, namespace, region, account | eval _value * 100", + "queryType": "Metrics", + "queryKey": "B", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-b7fcf1e9a9428b41", + "title": "Average Latency (ms)", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":3},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Milliseconds\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{apiname}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Namespace={{namespace}} metric=Latency statistic=Average account={{account}} region={{region}} apiname={{apiname}} stage={{stage}} method={{method}} resource={{resource}} | avg by apiname, namespace, region, account", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-3bd1f319951a1949", + "title": "Average Integration Latency (ms)", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":3},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Milliseconds\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{apiname}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Namespace={{namespace}} metric=IntegrationLatency statistic=Average account={{account}} region={{region}} apiname={{apiname}} stage={{stage}} method={{method}} resource={{resource}} | avg by apiname, namespace, region, account", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-4f8a91c58c9d3b4e", + "title": "Note", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\"},\"text\":{\"alignment\":\"left\",\"fontSize\":16,\"backgroundColor\":\"#dfe5e9\"},\"title\":{\"fontSize\":\"20\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "This dashboard works on detailed CloudWatch metrics which needs to be explicitly enabled. You can do this in the console by selecting \"Enable CloudWatch Metrics\" under a stage Settings tab. Alternatively, you can call the update-stage AWS CLI command to update the metricsEnabled property to true." + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": null, + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": null, + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/apigateway", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "apiname", + "displayName": null, + "defaultValue": null, + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "apiname" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "stage", + "displayName": null, + "defaultValue": null, + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}} apiname={{apiname}}", + "key": "stage" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "method", + "displayName": null, + "defaultValue": null, + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}} apiname={{apiname}} stage={{stage}}", + "key": "method" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "resource", + "displayName": null, + "defaultValue": null, + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}} apiname={{apiname}}", + "key": "resource" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + } + ], + "coloringRules": [] + } + ] +} \ No newline at end of file diff --git a/aws-observability-terraform/examples/aws-observability/json/Classic-lb-App.json b/aws-observability-terraform/examples/aws-observability/json/Classic-lb-App.json new file mode 100644 index 00000000..9cf53585 --- /dev/null +++ b/aws-observability-terraform/examples/aws-observability/json/Classic-lb-App.json @@ -0,0 +1,3039 @@ +{ + "type": "FolderSyncDefinition", + "name": "AWS Classic Load Balancer", + "description": "The Sumo Logic App for AWS Observability Classic Load Balancer is a unified logs and metrics (ULM) App that gives you visibility into the health of your Classic Load Balancer. Use the pre-configured dashboards to understand the latency, request and host status, threat intel, and HTTP backend codes by availability zone.", + "children": [ + { + "type": "DashboardV2SyncDefinition", + "name": "1. AWS Classic Load Balancer - Overview", + "description": "See the overview of Classic load balancer including the requests, healthy and unhealthy host count, backend response time, and active connections.", + "title": "1. AWS Classic Load Balancer - Overview", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "namespace": [ + "aws/elb" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelpane-1b6c3f98bd2fa94a", + "structure": "{\"height\":5,\"width\":4,\"x\":16,\"y\":12}" + }, + { + "key": "panelpane-b28e428595aa7841", + "structure": "{\"height\":5,\"width\":4,\"x\":20,\"y\":12}" + }, + { + "key": "panelpane-3c5686918c144a48", + "structure": "{\"height\":5,\"width\":4,\"x\":12,\"y\":12}" + }, + { + "key": "panelpane-01a4cebc9d796a44", + "structure": "{\"height\":5,\"width\":4,\"x\":0,\"y\":12}" + }, + { + "key": "panelpane-5d596c23a60d9b43", + "structure": "{\"height\":5,\"width\":4,\"x\":4,\"y\":12}" + }, + { + "key": "panelpane-5711200884094842", + "structure": "{\"height\":5,\"width\":4,\"x\":8,\"y\":12}" + }, + { + "key": "panelpane-3919c994a29d9b4a", + "structure": "{\"height\":6,\"width\":24,\"x\":0,\"y\":36}" + }, + { + "key": "panelpane-ed2772e08225f840", + "structure": "{\"height\":7,\"width\":24,\"x\":0,\"y\":17}" + }, + { + "key": "panelpane-97c80ce1b96ed948", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":24}" + }, + { + "key": "panelPANE-84EA9744A2C6BB47", + "structure": "{\"height\":12,\"width\":12,\"x\":0,\"y\":0}" + }, + { + "key": "panelPANE-AEBA84C2BE464B40", + "structure": "{\"height\":6,\"width\":6,\"x\":12,\"y\":0}" + }, + { + "key": "panelPANE-BFCE029B9E625B46", + "structure": "{\"height\":6,\"width\":6,\"x\":12,\"y\":6}" + }, + { + "key": "panelPANE-C44F0671A5AFEA41", + "structure": "{\"height\":6,\"width\":6,\"x\":18,\"y\":6}" + }, + { + "key": "panel4A7F28558036BA4D", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":24}" + }, + { + "key": "panelPANE-5AE57A6E80107B44", + "structure": "{\"height\":6,\"width\":6,\"x\":18,\"y\":0}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelpane-1b6c3f98bd2fa94a", + "title": "Healthy Hosts", + "visualSettings": "{\"general\":{\"type\":\"svp\"},\"svp\":{\"option\":\"Latest\",\"valueFontSize\":24,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"labelFontSize\":16,\"label\":\"Hosts\",\"rounding\":0,\"sparkline\":{\"show\":true,\"color\":\"\"}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancername={{loadbalancername}} metric=HealthyHostCount Statistic=Average | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-b28e428595aa7841", + "title": "Unhealthy Hosts", + "visualSettings": "{\"general\":{\"type\":\"svp\"},\"svp\":{\"option\":\"Latest\",\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"label\":\"Hosts\",\"valueFontSize\":24,\"labelFontSize\":16,\"sparkline\":{\"show\":true,\"color\":\"\"},\"rounding\":0},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancername={{loadbalancername}} metric=UnHealthyHostCount Statistic=Average | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-3c5686918c144a48", + "title": "Backend Connection Errors", + "visualSettings": "{\"general\":{\"type\":\"svp\"},\"svp\":{\"option\":\"Sum\",\"label\":\"Errors\",\"thresholds\":[{\"from\":0,\"to\":10,\"color\":\"#527b01\"},{\"from\":10,\"to\":20,\"color\":\"#b18209\"},{\"from\":20,\"to\":null,\"color\":\"#b63010\"}],\"valueFontSize\":24,\"labelFontSize\":16,\"noDataString\":\"0\",\"rounding\":0,\"sparkline\":{\"show\":true,\"color\":\"\"}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancername={{loadbalancername}} metric=BackendConnectionErrors Statistic=Sum | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-01a4cebc9d796a44", + "title": "Request Count", + "visualSettings": "{\"general\":{\"type\":\"svp\"},\"svp\":{\"option\":\"Sum\",\"label\":\"Requests\",\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"valueFontSize\":24,\"labelFontSize\":16,\"noDataString\":\"0\",\"sparkline\":{\"show\":true,\"color\":\"\"},\"rounding\":0},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancername={{loadbalancername}} metric=RequestCount Statistic=Sum | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-5d596c23a60d9b43", + "title": "Surge Queue Length", + "visualSettings": "{\"general\":{\"type\":\"svp\"},\"svp\":{\"option\":\"Sum\",\"label\":\"Surge Queue Length\",\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"valueFontSize\":24,\"labelFontSize\":16,\"noDataString\":\"0\",\"sparkline\":{\"show\":true,\"color\":\"\"},\"rounding\":0},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancername={{loadbalancername}} metric=SurgeQueueLength Statistic=Sum | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-5711200884094842", + "title": "Spillover Count", + "visualSettings": "{\"general\":{\"type\":\"svp\"},\"svp\":{\"option\":\"Sum\",\"label\":\"Spillover Count\",\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"valueFontSize\":24,\"labelFontSize\":16,\"noDataString\":\"0\",\"sparkline\":{\"show\":true,\"color\":\"\"},\"rounding\":0},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancername={{loadbalancername}} metric=SpilloverCount Statistic=Sum | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-3919c994a29d9b4a", + "title": "Overall Healthy vs Unhealthy Host Count", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"axes\":{\"axisY\":{\"title\":\"Host Count\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"Healthy Host - {{loadbalancername}}\"}},{\"series\":[],\"queries\":[\"B\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"UnHealthy Host - {{loadbalancername}}\"}}],\"color\":{\"family\":\"scheme7\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancername={{loadbalancername}} metric=HealthyHostCount Statistic=Average | avg by account, region, namespace, loadbalancername", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + }, + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancername={{loadbalancername}} metric=UnHealthyHostCount Statistic=Average | avg by account, region, namespace, loadbalancername", + "queryType": "Metrics", + "queryKey": "B", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-ed2772e08225f840", + "title": "Requests Served by Load Balancer", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"column\",\"displayType\":\"stacked\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"fillOpacity\":1,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Count\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"column\",\"name\":\"{{loadbalancername}}\"}}],\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancername={{loadbalancername}} metric=RequestCount Statistic=Sum | sum by account, region, namespace, loadbalancername", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-97c80ce1b96ed948", + "title": "4XX by Load Balancer", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#ED3CPE\",\"outlierBandFillOpacity\":0.15,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":3},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Count\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{loadbalancername}}\"}}],\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancername={{loadbalancername}} metric=HTTPCode_ELB_4XX Statistic=Sum | sum by account, region, namespace, loadbalancername", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-84EA9744A2C6BB47", + "title": "Request Locations", + "visualSettings": "{\"general\":{\"mode\":\"map\",\"type\":\"map\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#ED3CPE\",\"outlierBandFillOpacity\":0.15,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, Client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| parse field=Client \"*:*\" as ClientIP, ClientPort nodrop \n| count by ClientIP\n| lookup latitude, longitude, country_code, country_name, region, city, postal_code from geo://location on ip = ClientIP\n| sum(_count) by latitude, longitude, country_code, country_name, region, city, postal_code\n| where !isnull(latitude)", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-AEBA84C2BE464B40", + "title": "Load Balancer Latency (ms)", + "visualSettings": "{\"general\":{\"mode\":\"honeyComb\",\"type\":\"honeyComb\",\"displayType\":\"default\"},\"title\":{\"fontSize\":16},\"honeyComb\":{\"thresholds\":[{\"from\":0,\"to\":1001,\"color\":\"#75bf00\"},{\"from\":1001,\"to\":3001,\"color\":\"#f6c851\"},{\"from\":3001,\"to\":null,\"color\":\"#f36644\"}],\"shape\":\"hexagon\",\"groupBy\":[],\"aggregationType\":\"avg\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancername={{loadbalancername}} metric=Latency Statistic=Average | eval(_value*1000) | avg by account, region, namespace, loadbalancername", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-BFCE029B9E625B46", + "title": "5xx Error Codes by Load Balancer", + "visualSettings": "{\"general\":{\"mode\":\"honeyComb\",\"type\":\"honeyComb\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"honeyComb\":{\"thresholds\":[{\"from\":0,\"to\":5,\"color\":\"#75bf00\"},{\"from\":5,\"to\":50,\"color\":\"#f6c851\"},{\"from\":50,\"to\":null,\"color\":\"#f36644\"}],\"shape\":\"hexagon\",\"groupBy\":[],\"aggregationType\":\"avg\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancername={{loadbalancername}} metric=HTTPCode_ELB_5XX Statistic=Sum | sum by account, region, namespace, loadbalancername", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-C44F0671A5AFEA41", + "title": "4xx Error Codes by Load Balancer", + "visualSettings": "{\"general\":{\"mode\":\"honeyComb\",\"type\":\"honeyComb\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"honeyComb\":{\"thresholds\":[{\"from\":0,\"to\":10,\"color\":\"#75bf00\"},{\"from\":10,\"to\":50,\"color\":\"#f6c851\"},{\"from\":50,\"to\":null,\"color\":\"#f36644\"}],\"shape\":\"hexagon\",\"groupBy\":[],\"aggregationType\":\"avg\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancername={{loadbalancername}} metric=HTTPCode_ELB_4XX Statistic=Sum | sum by account, region, namespace, loadbalancername", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel4A7F28558036BA4D", + "title": "5XX by Load Balancer", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#ED3CPE\",\"outlierBandFillOpacity\":0.15,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":3},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Count\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{loadbalancername}}\"}}],\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancername={{loadbalancername}} metric=HTTPCode_ELB_5XX Statistic=Sum | sum by account, region, namespace, loadbalancername", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-5AE57A6E80107B44", + "title": "Threat Intel Count", + "visualSettings": "{\"general\":{\"mode\":\"honeyComb\",\"type\":\"honeyComb\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"honeyComb\":{\"thresholds\":[{\"from\":0,\"to\":1,\"color\":\"#8ecc1b\"},{\"from\":1,\"to\":5,\"color\":\"#f6c851\"},{\"from\":5,\"to\":null,\"color\":\"#f36644\"}],\"shape\":\"hexagon\",\"groupBy\":[],\"aggregationType\":\"avg\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| parse field=request \"* *://*:*/* HTTP\" as method, protocol, domain, server_port, path nodrop\n| parse field=client \"*:*\" as ClientIP, Cport nodrop\n| parse field=backend \"*:*\" as BackendIP, Backend_port nodrop\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| parse regex \"(?\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})\" multi\n| where ClientIp != \"0.0.0.0\" and ClientIp != \"127.0.0.1\"\n| timeslice 5m\n| count as ip_count by ClientIp, loadbalancername, account, region, namespace\n| lookup type, actor, raw, threatlevel as MaliciousConfidence from sumo://threat/cs on threat=ClientIp \n| json field=raw \"labels[*].name\" as LabelName \n| replace(LabelName, \"\\\\/\",\"->\") as LabelName\n| replace(LabelName, \"\\\"\",\" \") as LabelName\n| where type=\"ip_address\" and MaliciousConfidence=\"high\"\n| if (isEmpty(actor), \"Unassigned\", actor) as Actor\n| sum (ip_count) as ThreatCount by loadbalancername, account, region, namespace\n| sort by ThreatCount", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "namespace", + "displayName": "namespace", + "defaultValue": "aws/elb", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace=aws/elb", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "loadbalancername", + "displayName": "loadbalancername", + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "loadbalancername" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "1. AWS Classic Load Balancer - Response Analysis", + "description": "See the details of the Classic Load Balancer HTTP codes 3XX, 4XX, and 5XX by availability zone, and load balancer.", + "title": "1. AWS Classic Load Balancer - Response Analysis", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "loadbalancername": [ + "*" + ], + "namespace": [ + "aws/elb" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelPANE-6431EF94BE865945", + "structure": "{\"height\":1,\"width\":8,\"x\":0,\"y\":6}" + }, + { + "key": "panelPANE-9488B966ABC1E940", + "structure": "{\"height\":1,\"width\":8,\"x\":8,\"y\":6}" + }, + { + "key": "panel80A18A0EB225FB4B", + "structure": "{\"height\":1,\"width\":8,\"x\":16,\"y\":6}" + }, + { + "key": "panel373343E8B68AA846", + "structure": "{\"height\":6,\"width\":8,\"x\":0,\"y\":20}" + }, + { + "key": "panelPANE-351E28339D1FDB40", + "structure": "{\"height\":7,\"width\":8,\"x\":8,\"y\":7}" + }, + { + "key": "panelAA81D9348A212B4B", + "structure": "{\"height\":7,\"width\":8,\"x\":0,\"y\":7}" + }, + { + "key": "panelFAD82336AEDD0B49", + "structure": "{\"height\":7,\"width\":8,\"x\":16,\"y\":7}" + }, + { + "key": "panelPANE-CCFCC1BB99CA3843", + "structure": "{\"height\":6,\"width\":8,\"x\":0,\"y\":14}" + }, + { + "key": "panelE7BD64DF89B9B94E", + "structure": "{\"height\":6,\"width\":8,\"x\":8,\"y\":20}" + }, + { + "key": "panel849F83B5B73CC844", + "structure": "{\"height\":6,\"width\":8,\"x\":16,\"y\":20}" + }, + { + "key": "panel848E183B8031884D", + "structure": "{\"height\":6,\"width\":8,\"x\":8,\"y\":14}" + }, + { + "key": "panel114E4560B4917A43", + "structure": "{\"height\":6,\"width\":8,\"x\":16,\"y\":14}" + }, + { + "key": "panelPANE-4E589BF4AEA7D84B", + "structure": "{\"height\":6,\"width\":24,\"x\":0,\"y\":0}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelPANE-6431EF94BE865945", + "title": "Untitled", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"showTitle\":false,\"backgroundColor\":\"#f36644\",\"textColor\":\"#222d3b\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Load Balancer 5XX Response Codes" + }, + { + "id": null, + "key": "panelPANE-9488B966ABC1E940", + "title": "Untitled", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"textColor\":\"#222d3b\",\"backgroundColor\":\"#f4a866\",\"showTitle\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Load Balancer 4XX Response Codes" + }, + { + "id": null, + "key": "panel80A18A0EB225FB4B", + "title": "Untitled", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"textColor\":\"#222d3b\",\"backgroundColor\":\"#f6c851\",\"showTitle\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Load Balancer 3XX Response Codes" + }, + { + "id": null, + "key": "panel373343E8B68AA846", + "title": "5XX ELB Response Codes", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Count\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"loadbalancername={{loadbalancername}} AvailabilityZone={{AvailabilityZone}}\"}}],\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancername={{loadbalancername}} AvailabilityZone=* metric=HTTPCode_ELB_5XX Statistic=Sum | sum by account, region, namespace, loadbalancername, AvailabilityZone", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-351E28339D1FDB40", + "title": "Client Locations", + "visualSettings": "{\"general\":{\"mode\":\"map\",\"type\":\"map\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#ED3CPE\",\"outlierBandFillOpacity\":0.15,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| parse field=client \"*:*\" as ClientIP, ClientPort nodrop\n| where (elb_status_code matches \"4*\")\n| count by ClientIP\n| lookup latitude, longitude, country_code, country_name, region, city, postal_code from geo://location on ip = ClientIP\n| count by latitude, longitude, country_code, country_name, region, city, postal_code\n| where !isnull(latitude)", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelAA81D9348A212B4B", + "title": "Client Locations", + "visualSettings": "{\"general\":{\"mode\":\"map\",\"type\":\"map\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#ED3CPE\",\"outlierBandFillOpacity\":0.15,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| parse field=client \"*:*\" as ClientIP, ClientPort nodrop\n| where (elb_status_code matches \"5*\")\n| count by ClientIP\n| lookup latitude, longitude, country_code, country_name, region, city, postal_code from geo://location on ip = ClientIP\n| count by latitude, longitude, country_code, country_name, region, city, postal_code\n| where !isnull(latitude)", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelFAD82336AEDD0B49", + "title": "Client Locations", + "visualSettings": "{\"general\":{\"mode\":\"map\",\"type\":\"map\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#ED3CPE\",\"outlierBandFillOpacity\":0.15,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| parse field=client \"*:*\" as ClientIP, ClientPort nodrop\n| where (elb_status_code matches \"3*\")\n| count by ClientIP\n| lookup latitude, longitude, country_code, country_name, region, city, postal_code from geo://location on ip = ClientIP\n| count by latitude, longitude, country_code, country_name, region, city, postal_code\n| where !isnull(latitude)", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-CCFCC1BB99CA3843", + "title": "Events - 5XX Response Codes", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Server Errors\"}},\"legend\":{\"enabled\":false,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| parse field=client \"*:*\" as ClientIP, ClientPort nodrop\n| if(elb_status_code matches \"5*\", 1, 0) as ServerErrors \n| timeslice 1m\n| sum(ServerErrors) as ServerErrors by _timeslice\n| sort _timeslice asc", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelE7BD64DF89B9B94E", + "title": "4XX ELB Response Codes", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Count\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"loadbalancername={{loadbalancername}} AvailabilityZone={{AvailabilityZone}}\"}}],\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancername={{loadbalancername}} metric=HTTPCode_ELB_4XX Statistic=Sum | sum by account, region, namespace, loadbalancername, AvailabilityZone", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel849F83B5B73CC844", + "title": "Backend Response Codes", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Count\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"loadbalancername={{loadbalancername}} AvailabilityZone={{AvailabilityZone}} metric={{metric}}\"}},{\"series\":[],\"queries\":[\"B\"],\"properties\":{\"name\":\"loadbalancername={{loadbalancername}} AvailabilityZone={{AvailabilityZone}} metric={{metric}}\"}},{\"series\":[],\"queries\":[\"C\"],\"properties\":{\"name\":\"loadbalancername={{loadbalancername}} AvailabilityZone={{AvailabilityZone}} metric={{metric}}\"}}],\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancername={{loadbalancername}} AvailabilityZone=* metric=HTTPCode_Backend_3XX Statistic=Sum | sum by account, region, namespace, loadbalancername, AvailabilityZone", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + }, + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancername={{loadbalancername}} AvailabilityZone=* metric=HTTPCode_Backend_4XX Statistic=Sum | sum by account, region, namespace, loadbalancername, AvailabilityZone", + "queryType": "Metrics", + "queryKey": "B", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + }, + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancername={{loadbalancername}} AvailabilityZone=* metric=HTTPCode_Backend_5XX Statistic=Sum | sum by account, region, namespace, loadbalancername, AvailabilityZone", + "queryType": "Metrics", + "queryKey": "C", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel848E183B8031884D", + "title": "Events - 4XX Response Codes", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Server Errors\"}},\"legend\":{\"enabled\":false,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| parse field=client \"*:*\" as ClientIP, ClientPort nodrop\n| if(elb_status_code matches \"4*\", 1, 0) as ServerErrors \n| timeslice 1m\n| sum(ServerErrors) as ServerErrors by _timeslice\n| sort _timeslice asc", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel114E4560B4917A43", + "title": "Events - 3XX Response Codes", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Server Errors\"}},\"legend\":{\"enabled\":false,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| parse field=client \"*:*\" as ClientIP, ClientPort nodrop\n| if(elb_status_code matches \"3*\", 1, 0) as ServerErrors \n| timeslice 1m\n| sum(ServerErrors) as ServerErrors by _timeslice\n| sort _timeslice asc", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-4E589BF4AEA7D84B", + "title": "Response Codes Distribution by Domain and URI", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"distribution\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account=* region=* namespace=aws/elb\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"*\")\n| parse field=request \"* *://*:*/* HTTP\" as Method, Protocol, Domain, ServerPort, URI \n| if (elb_status_code matches \"5*\",1,0) as ELB_5XX\n| if (elb_status_code matches \"4*\",1,0) as ELB_4XX\n| if (elb_status_code matches \"3*\",1,0) as ELB_3XX\n| sum(ELB_5XX) as ELB_5XX, sum(ELB_4XX) as ELB_4XX, sum(ELB_3XX) as ELB_3XX by loadbalancername, Domain, URI\n| limit 20\n| sort by ELB_5XX", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "namespace", + "displayName": "namespace", + "defaultValue": "aws/elb", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace=aws/elb", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "loadbalancername", + "displayName": "loadbalancername", + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "loadbalancername" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "2. AWS Classic Load Balancer - Backend Response Analysis", + "description": "See the details of the Backend HTTP codes 2XX, 3XX, 4XX, and 5XX by availability zone, and load balancer name.", + "title": "2. AWS Classic Load Balancer - Backend Response Analysis", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "loadbalancername": [ + "*" + ], + "namespace": [ + "aws/elb" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelPANE-EFB93C23B0ABA948", + "structure": "{\"height\":1,\"width\":12,\"x\":0,\"y\":6}" + }, + { + "key": "panel05DD969FA8F84846", + "structure": "{\"height\":1,\"width\":12,\"x\":12,\"y\":19}" + }, + { + "key": "panelE8037BA1BAFE4840", + "structure": "{\"height\":1,\"width\":12,\"x\":12,\"y\":6}" + }, + { + "key": "panel11E5E924B7E46B4D", + "structure": "{\"height\":1,\"width\":12,\"x\":0,\"y\":19}" + }, + { + "key": "panelPANE-31F3A4E7852C484F", + "structure": "{\"height\":6,\"width\":24,\"x\":0,\"y\":0}" + }, + { + "key": "panel8D3D1B68A68C1B49", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":7}" + }, + { + "key": "panelA52CD401A29F7942", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":20}" + }, + { + "key": "panelDF364B0988414A44", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":20}" + }, + { + "key": "panelPANE-2A2CE58CB024284B", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":13}" + }, + { + "key": "panelDCE3556190369A4B", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":13}" + }, + { + "key": "panel74660D2CA5358B47", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":26}" + }, + { + "key": "panelA5A5D6698A94CB4F", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":26}" + }, + { + "key": "panel13B1911EADE35944", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":7}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelPANE-EFB93C23B0ABA948", + "title": "5xx", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"textColor\":\"#222d3b\",\"backgroundColor\":\"#f36644\",\"showTitle\":false},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Backend 5XX Response Codes" + }, + { + "id": null, + "key": "panel05DD969FA8F84846", + "title": "2XX", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"textColor\":\"#222d3b\",\"backgroundColor\":\"#75bf00\",\"showTitle\":false},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Backend 2XX Response Codes" + }, + { + "id": null, + "key": "panelE8037BA1BAFE4840", + "title": "4xx", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"textColor\":\"#222d3b\",\"backgroundColor\":\"#f4a866\",\"showTitle\":false},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Backend 4XX Response Codes" + }, + { + "id": null, + "key": "panel11E5E924B7E46B4D", + "title": "3XX", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"textColor\":\"#222d3b\",\"backgroundColor\":\"#f6c851\",\"showTitle\":false},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Backend 3XX Response Codes" + }, + { + "id": null, + "key": "panelPANE-31F3A4E7852C484F", + "title": "Response Codes Distribution by Domain and URI", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"distribution\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"*\")\n| parse field=request \"* *://*:*/* HTTP\" as Method, Protocol, Domain, ServerPort, URI nodrop\n| parse field=client \"*:*\" as clientIP, port nodrop\n| parse field=backend \"*:*\" as backendIP, backend_port nodrop\n| fields - request, client, backend\n| if (backend_status_code matches \"5*\",1,0) as Backend_5XX\n| if (backend_status_code matches \"4*\",1,0) as Backend_4XX\n| if (backend_status_code matches \"3*\",1,0) as Backend_3XX\n| if (backend_status_code matches \"2*\",1,0) as Backend_2XX\n| sum(Backend_5XX) as Backend_5XX, sum(Backend_4XX) as Backend_4XX, sum(Backend_3XX) as Backend_3XX, sum(Backend_2XX) as Backend_2XX by loadbalancername, Domain, URI\n| limit 20\n| sort by Backend_5XX, Backend_4XX, Backend_3XX, Backend_2XX ", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel8D3D1B68A68C1B49", + "title": "4XX Backend Response Codes", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Count\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"AvailabilityZone={{AvailabilityZone}} loadbalancername={{loadbalancername}}\"}}],\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancername={{loadbalancername}} AvailabilityZone=* metric=HTTPCode_Backend_4XX Statistic=Sum | sum by account, region, namespace, loadbalancername, AvailabilityZone", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelA52CD401A29F7942", + "title": "2XX Backend Response Codes", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Count\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"AvailabilityZone={{AvailabilityZone}} loadbalancername={{loadbalancername}}\"}}],\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancername={{loadbalancername}} AvailabilityZone=* metric=HTTPCode_Backend_2XX Statistic=Sum | sum by account, region, namespace, loadbalancername, AvailabilityZone ", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelDF364B0988414A44", + "title": "3XX Backend Response Codes", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Count\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"AvailabilityZone={{AvailabilityZone}} loadbalancername={{loadbalancername}}\"}}],\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancername={{loadbalancername}} AvailabilityZone=* metric=HTTPCode_Backend_3XX Statistic=Sum | sum by account, region, namespace, loadbalancername, AvailabilityZone ", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-2A2CE58CB024284B", + "title": "Events - 5XX Response Codes", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Count\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| parse field=client \"*:*\" as ClientIP, ClientPort nodrop\n| where !isEmpty(backend_status_code)\n| if(backend_status_code matches \"5*\", 1, 0) as BackendErrors\n| timeslice 1m\n| sum(BackendErrors) as BackendErrors by _timeslice, Loadbalancername\n| transpose row _timeslice column Loadbalancername", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelDCE3556190369A4B", + "title": "Events - 4XX Response Codes", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Count\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| parse field=client \"*:*\" as ClientIP, ClientPort nodrop\n| where !isEmpty(backend_status_code)\n| if(backend_status_code matches \"4*\", 1, 0) as BackendErrors\n| timeslice 1m\n| sum(BackendErrors) as BackendErrors by _timeslice, Loadbalancername\n| transpose row _timeslice column Loadbalancername", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel74660D2CA5358B47", + "title": "Events - 3XX Response Codes", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Count\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| parse field=client \"*:*\" as ClientIP, ClientPort nodrop\n| where !isEmpty(backend_status_code)\n| if(backend_status_code matches \"3*\", 1, 0) as BackendErrors\n| timeslice 1m\n| sum(BackendErrors) as BackendErrors by _timeslice, Loadbalancername\n| transpose row _timeslice column Loadbalancername", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelA5A5D6698A94CB4F", + "title": "Events - 2XX Response Codes", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Count\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| parse field=client \"*:*\" as ClientIP, ClientPort nodrop\n| where !isEmpty(backend_status_code)\n| if(backend_status_code matches \"2*\", 1, 0) as BackendErrors\n| timeslice 1m\n| sum(BackendErrors) as BackendErrors by _timeslice, Loadbalancername\n| transpose row _timeslice column Loadbalancername", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel13B1911EADE35944", + "title": "5XX Backend Response Codes", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Count\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"AvailabilityZone={{AvailabilityZone}} loadbalancername={{loadbalancername}}\"}}],\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancername={{loadbalancername}} AvailabilityZone=* metric=HTTPCode_Backend_5XX Statistic=Sum | sum by account, region, namespace, loadbalancername, AvailabilityZone", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "namespace", + "displayName": "namespace", + "defaultValue": "aws/elb", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace=aws/elb", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "loadbalancername", + "displayName": "loadbalancername", + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "loadbalancername" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "3. AWS Classic Load Balancer - Latency Overview", + "description": "See the details of latency in your classic load balancer by availability zone, and load balancer name.", + "title": "3. AWS Classic Load Balancer - Latency Overview", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "loadbalancername": [ + "*" + ], + "namespace": [ + "aws/elb" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelpane-8fb7ac20b210584f", + "structure": "{\"height\":6,\"width\":24,\"x\":0,\"y\":1}" + }, + { + "key": "panelpane-46aba672bb08b846", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":8}" + }, + { + "key": "panelpane-3ebb85e685bf1b4f", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":8}" + }, + { + "key": "panelpane-c1ca3098892bea40", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":14}" + }, + { + "key": "panelpane-c301d958990e694d", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":14}" + }, + { + "key": "panelPANE-42811CC2ADA89846", + "structure": "{\"height\":1,\"width\":24,\"x\":0,\"y\":0}" + }, + { + "key": "panelPANE-BAF589A28E007840", + "structure": "{\"height\":1,\"width\":24,\"x\":0,\"y\":7}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelpane-8fb7ac20b210584f", + "title": "Latency", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"axes\":{\"axisY\":{\"title\":\"Latency\",\"unit\":{\"value\":\"s\",\"isCustom\":false}},\"axisX\":{\"title\":\"\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"AvailabilityZone={{AvailabilityZone}} loadbalancername={{loadbalancername}}\"}}],\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancername={{loadbalancername}} AvailabilityZone=* metric=Latency Statistic=Average | avg by account, region, namespace, loadbalancername, AvailabilityZone", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-46aba672bb08b846", + "title": "Max and Average Total Client Latency by Loadbalancername", + "visualSettings": "{\"general\":{\"mode\":\"distribution\",\"type\":\"column\",\"fontSize\":12,\"paginationPageSize\":100,\"displayType\":\"default\",\"fillOpacity\":1},\"color\":{\"family\":\"scheme1\"},\"hiddenQueryKeys\":[],\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\"},\"axes\":{\"axisY\":{\"title\":\"Average Latency\",\"unit\":{\"value\":\"s\",\"isCustom\":false},\"hideLabels\":false},\"axisX\":{\"title\":\"loadbalancername\"},\"axisY2\":{\"hideLabels\":false,\"unit\":{\"value\":\"s\",\"isCustom\":false},\"title\":\"Max Latency\"}},\"series\":{},\"overrides\":[{\"series\":[\"AverageClientLatency\"],\"queries\":[],\"properties\":{\"axisYType\":\"primary\"}},{\"series\":[\"MaximumClientLatency\"],\"queries\":[],\"properties\":{\"axisYType\":\"secondary\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| where request_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and backend_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and response_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/\n| (request_processing_time+backend_processing_time+response_processing_time) as ClientLatency\n| avg(ClientLatency) as AverageClientLatency, max(ClientLatency) as MaximumClientLatency by loadbalancername\n| order by MaximumClientLatency", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-3ebb85e685bf1b4f", + "title": "Max and Average Backend Processing Time by Loadbalancername", + "visualSettings": "{\"general\":{\"mode\":\"distribution\",\"type\":\"column\"},\"legend\":{\"enabled\":true},\"axes\":{\"axisY\":{\"title\":\"Avg Latency\",\"unit\":{\"value\":\"s\",\"isCustom\":false}},\"axisX\":{\"title\":\"loadbalancername\"},\"axisY2\":{\"title\":\"Max latency\",\"unit\":{\"value\":\"Seconds\",\"isCustom\":true}}},\"series\":{},\"overrides\":[{\"series\":[\"AverageBackendProcessingTime\"],\"queries\":[],\"properties\":{\"axisYType\":\"primary\"}},{\"series\":[\"MaximumBackendProcessingTime\"],\"queries\":[],\"properties\":{\"axisYType\":\"secondary\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| where request_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and backend_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and response_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/\n| avg(backend_processing_time) as AverageBackendProcessingTime, max(backend_processing_time) as MaximumBackendProcessingTime by loadbalancername\n| order by MaximumBackendProcessingTime", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-c1ca3098892bea40", + "title": "Average Total Client Latency Over Time by Loadbalancername", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"area\"},\"axes\":{\"axisY\":{\"title\":\"Latency\",\"unit\":{\"value\":\"s\",\"isCustom\":false}},\"axisX\":{\"title\":\"\"}},\"series\":{},\"overrides\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| where request_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and backend_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and response_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/\n| (request_processing_time+backend_processing_time+response_processing_time) as ClientLatency\n| timeslice 1m\n| avg(ClientLatency) as AverageClientLatency by loadbalancername ,_timeslice\n| transpose row _timeslice column loadbalancername", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-c301d958990e694d", + "title": "Average Response Processing Time Over Time by Loadbalancername", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"area\"},\"axes\":{\"axisY\":{\"title\":\"Latency\",\"unit\":{\"value\":\"s\",\"isCustom\":false}},\"axisX\":{\"title\":\"\"}},\"series\":{},\"overrides\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| where request_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and backend_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and response_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/\n| (request_processing_time+backend_processing_time+response_processing_time) as ClientLatency\n| timeslice by 1m\n| avg(response_processing_time) as AverageResponseProcessingTime by _timeslice, loadbalancername\n| transpose row _timeslice column loadbalancername", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-42811CC2ADA89846", + "title": "Response", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"backgroundColor\":\"#dfe5e9\",\"showTitle\":false},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Overall Latency" + }, + { + "id": null, + "key": "panelPANE-BAF589A28E007840", + "title": "Latency", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"backgroundColor\":\"#dfe5e9\",\"showTitle\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Events - Backend Latency" + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "namespace", + "displayName": "namespace", + "defaultValue": "aws/elb", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace=aws/elb", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "loadbalancername", + "displayName": "loadbalancername", + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "loadbalancername" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "4. AWS Classic Load Balancer - Latency Details", + "description": "See the details of latency in your classic load balancer including the average and maximum request and response processing time, by backend and ELB.", + "title": "4. AWS Classic Load Balancer - Latency Details", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "loadbalancername": [ + "*" + ], + "namespace": [ + "aws/elb" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelpane-e21d1869af8bbb43", + "structure": "{\"height\":6,\"width\":24,\"x\":0,\"y\":0}" + }, + { + "key": "panelpane-50edccbfa1cd8b4f", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":6}" + }, + { + "key": "panelpane-39d07f8699151b42", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":6}" + }, + { + "key": "panelpane-6fda9ea0b259db4f", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":12}" + }, + { + "key": "panelpane-256726aaafcdba4d", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":24}" + }, + { + "key": "panelpane-d9489b8ebd5daa4c", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":18}" + }, + { + "key": "panelpane-fee25a48afe96841", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":18}" + }, + { + "key": "panelpane-9fa04ab689a4594a", + "structure": "{\"height\":5,\"width\":24,\"x\":0,\"y\":30}" + }, + { + "key": "panelPANE-BCC4A01F93DBD84C", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":24}" + }, + { + "key": "panelPANE-E66D573EAA3BBA47", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":12,\"minHeight\":3,\"minWidth\":3}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelpane-e21d1869af8bbb43", + "title": "Defintions", + "visualSettings": "{\"text\":{\"format\":\"markdown\",\"backgroundColor\":\"#ffffff\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "#### All Time units are in Seconds\n\n#### **Client Latency** = ( RequestProcessingTime + BackendProcessingTime + ResponseProcessingTime)\n\n#### **RequestProcessingTime** = The total time elapsed from the time the load balancer received the request until the time it sent it to a registered instance.\n\n#### **BackendProcessingTime** = The total time elapsed from the time the load balancer sent the request to a registered instance until the instance started to send the response headers.\n\n#### **ResponseProcessingTime** = The total time elapsed from the time the load balancer received the response header from the registered instance until it started to send the response to the client. This includes both the queuing time at the load balancer and the connection acquisition time from the load balancer to the back end.\n\n" + }, + { + "id": null, + "key": "panelpane-50edccbfa1cd8b4f", + "title": "Events - Client Latency by Domain", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme3\"},\"axes\":{\"axisY\":{\"title\":\"Time\"}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| parse field=request \"* *://*:*/* HTTP\" as Method, Protocol, Domain, ServerPort, URI nodrop\n| where request_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and backend_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and response_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/\n| timeslice by 1m\n| avg(request_processing_time) as a1, avg(backend_processing_time) as a2,avg(response_processing_time) as a3 by _timeslice, Domain \n| (a1+a2+a3) as TotalProcessTime\n| fields _timeslice, Domain, TotalProcessTime \n| transpose row _timeslice column Domain", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-39d07f8699151b42", + "title": "Events - Client Latency by ELB Server", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme3\"},\"axes\":{\"axisY\":{\"title\":\"Time\"}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| parse field=request \"* *://*:*/* HTTP\" as Method, Protocol, Domain, ServerPort, URI nodrop\n| where request_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and backend_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and response_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/\n| timeslice by 1m\n| avg(request_processing_time) as a1, avg(backend_processing_time) as a2,avg(response_processing_time) as a3 by _timeslice, loadbalancername\n| (a1+a2+a3) as TotalProcessTime\n| fields _timeslice, loadbalancername, TotalProcessTime \n| transpose row _timeslice column loadbalancername", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-6fda9ea0b259db4f", + "title": "Events - Average Response Processing Time by ELB Server", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"column\"},\"axes\":{\"axisY\":{\"title\":\"Time\"}},\"series\":{},\"overrides\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| parse field=request \"* *://*:*/* HTTP\" as Method, Protocol, Domain, ServerPort, URI nodrop\n| where request_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and backend_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and response_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/\n| timeslice by 1m\n| avg(response_processing_time) as AverageResponseProcessingTime by _timeslice, loadbalancername\n| transpose row _timeslice column loadbalancername", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-256726aaafcdba4d", + "title": "Events - Average Request Processing Time by URI", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"column\"},\"axes\":{\"axisY\":{\"title\":\"Time\"}},\"series\":{},\"overrides\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| parse field=request \"* *://*:*/* HTTP\" as Method, Protocol, Domain, ServerPort, URI nodrop\n| where request_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and backend_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and response_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/\n| timeslice by 1m\n| avg(request_processing_time) as AverageRequestProcessingTime by _timeslice, URI\n| transpose row _timeslice column URI", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-d9489b8ebd5daa4c", + "title": "Events - Max Request Processing Time by ELB Server", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"axes\":{\"axisY\":{\"title\":\"Time\"}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| parse field=request \"* *://*:*/* HTTP\" as Method, Protocol, Domain, ServerPort, URI nodrop\n| where request_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and backend_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and response_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/\n| timeslice by 1m\n| max(request_processing_time) as MaximumRequestProcessingTime by _timeslice, loadbalancername\n| transpose row _timeslice column loadbalancername", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-fee25a48afe96841", + "title": "Events - Max Response Processing Time by ELB Server", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"axes\":{\"axisY\":{\"title\":\"Time\"}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| where request_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and backend_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and response_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/\n| timeslice by 1m\n| max(response_processing_time) as MaximumResponseProcessingTime by _timeslice, loadbalancername\n| transpose row _timeslice column loadbalancername", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-9fa04ab689a4594a", + "title": "Events - Top 20 Client Latency by Paths", + "visualSettings": "{\"general\":{\"mode\":\"distribution\",\"type\":\"table\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| parse field=request \"* *://*:*/* HTTP\" as Method, Protocol, Domain, ServerPort, URI nodrop\n| where request_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and backend_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and response_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/\n| avg(request_processing_time) as a1, avg(backend_processing_time) as a2,avg(response_processing_time) as a3 by URI\n| (a1+a2+a3) as TotalProcessTime\n| fields URI, TotalProcessTime \n| sort by TotalProcessTime \n| limit 20", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-BCC4A01F93DBD84C", + "title": "Events - Average Response Processing Time by URI", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"column\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"fillOpacity\":1,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Time\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| parse field=request \"* *://*:*/* HTTP\" as Method, Protocol, Domain, ServerPort, URI nodrop\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| where request_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and backend_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and response_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/\n| timeslice by 1m\n| avg(response_processing_time) as AverageResponseProcessingTime by _timeslice, URI\n| transpose row _timeslice column URI", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-E66D573EAA3BBA47", + "title": "Events - Average Request Processing Time by ELB Server", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"column\"},\"axes\":{\"axisY\":{\"title\":\"Time\"}},\"series\":{},\"overrides\":[],\"legend\":{\"enabled\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| parse field=request \"* *://*:*/* HTTP\" as Method, Protocol, Domain, ServerPort, URI nodrop\n| where request_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and backend_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/ and response_processing_time matches /^[+]?([0-9]+(?:[\\.][0-9]*)?|\\.[0-9]+)$/\n| timeslice by 1m\n| avg(request_processing_time) as AverageRequestProcessingTime by _timeslice, loadbalancername\n| transpose row _timeslice column loadbalancername", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "namespace", + "displayName": "namespace", + "defaultValue": "aws/elb", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace=aws/elb", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "loadbalancername", + "displayName": "loadbalancername", + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "loadbalancername" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "5. AWS Classic Load Balancer - Connections and Host Status", + "description": "See the details of connections and host status including the average unhealthy host count, and healthy host count by availability zone, and load balancer name.", + "title": "5. AWS Classic Load Balancer - Connections and Host Status", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "loadbalancername": [ + "*" + ], + "namespace": [ + "aws/elb" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelpane-72162e80bf98794a", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":20}" + }, + { + "key": "panelpane-3f69e9d8acb63944", + "structure": "{\"height\":6,\"width\":8,\"x\":16,\"y\":13}" + }, + { + "key": "panelpane-b0dcb7ce9acff84d", + "structure": "{\"height\":6,\"width\":8,\"x\":0,\"y\":6}" + }, + { + "key": "panelpane-0a6b3b1a8e6f2a4d", + "structure": "{\"height\":6,\"width\":8,\"x\":8,\"y\":6}" + }, + { + "key": "panelpane-256d7e9895990b46", + "structure": "{\"height\":6,\"width\":8,\"x\":16,\"y\":6}" + }, + { + "key": "panelPANE-AC8CEF56B14A3B49", + "structure": "{\"height\":1,\"width\":24,\"x\":0,\"y\":5}" + }, + { + "key": "panelA50246B29A29584D", + "structure": "{\"height\":1,\"width\":24,\"x\":0,\"y\":12}" + }, + { + "key": "panel248E85BAAAC3FA49", + "structure": "{\"height\":1,\"width\":12,\"x\":0,\"y\":19}" + }, + { + "key": "panel93A07615B0C15B44", + "structure": "{\"height\":1,\"width\":12,\"x\":12,\"y\":19}" + }, + { + "key": "panelF582E76F8F681B46", + "structure": "{\"height\":6,\"width\":8,\"x\":0,\"y\":13}" + }, + { + "key": "panelDCF2F2A88E731942", + "structure": "{\"height\":6,\"width\":8,\"x\":8,\"y\":13}" + }, + { + "key": "panel15B701BABC802B4F", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":20}" + }, + { + "key": "panelPANE-9EB0E883B1BAB84B", + "structure": "{\"height\":5,\"width\":24,\"x\":0,\"y\":0}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelpane-72162e80bf98794a", + "title": "Unhealthy Hosts", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"AvailabilityZone={{AvailabilityZone}} loadbalancername={{loadbalancername}}\"}}],\"axes\":{\"axisY\":{\"title\":\"Count\"}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancername={{loadbalancername}} AvailabilityZone=* metric=UnHealthyHostCount Statistic=Average | avg by account, region, namespace, loadbalancername, AvailabilityZone", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-3f69e9d8acb63944", + "title": "Backend Connections Errors", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"axes\":{\"axisY\":{\"title\":\"Count\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"AvailabilityZone={{AvailabilityZone}} loadbalancername={{loadbalancername}}\"}}],\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancername={{loadbalancername}} AvailabilityZone=* metric=BackendConnectionErrors Statistic=Sum | sum by account, region, namespace, loadbalancername, AvailabilityZone", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-b0dcb7ce9acff84d", + "title": "Active Connections", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"axes\":{\"axisY\":{\"title\":\"Count\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{loadbalancername}}\"}}],\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancername={{loadbalancername}} metric=EstimatedALBActiveConnectionCount Statistic=Sum | sum by account, region, namespace, loadbalancername", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-0a6b3b1a8e6f2a4d", + "title": "New Connections", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"axes\":{\"axisY\":{\"title\":\"Count\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{loadbalancername}}\"}}],\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancername={{loadbalancername}} metric=EstimatedALBNewConnectionCount Statistic=Sum | sum by account, region, namespace, loadbalancername", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-256d7e9895990b46", + "title": "Rejected Connections (Using Spillover Count)", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"axes\":{\"axisY\":{\"title\":\"Count\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"AvailabilityZone={{AvailabilityZone}} loadbalancername={{loadbalancername}}\"}}],\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancername={{loadbalancername}} metric=SpilloverCount Statistic=Sum | sum by account, region, namespace, loadbalancername, AvailabilityZone", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-AC8CEF56B14A3B49", + "title": "Connections", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"backgroundColor\":\"#dfe5e9\",\"showTitle\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Connections" + }, + { + "id": null, + "key": "panelA50246B29A29584D", + "title": "Connections", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"backgroundColor\":\"#dfe5e9\",\"showTitle\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Connections Errors" + }, + { + "id": null, + "key": "panel248E85BAAAC3FA49", + "title": "Hosts", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"backgroundColor\":\"#dfe5e9\",\"showTitle\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Unhealthy Hosts" + }, + { + "id": null, + "key": "panel93A07615B0C15B44", + "title": "Hosts", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"backgroundColor\":\"#dfe5e9\",\"showTitle\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Healthy Hosts" + }, + { + "id": null, + "key": "panelF582E76F8F681B46", + "title": "3XX Backend Error Count", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"axes\":{\"axisY\":{\"title\":\"Count\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"AvailabilityZone={{AvailabilityZone}} loadbalancername={{loadbalancername}}\"}}],\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancername={{loadbalancername}} AvailabilityZone=* metric=HTTPCode_Backend_3XX Statistic=Sum | sum by account, region, namespace, loadbalancername, AvailabilityZone", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelDCF2F2A88E731942", + "title": "4XX Backend Error Count", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"axes\":{\"axisY\":{\"title\":\"Count\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"AvailabilityZone={{AvailabilityZone}} loadbalancername={{loadbalancername}}\"}}],\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancername={{loadbalancername}} AvailabilityZone=* metric=HTTPCode_Backend_4XX Statistic=Sum | sum by account, region, namespace, loadbalancername, AvailabilityZone", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel15B701BABC802B4F", + "title": "Healthy Hosts", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"AvailabilityZone={{AvailabilityZone}} loadbalancername={{loadbalancername}}\"}}],\"axes\":{\"axisY\":{\"title\":\"Count\"}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancername={{loadbalancername}} AvailabilityZone=* metric=HealthyHostCount Statistic=Average | avg by account, region, namespace, loadbalancername, AvailabilityZone ", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-9EB0E883B1BAB84B", + "title": "Classic ELB Metrics", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\"},\"title\":{\"fontSize\":14},\"text\":{\"format\":\"markdownV2\",\"fontSize\":12},\"series\":{},\"legend\":{\"enabled\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "**SpilloverCount** - When requests exceed the maximum SurgeQueueLength, the SpilloverCount metric starts to measure rejected requests. The maximum SurgeQueueLength is 1024.\n\n**SurgeQueueLength** - The total number of requests (HTTP listener) or connections (TCP listener) that are pending routing to a healthy instance. The maximum size of the queue is 1,024. Additional requests or connections are rejected when the queue is full.\n\n**EstimatedALBActiveConnectionCount** - The estimated number of concurrent TCP connections active from clients to the load balancer and from the load balancer to targets.\n\n**EstimatedALBConsumedLCUs** - The estimated number of load balancer capacity units (LCU) used by an Application Load Balancer. You pay for the number of LCUs that you use per hour. For more information, see Elastic Load Balancing Pricing for more info https://aws.amazon.com/elasticloadbalancing/pricing/\n\n**EstimatedALBNewConnectionCount** - The estimated number of new TCP connections established from clients to the load balancer and from the load balancer to targets.\n\n**EstimatedProcessedBytes** The estimated number of bytes processed by an Application Load Balancer." + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "namespace", + "displayName": "namespace", + "defaultValue": "aws/elb", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace=aws/elb", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "loadbalancername", + "displayName": "loadbalancername", + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "loadbalancername" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "6. AWS Classic Load Balancer - Requests and Processed Bytes", + "description": "See the details of requests and Processed bytes for your classic load balancer.", + "title": "6. AWS Classic Load Balancer - Requests and Processed Bytes", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "loadbalancername": [ + "*" + ], + "namespace": [ + "aws/elb" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelpane-2fb20d99840ff849", + "structure": "{\"height\":6,\"width\":6,\"x\":18,\"y\":13}" + }, + { + "key": "panelpane-7836817bb708584c", + "structure": "{\"height\":6,\"width\":6,\"x\":12,\"y\":13}" + }, + { + "key": "panelpane-9b153d55a89e9849", + "structure": "{\"height\":6,\"width\":6,\"x\":6,\"y\":13}" + }, + { + "key": "panelpane-0a893b479b02184f", + "structure": "{\"height\":6,\"width\":6,\"x\":0,\"y\":13}" + }, + { + "key": "panelPANE-EFE34823AB0FD841", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":0}" + }, + { + "key": "panel9C8F307FA318284A", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":0}" + }, + { + "key": "panelPANE-B00C3708A858994E", + "structure": "{\"height\":1,\"width\":12,\"x\":12,\"y\":12}" + }, + { + "key": "panel15C0E6E0A725A84E", + "structure": "{\"height\":1,\"width\":12,\"x\":0,\"y\":12}" + }, + { + "key": "panel506081A3919ACA4A", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":6}" + }, + { + "key": "panel6A37B8FBA033EB4D", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":6}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelpane-2fb20d99840ff849", + "title": "Events - Outlier (Decrease) Requests by Backend", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"column\"},\"color\":{\"family\":\"scheme4\"},\"axes\":{\"axisY\":{\"title\":\"Requests\"}},\"series\":{},\"overrides\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| parse field=request \"* *://*:*/* HTTP\" as Method, Protocol, Domain, ServerPort, URI nodrop\n// Parse all fields above, then aggregate\n| timeslice 1m \n| count by _timeslice, backend\n| outlier _count by backend threshold=2, direction=- \n| where (_count_violation=1) and (_count_indicator=1)\n| fields _timeslice, backend, _count \n| transpose row _timeslice column backend", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-7836817bb708584c", + "title": "Events - Outlier (Increase) Requests by Backend", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"column\",\"fillOpacity\":1},\"color\":{\"family\":\"scheme4\"},\"axes\":{\"axisY\":{\"title\":\"Requests\"}},\"series\":{},\"overrides\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| parse field=request \"* *://*:*/* HTTP\" as Method, Protocol, Domain, ServerPort, URI nodrop\n// Parse all fields above, then aggregate\n| timeslice 1m \n| count by _timeslice, backend\n| outlier _count by backend threshold=2, direction=+ \n| where (_count_violation=1) and (_count_indicator=1) and !isEmpty(backend)\n| fields _timeslice, backend, _count \n| transpose row _timeslice column backend", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-9b153d55a89e9849", + "title": "Events - Outlier (Decrease) Requests by Loadbalancername", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"column\"},\"axes\":{\"axisY\":{\"title\":\"Requests\"}},\"series\":{},\"overrides\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| parse field=request \"* *://*:*/* HTTP\" as Method, Protocol, Domain, ServerPort, URI nodrop\n// Parse all fields above, then aggregate\n| timeslice 1m \n| count by _timeslice, loadbalancername\n| outlier _count by loadbalancername threshold=2, direction=+ \n| where (_count_violation=1) and (_count_indicator=1)\n| fields _timeslice, loadbalancername, _count \n| transpose row _timeslice column loadbalancername", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-0a893b479b02184f", + "title": "Events - Outlier (Increase) Requests by Loadbalancername", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"column\"},\"axes\":{\"axisY\":{\"title\":\"Requests\"}},\"series\":{},\"overrides\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| parse field=request \"* *://*:*/* HTTP\" as Method, Protocol, Domain, ServerPort, URI nodrop\n// Parse all fields above, then aggregate\n| timeslice 1m \n| count by _timeslice, loadbalancername\n| outlier _count by loadbalancername threshold=2, direction=+ \n| where (_count_violation=1) and (_count_indicator=1)\n| fields _timeslice, loadbalancername, _count \n| transpose row _timeslice column loadbalancername", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-EFE34823AB0FD841", + "title": "Request Counts", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Count\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{loadbalancername}} \"}}],\"series\":{},\"hiddenQueryKeys\":[\"B\"]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancername={{loadbalancername}} metric=RequestCount statistic=sum | sum by account, region, namespace, loadbalancername", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel9C8F307FA318284A", + "title": "Estimated Processed Bytes", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Count\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{loadbalancername}} \"}}],\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} loadbalancername={{loadbalancername}} metric=EstimatedProcessedBytes Statistic=Sum | sum by account, region, namespace, loadbalancername", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-B00C3708A858994E", + "title": "Untitled", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"backgroundColor\":\"#dfe5e9\",\"showTitle\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Requests to Backend Servers" + }, + { + "id": null, + "key": "panel15C0E6E0A725A84E", + "title": "Untitled", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"backgroundColor\":\"#dfe5e9\",\"showTitle\":false},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Requests by URI" + }, + { + "id": null, + "key": "panel506081A3919ACA4A", + "title": "Received Bytes", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Bytes\"}},\"legend\":{\"enabled\":false,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n// Parse all fields above, then aggregate\n| timeslice 1m \n| sum(received_bytes) as ReceivedBytes by _timeslice\n", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel6A37B8FBA033EB4D", + "title": "Sent Bytes", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Bytes\"}},\"legend\":{\"enabled\":false,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n// Parse all fields above, then aggregate\n| timeslice 1m \n| sum(sent_bytes) as SentBytes by _timeslice", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "namespace", + "displayName": "namespace", + "defaultValue": "aws/elb", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace=aws/elb", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "loadbalancername", + "displayName": "loadbalancername", + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "loadbalancername" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "7. AWS Classic Load Balancer - Threat Intel", + "description": "See the details of IP threats including the count, location, and highly malicious IP threats.", + "title": "7. AWS Classic Load Balancer - Threat Intel", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "loadbalancername": [ + "*" + ], + "namespace": [ + "aws/elb" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelpane-3b762241ac0aba4d", + "structure": "{\"height\":6,\"width\":5,\"x\":8,\"y\":0}" + }, + { + "key": "panelpane-c08479a8a0390b4d", + "structure": "{\"height\":6,\"width\":16,\"x\":8,\"y\":6}" + }, + { + "key": "panelpane-b8ffc92b8b722a41", + "structure": "{\"height\":6,\"width\":24,\"x\":0,\"y\":20}" + }, + { + "key": "panelpane-c605d948852ffb48", + "structure": "{\"height\":6,\"width\":11,\"x\":13,\"y\":0}" + }, + { + "key": "panelPANE-642147F890E0F848", + "structure": "{\"height\":12,\"width\":8,\"x\":0,\"y\":0}" + }, + { + "key": "panelPANE-3AA22D409203F942", + "structure": "{\"height\":8,\"width\":24,\"x\":0,\"y\":12}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelpane-3b762241ac0aba4d", + "title": "All IP Threat Count", + "visualSettings": "{\"general\":{\"type\":\"svp\"},\"svp\":{\"option\":\"Sum\",\"label\":\"Threats\",\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"valueFontSize\":20,\"labelFontSize\":8,\"sparkline\":{\"show\":false,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false,\"min\":0,\"max\":100}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| parse regex \"(?\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})\" multi\n| where ClientIp != \"0.0.0.0\" and ClientIp != \"127.0.0.1\"\n| count as ip_count by ClientIp\n| lookup type, actor, raw, threatlevel as MaliciousConfidence from sumo://threat/cs on threat=ClientIp \n| json field=raw \"labels[*].name\" as LabelName \n| replace(LabelName, \"\\\\/\",\"->\") as LabelName\n| replace(LabelName, \"\\\"\",\" \") as LabelName\n| where type=\"ip_address\" and !isNull(MaliciousConfidence)\n| if (isEmpty(actor), \"Unassigned\", actor) as Actor\n| sum (ip_count) as threat_count", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-c08479a8a0390b4d", + "title": "Highly Malicious IP Threats Table", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"table\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| parse regex \"(?\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})\" multi\n| where ClientIp != \"0.0.0.0\" and ClientIp != \"127.0.0.1\"\n| count as ip_count by ClientIp\n| lookup type, actor, raw, threatlevel as MaliciousConfidence from sumo://threat/cs on threat=ClientIp \n| json field=raw \"labels[*].name\" as LabelName \n| replace(LabelName, \"\\\\/\",\"->\") as LabelName\n| replace(LabelName, \"\\\"\",\" \") as LabelName\n| where type=\"ip_address\" and MaliciousConfidence=\"high\"\n| if (isEmpty(actor), \"Unassigned\", actor) as Actor\n| sum (ip_count) as ThreatCount by ClientIp, MaliciousConfidence, Actor, LabelName\n| sort by ThreatCount", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-b8ffc92b8b722a41", + "title": "All IP Threats Table", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"table\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| parse regex \"(?\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})\" multi\n| where ClientIp != \"0.0.0.0\" and ClientIp != \"127.0.0.1\"\n| count as ip_count by ClientIp\n| lookup type, actor, raw, threatlevel as MaliciousConfidence from sumo://threat/cs on threat=ClientIp \n| json field=raw \"labels[*].name\" as LabelName \n| replace(LabelName, \"\\\\/\",\"->\") as LabelName\n| replace(LabelName, \"\\\"\",\" \") as LabelName\n| where type=\"ip_address\" and !isNull(MaliciousConfidence)\n| if (isEmpty(actor), \"Unassigned\", actor) as Actor\n| sum (ip_count) as ThreatCount by ClientIp, MaliciousConfidence, Actor, LabelName\n| sort by MaliciousConfidence", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-c605d948852ffb48", + "title": "Malicious Confidence", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"bar\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"fillOpacity\":1,\"mode\":\"distribution\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| parse regex \"(?\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})\" multi\n| where ClientIp != \"0.0.0.0\" and ClientIp != \"127.0.0.1\"\n| count as ip_count by ClientIp\n| count as Count by ClientIp\n| lookup type, actor, raw, threatlevel as MaliciousConfidence from sumo://threat/cs on threat=ClientIp \n| json field=raw \"labels[*].name\" as LabelName \n| replace(LabelName, \"\\\\/\",\"->\") as LabelName\n| replace(LabelName, \"\\\"\",\" \") as LabelName\n| where type=\"ip_address\" and !isNull(MaliciousConfidence)\n| if (isEmpty(actor), \"Unassigned\", actor) as Actor\n| count by MaliciousConfidence\n| sort by _count", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-642147F890E0F848", + "title": "Threat Locations", + "visualSettings": "{\"general\":{\"mode\":\"map\",\"type\":\"map\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#ED3CPE\",\"outlierBandFillOpacity\":0.15,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request,user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| parse regex \"(?\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})\" multi\n| where ClientIp != \"0.0.0.0\" and ClientIp != \"127.0.0.1\"\n| count as Count by ClientIp\n| lookup type, actor, raw, threatlevel as MaliciousConfidence from sumo://threat/cs on threat=ClientIp \n| json field=raw \"labels[*].name\" as LabelName \n| replace(LabelName, \"\\\\/\",\"->\") as LabelName\n| replace(LabelName, \"\\\"\",\" \") as LabelName\n| where type=\"ip_address\" and !isNull(MaliciousConfidence)\n| if (isEmpty(actor), \"Unassigned\", actor) as Actor\n| count by ClientIp\n| lookup latitude, longitude, country_code, country_name, region, city, postal_code from geo://location on ip = ClientIp\n| count by latitude, longitude, country_code, country_name, region, city, postal_code\n| where !isnull(latitude)", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-3AA22D409203F942", + "title": "Top URI's Accessed by Highly Malicious Threat IPs", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"distribution\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}}\n| parse \"* * * * * * * * * * * \\\"*\\\" \\\"*\\\" * *\" as datetime, loadbalancername, client, backend, request_processing_time, backend_processing_time, response_processing_time, elb_status_code, backend_status_code, received_bytes, sent_bytes, request, user_agent, ssl_cipher, ssl_protocol\n| where tolowercase(loadbalancername) matches tolowercase(\"{{loadbalancername}}\")\n| parse field=request \"* *://*:*/* HTTP\" as Method, Protocol, Domain, ServerPort, URI nodrop\n| parse regex \"(?\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})\" multi\n| where ClientIp != \"0.0.0.0\" and ClientIp != \"127.0.0.1\"\n| count as ip_count by ClientIp, URI\n| lookup type, actor, raw, threatlevel as MaliciousConfidence from sumo://threat/cs on threat=ClientIp \n| json field=raw \"labels[*].name\" as LabelName \n| replace(LabelName, \"\\\\/\",\"->\") as LabelName\n| replace(LabelName, \"\\\"\",\" \") as LabelName\n| where type=\"ip_address\" // and MaliciousConfidence=\"high\"\n| if (isEmpty(actor), \"Unassigned\", actor) as Actor\n| count(ip_count) as UniqueThreatIPs by URI\n| top 20 URI by UniqueThreatIPs, URI asc", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "namespace", + "displayName": "namespace", + "defaultValue": "aws/elb", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace=aws/elb", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "loadbalancername", + "displayName": "loadbalancername", + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "loadbalancername" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + } + ], + "coloringRules": [] + } + ] +} \ No newline at end of file diff --git a/aws-observability-terraform/examples/aws-observability/json/DynamoDb-App.json b/aws-observability-terraform/examples/aws-observability/json/DynamoDb-App.json new file mode 100644 index 00000000..6bf0995a --- /dev/null +++ b/aws-observability-terraform/examples/aws-observability/json/DynamoDb-App.json @@ -0,0 +1,1765 @@ +{ + "type": "FolderSyncDefinition", + "name": "AWS DynamoDB", + "description": "The Sumo Logic App for Amazon DynamoDB is a unified logs and metrics (ULM) App which provides operational insights into your DynamoDB solution. The App includes Dashboards that allow you to monitor key metrics and view the throttle events, errors, latency, and help you plan the capacity of your DynamoDB solution.", + "children": [ + { + "type": "DashboardV2SyncDefinition", + "name": "1. AWS DynamoDB - Capacity Planning", + "description": "See the details of your DynamoDB capacity including the provisioned read/write consumed, read/write throttle events, and throttled requests.", + "title": "1. AWS DynamoDB - Capacity Planning", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "namespace": [ + "aws/dynamodb" + ], + "tablename": [ + "*" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelpane-758a87f88db51a42", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":13}" + }, + { + "key": "panelpane-7ce3de61ba35494b", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":13}" + }, + { + "key": "panelpane-c19a008d8deb484a", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":1}" + }, + { + "key": "panelpane-111875ec95757b47", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":19}" + }, + { + "key": "panelpane-23b8449dba70ab40", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":1}" + }, + { + "key": "panelpane-37a79b0eb9b0eb41", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":19}" + }, + { + "key": "panelpane-33fc42308e69684d", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":25}" + }, + { + "key": "panelpane-7bb8c9c3bf64594d", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":25}" + }, + { + "key": "panelpane-64a23ff7af69e845", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":7}" + }, + { + "key": "panelpane-2e19df1fbc923a4f", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":7}" + }, + { + "key": "panelPANE-8162C8AD9A9E3A43", + "structure": "{\"height\":1,\"width\":12,\"x\":0,\"y\":0}" + }, + { + "key": "panelPANE-75FFAE93B0AAC842", + "structure": "{\"height\":1,\"width\":12,\"x\":12,\"y\":0}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelpane-758a87f88db51a42", + "title": "Read Capacity Consumed", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"hiddenQueryKeys\":[\"C\"],\"axes\":{\"axisY\":{\"title\":\"Read Capacity\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"Provisioned Read Capacity\"}},{\"series\":[],\"queries\":[\"B\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"Consumed Read Capacity\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "namespace={{namespace}} account={{account}} region={{region}} tablename={{tablename}} metric=ProvisionedReadCapacityUnits Statistic=Maximum | sum by account, region, namespace, tablename", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "namespace={{namespace}} account={{account}} region={{region}} tablename={{tablename}} metric=ConsumedReadCapacityUnits Statistic=Maximum | sum by account, region, namespace, tablename", + "queryType": "Metrics", + "queryKey": "B", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-7ce3de61ba35494b", + "title": "Write Capacity Consumed", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"hiddenQueryKeys\":[],\"axes\":{\"axisY\":{\"title\":\"Write Capacity\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"Provisioned Write Capacity\"}},{\"series\":[],\"queries\":[\"B\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"Consumed Write Capacity\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "namespace={{namespace}} account={{account}} region={{region}} tablename={{tablename}} metric=ProvisionedWriteCapacityUnits Statistic=Maximum | sum by account, region, namespace, tablename", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "namespace={{namespace}} account={{account}} region={{region}} tablename={{tablename}} metric=ConsumedWriteCapacityUnits Statistic=Maximum | sum by account, region, namespace, tablename", + "queryType": "Metrics", + "queryKey": "B", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-c19a008d8deb484a", + "title": "Throttled Read Requests by Operation", + "visualSettings": "{\"general\":{\"type\":\"honeyComb\"},\"honeyComb\":{\"groupBy\":[],\"aggregationType\":\"latest\",\"thresholds\":[{\"from\":0,\"to\":10,\"color\":\"#75bf00\"},{\"from\":10,\"to\":20,\"color\":\"#f6c851\"},{\"from\":20,\"to\":null,\"color\":\"#f36644\"}]},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"honeyComb\",\"name\":\"Operation={{operation}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "namespace={{namespace}} account={{account}} region={{region}} tablename={{tablename}} metric=ThrottledRequests Statistic=sum (operation=*get* or operation=*scan* or operation=*query*) | sum by account, region, namespace, tablename, operation", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-111875ec95757b47", + "title": "Throttled Read Requests by Operation", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"axes\":{\"axisY\":{\"title\":\"Throttled Requests\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{operation}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "namespace={{namespace}} account={{account}} region={{region}} tablename={{tablename}} metric=ThrottledRequests Statistic=sum (operation=*get* or operation=*scan* or operation=*query*) | sum by account, region, namespace, tablename, operation", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-23b8449dba70ab40", + "title": "Throttled Write Requests by Operation", + "visualSettings": "{\"general\":{\"type\":\"honeyComb\"},\"honeyComb\":{\"groupBy\":[],\"aggregationType\":\"latest\",\"thresholds\":[{\"from\":0,\"to\":10,\"color\":\"#75bf00\"},{\"from\":10,\"to\":20,\"color\":\"#f6c851\"},{\"from\":20,\"to\":null,\"color\":\"#f36644\"}]},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"honeyComb\",\"name\":\"Operation={{operation}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "namespace={{namespace}} account={{account}} region={{region}} tablename={{tablename}} metric=ThrottledRequests Statistic=sum (operation=*update* or operation=*put* or operation=*delete* or operation=*write*) | sum by account, region, namespace, tablename, operation", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-37a79b0eb9b0eb41", + "title": "Throttled Write Requests by Operation", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"axes\":{\"axisY\":{\"title\":\"Throttled Requests\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{operation}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "namespace={{namespace}} account={{account}} region={{region}} tablename={{tablename}} metric=ThrottledRequests Statistic=sum (operation=*update* or operation=*put* or operation=*delete* or operation=*write*) | sum by account, region, namespace, tablename, operation", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-33fc42308e69684d", + "title": "Read Throttle Events", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"axes\":{\"axisY\":{\"title\":\"Read Throttle\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{tablename}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "namespace={{namespace}} account={{account}} region={{region}} tablename={{tablename}} metric=ReadThrottleEvents Statistic=sum | sum by account, region, namespace, tablename", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-7bb8c9c3bf64594d", + "title": "Write Throttle Events", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"axes\":{\"axisY\":{\"title\":\"Write Throttle\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{tablename}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "namespace={{namespace}} account={{account}} region={{region}} tablename={{tablename}} metric=WriteThrottleEvents Statistic=sum | sum by account, region, namespace, tablename", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-64a23ff7af69e845", + "title": "Account Allotted Max Reads", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":3},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{metric}}\"}},{\"series\":[],\"queries\":[\"B\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{metric}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": " region={{region}} namespace={{namespace}} account={{account}} metric=AccountMaxReads Statistic=Average | avg by account, region, namespace", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": " region={{region}} namespace={{namespace}} account={{account}} metric=AccountMaxTableLevelReads Statistic=Average | avg by account, region, namespace", + "queryType": "Metrics", + "queryKey": "B", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-2e19df1fbc923a4f", + "title": "Account Allotted Max Writes", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":3},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{metric}}\"}},{\"series\":[],\"queries\":[\"B\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{metric}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": " region={{region}} namespace={{namespace}} account={{account}} metric=AccountMaxWrites Statistic=Average | avg by account, region, namespace", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": " region={{region}} namespace={{namespace}} account={{account}} metric=AccountMaxTableLevelWrites Statistic=Average | avg by account, region, namespace", + "queryType": "Metrics", + "queryKey": "B", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-8162C8AD9A9E3A43", + "title": "Untitled", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"textColor\":\"#222d3b\",\"backgroundColor\":\"#dfe5e9\",\"showTitle\":false,\"format\":\"text\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Read Capacity" + }, + { + "id": null, + "key": "panelPANE-75FFAE93B0AAC842", + "title": "Untitled", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"showTitle\":false,\"backgroundColor\":\"#dfe5e9\",\"textColor\":\"#222d3b\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Write Capacity" + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/dynamodb", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "tablename", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "tablename" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "1. AWS DynamoDB - Overview", + "description": "See the overview of your DynamoDB environment including the events, errors, requests, users, and latency.", + "title": "1. AWS DynamoDB - Overview", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "namespace": [ + "aws/dynamodb" + ], + "region": [ + "*" + ], + "_sumo_domain_name": [ + "aws" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelpane-03afc899b83e3b40", + "structure": "{\"height\":6,\"width\":5,\"x\":11,\"y\":1}" + }, + { + "key": "panelpane-8e0495858ee4a94d", + "structure": "{\"height\":6,\"width\":4,\"x\":16,\"y\":7}" + }, + { + "key": "panelpane-3e2796b7b77b5940", + "structure": "{\"height\":6,\"width\":5,\"x\":11,\"y\":7}" + }, + { + "key": "panelpane-e29e6cc9af5e4b42", + "structure": "{\"height\":6,\"width\":4,\"x\":20,\"y\":7}" + }, + { + "key": "panelpane-0484a988b07b8844", + "structure": "{\"height\":6,\"width\":4,\"x\":20,\"y\":1}" + }, + { + "key": "panelpane-59d508b6a02e1b47", + "structure": "{\"height\":6,\"width\":8,\"x\":8,\"y\":14}" + }, + { + "key": "panelpane-f2957042aa078a4c", + "structure": "{\"height\":6,\"width\":8,\"x\":0,\"y\":14}" + }, + { + "key": "panelpane-4b0d076ea131fb4f", + "structure": "{\"height\":6,\"width\":8,\"x\":0,\"y\":20}" + }, + { + "key": "panelpane-379759c691e78b41", + "structure": "{\"height\":6,\"width\":11,\"x\":0,\"y\":7}" + }, + { + "key": "panelpane-064f62b0b148db44", + "structure": "{\"height\":6,\"width\":8,\"x\":16,\"y\":20}" + }, + { + "key": "panelpane-c0cb88ffbad6eb42", + "structure": "{\"height\":6,\"width\":5,\"x\":0,\"y\":1}" + }, + { + "key": "panelpane-7180293892a2384f", + "structure": "{\"height\":6,\"width\":4,\"x\":16,\"y\":1}" + }, + { + "key": "panelPANE-4AD569BB8E29FA47", + "structure": "{\"height\":6,\"width\":6,\"x\":5,\"y\":1}" + }, + { + "key": "panelPANE-726F5B8B9BA0E847", + "structure": "{\"height\":1,\"width\":11,\"x\":0,\"y\":0}" + }, + { + "key": "panelPANE-9996244EB0D61943", + "structure": "{\"height\":1,\"width\":13,\"x\":11,\"y\":0}" + }, + { + "key": "panelPANE-FC51C131BE15BB4A", + "structure": "{\"height\":1,\"width\":24,\"x\":0,\"y\":13}" + }, + { + "key": "panelPANE-0E41F8F3ABA0DB49", + "structure": "{\"height\":6,\"width\":8,\"x\":16,\"y\":14}" + }, + { + "key": "panelPANE-84030AF0BE6C5A41", + "structure": "{\"height\":6,\"width\":8,\"x\":8,\"y\":20}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelpane-03afc899b83e3b40", + "title": "Average Write Capacity", + "visualSettings": "{\"general\":{\"type\":\"svp\"},\"svp\":{\"label\":\"% Write Capacity\",\"thresholds\":[{\"from\":0,\"to\":75,\"color\":\"#527b01\"},{\"from\":75,\"to\":85,\"color\":\"#b18209\"},{\"from\":85,\"to\":100,\"color\":\"#b63010\"}],\"option\":\"Average\",\"valueFontSize\":20,\"labelFontSize\":8,\"sparkline\":{\"show\":true,\"color\":\"#222D3B\"},\"gauge\":{\"show\":true}},\"hiddenQueryKeys\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "namespace={{namespace}} region={{region}} account={{account}} metric=AccountProvisionedWriteCapacityUtilization Statistic=Average | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-8e0495858ee4a94d", + "title": "User Errors", + "visualSettings": "{\"general\":{\"type\":\"svp\"},\"svp\":{\"option\":\"Sum\",\"valueFontSize\":24,\"thresholds\":[{\"from\":0,\"to\":1,\"color\":\"#527b01\"},{\"from\":1,\"to\":10,\"color\":\"#b18209\"},{\"from\":10,\"to\":null,\"color\":\"#b63010\"}],\"labelFontSize\":12,\"label\":\"User Errors\",\"sparkline\":{\"show\":true,\"color\":\"#222D3B\"},\"noDataString\":\"0\",\"rounding\":0}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "namespace={{namespace}} region={{region}} account={{account}} metric=UserErrors Statistic=SampleCount | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-3e2796b7b77b5940", + "title": "System Errors", + "visualSettings": "{\"general\":{\"type\":\"svp\"},\"svp\":{\"option\":\"Sum\",\"label\":\"System Errors\",\"thresholds\":[{\"from\":0,\"to\":1,\"color\":\"#527b01\"},{\"from\":1,\"to\":10,\"color\":\"#b18209\"},{\"from\":10,\"to\":null,\"color\":\"#b63010\"}],\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":12,\"noDataString\":\"0\",\"sparkline\":{\"show\":true,\"color\":\"\"}}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "namespace={{namespace}} region={{region}} account={{account}} metric=SystemErrors Statistic=SampleCount | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-e29e6cc9af5e4b42", + "title": "Conditional Check Fails", + "visualSettings": "{\"general\":{\"type\":\"svp\"},\"svp\":{\"option\":\"Sum\",\"label\":\"Check Fails\",\"thresholds\":[{\"from\":0,\"to\":10,\"color\":\"#527b01\"},{\"from\":10,\"to\":20,\"color\":\"#b18209\"},{\"from\":20,\"to\":null,\"color\":\"#b63010\"}],\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":12,\"noDataString\":\"0\",\"sparkline\":{\"show\":true,\"color\":\"\"}}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "namespace={{namespace}} region={{region}} account={{account}} tablename={{tablename}} metric=ConditionalCheckFailedRequests Statistic=SampleCount | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-0484a988b07b8844", + "title": "Transaction Conflicts", + "visualSettings": "{\"general\":{\"type\":\"svp\"},\"svp\":{\"option\":\"Sum\",\"label\":\"Conflicts\",\"thresholds\":[{\"from\":0,\"to\":1,\"color\":\"#527b01\"},{\"from\":1,\"to\":10,\"color\":\"#b18209\"},{\"from\":10,\"to\":null,\"color\":\"#b63010\"}],\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":12,\"noDataString\":\"0\",\"sparkline\":{\"show\":true,\"color\":\"\"}}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "namespace={{namespace}} region={{region}} account={{account}} tablename={{tablename}} metric=TransactionConflict Statistic=SampleCount | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-59d508b6a02e1b47", + "title": "Latency", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"axes\":{\"axisY\":{\"title\":\"MilliSeconds\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{tablename}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "namespace={{namespace}} region={{region}} account={{account}} tablename={{tablename}} metric=SuccessfulRequestLatency Statistic=Average | sum by account, region, namespace, tablename", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-f2957042aa078a4c", + "title": "Successful Requests Count", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"axes\":{\"axisY\":{\"title\":\"Requests\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{tablename}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "namespace={{namespace}} region={{region}} account={{account}} tablename={{tablename}} metric=SuccessfulRequestLatency Statistic=SampleCount | sum by account, region, namespace, tablename", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-4b0d076ea131fb4f", + "title": "User and System Errors", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Count\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"User Errors - {{Account}}\"}},{\"series\":[],\"queries\":[\"B\"],\"properties\":{\"name\":\"System Errors - {{Account}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "namespace={{namespace}} region={{region}} account={{account}} metric=UserErrors Statistic=SampleCount | sum by account, region, namespace", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "namespace={{namespace}} region={{region}} account={{account}} metric=SystemErrors Statistic=SampleCount | sum by account, region, namespace", + "queryType": "Metrics", + "queryKey": "B", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-379759c691e78b41", + "title": "Events Over Time", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"column\",\"displayType\":\"stacked\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"fillOpacity\":1,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Region={{region}} account={{account}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| timeslice 5m\n| count by EventName, _timeslice\n| transpose row _timeslice column EventName ", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-064f62b0b148db44", + "title": "Top 10 Errors", + "visualSettings": "{\"general\":{\"mode\":\"distribution\",\"type\":\"table\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Region={{region}} account={{account}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\" errorCode errorMessage\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\", \"errorCode\", \"errorMessage\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName, ErrorCode, ErrorMessage nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| count as Count by ErrorCode, ErrorMessage\n| sort by Count\n| limit 10", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-c0cb88ffbad6eb42", + "title": "Top 5 IAM Users", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"pie\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"fillOpacity\":1,\"startAngle\":270,\"innerRadius\":\"50%\",\"maxNumOfSlices\":10,\"mode\":\"distribution\"},\"legend\":{\"enabled\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} namespace={{namespace}} Region={{region}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| count as Count by UserName\n| sort Count \n| limit 5", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-7180293892a2384f", + "title": "Average Read Capacity", + "visualSettings": "{\"general\":{\"type\":\"svp\"},\"hiddenQueryKeys\":[\"B\"],\"svp\":{\"option\":\"Average\",\"label\":\"% Read Capacity\",\"thresholds\":[{\"from\":0,\"to\":75,\"color\":\"#527b01\"},{\"from\":75,\"to\":85,\"color\":\"#b18209\"},{\"from\":85,\"to\":100,\"color\":\"#b63010\"}],\"rounding\":2,\"valueFontSize\":20,\"labelFontSize\":8,\"noDataString\":\"\",\"sparkline\":{\"show\":true,\"color\":\"#222D3B\"},\"gauge\":{\"show\":true}}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "namespace={{namespace}} region={{region}} account={{account}} metric=AccountProvisionedReadCapacityUtilization Statistic=Average | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-4AD569BB8E29FA47", + "title": "Top 5 Events", + "visualSettings": "{\"general\":{\"mode\":\"distribution\",\"type\":\"pie\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"fillOpacity\":1,\"startAngle\":270,\"innerRadius\":\"50%\",\"maxNumOfSlices\":10},\"title\":{\"fontSize\":16},\"legend\":{\"enabled\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} namespace={{namespace}} Region={{region}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| count as count by EventName\n| sort count \n| limit 5", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-726F5B8B9BA0E847", + "title": "Untitled", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"showTitle\":false,\"backgroundColor\":\"#dfe5e9\",\"textColor\":\"#222d3b\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Table Events" + }, + { + "id": null, + "key": "panelPANE-9996244EB0D61943", + "title": "Untitled", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"showTitle\":false,\"textColor\":\"#222d3b\",\"backgroundColor\":\"#dfe5e9\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Performance" + }, + { + "id": null, + "key": "panelPANE-FC51C131BE15BB4A", + "title": "Untitled", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"text\":{\"backgroundColor\":\"#dfe5e9\",\"textColor\":\"#222d3b\",\"showTitle\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Latency and Errors" + }, + { + "id": null, + "key": "panelPANE-0E41F8F3ABA0DB49", + "title": "Throttled Requests", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Count\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{tablename}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "namespace={{namespace}} account={{account}} region={{region}} tablename={{tablename}} metric=ThrottledRequests Statistic=sum | sum by account, region, namespace, tablename", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-84030AF0BE6C5A41", + "title": "Conditional Check Fails", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Count\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{tablename}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} namespace={{namespace}} region={{region}} tablename={{tablename}} metric=ConditionalCheckFailedRequests Statistic=SampleCount | sum by account, region, namespace, tablename", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/dynamodb", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "tablename", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "tablename" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "2. AWS DynamoDB - Latency and Errors", + "description": "See the details of errors and latency of your DynamoDB including the user error, system error, failed request, and latency.", + "title": "2. AWS DynamoDB - Latency and Errors", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "namespace": [ + "aws/dynamodb" + ], + "tablename": [ + "*" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelpane-1c57082ea2a7b94a", + "structure": "{\"height\":9,\"width\":12,\"x\":0,\"y\":0}" + }, + { + "key": "panelpane-cb93c390b6c9e84c", + "structure": "{\"height\":9,\"width\":12,\"x\":12,\"y\":0}" + }, + { + "key": "panelpane-565f9477bb219b49", + "structure": "{\"height\":9,\"width\":12,\"x\":0,\"y\":9}" + }, + { + "key": "panelpane-2ddf6d7cac068a4a", + "structure": "{\"height\":9,\"width\":12,\"x\":12,\"y\":9}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelpane-1c57082ea2a7b94a", + "title": "Get Latency", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":1},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"MilliSeconds\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{operation}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "namespace={{namespace}} region={{region}} account={{account}} tablename={{tablename}} metric=SuccessfulRequestLatency Statistic=Average (operation=*get* or operation=*scan* or operation=*query*) | sum by account, region, namespace, tablename, operation", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-cb93c390b6c9e84c", + "title": "Put Latency", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":1},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"MilliSeconds\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{operation}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "namespace={{namespace}} region={{region}} account={{account}} tablename={{tablename}} metric=SuccessfulRequestLatency Statistic=Average (operation=*update* or operation=*put* or operation=*delete* or operation=*write*) | sum by account, region, namespace, tablename, operation", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-565f9477bb219b49", + "title": "Conditional Check Fail", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"column\",\"displayType\":\"default\",\"fillOpacity\":1,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Count\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"column\",\"name\":\"{{tablename}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} namespace={{namespace}} region={{region}} tablename={{tablename}} metric=ConditionalCheckFailedRequests Statistic=SampleCount | sum by account, region, namespace, tablename", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-2ddf6d7cac068a4a", + "title": "Transaction Conflict", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"column\",\"displayType\":\"default\",\"fillOpacity\":1,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Count\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"column\",\"name\":\"{{tablename}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} namespace={{namespace}} region={{region}} tablename={{tablename}} metric=TransactionConflict Statistic=SampleCount | sum by account, region, namespace, tablename", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/dynamodb", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "tablename", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "tablename" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "3. AWS DynamoDB - Events", + "description": "See the details on events in your DynamoDB including the location, users, errors, updates, creations, and deletions to tables.", + "title": "3. AWS DynamoDB - Events", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "namespace": [ + "aws/dynamodb" + ], + "tablename": [ + "*" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelpane-86e1f420a9e24948", + "structure": "{\"height\":6,\"width\":5,\"x\":8,\"y\":6}" + }, + { + "key": "panelpane-da8bb2b4afbc5948", + "structure": "{\"height\":6,\"width\":11,\"x\":13,\"y\":0}" + }, + { + "key": "panelpane-45b8f26c8c98fa45", + "structure": "{\"height\":6,\"width\":5,\"x\":8,\"y\":0}" + }, + { + "key": "panelpane-b8faa804b5a87b46", + "structure": "{\"height\":6,\"width\":11,\"x\":13,\"y\":6}" + }, + { + "key": "panelpane-4c0728c1af8c2a4c", + "structure": "{\"height\":6,\"width\":24,\"x\":0,\"y\":12}" + }, + { + "key": "panelpane-e435b2fb9dd53844", + "structure": "{\"height\":8,\"width\":24,\"x\":0,\"y\":18}" + }, + { + "key": "panelPANE-DE37191980FCE946", + "structure": "{\"height\":12,\"width\":8,\"x\":0,\"y\":0}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelpane-86e1f420a9e24948", + "title": "Top 5 Events", + "visualSettings": "{\"general\":{\"mode\":\"distribution\",\"type\":\"pie\",\"displayType\":\"default\",\"fillOpacity\":1,\"startAngle\":270,\"innerRadius\":50,\"maxNumOfSlices\":10},\"title\":{\"fontSize\":16},\"legend\":{\"enabled\":false},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} namespace={{namespace}} region={{region}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where tolowercase(tablename) matches tolowercase(\"{{tablename}}\")\n| count by EventName\n| sort by _count, EventName asc\n| limit 5", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-da8bb2b4afbc5948", + "title": "Events Over Time", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"column\",\"displayType\":\"stacked\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"fillOpacity\":1,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} namespace={{namespace}} region={{region}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\" as EventName, Region, tablename, SourceIp, UserName\n| where tolowercase(tablename) matches tolowercase(\"{{tablename}}\")\n| timeslice 5m\n| count by EventName, _timeslice\n| transpose row _timeslice column EventName \n| fillmissing timeslice (5m)", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-45b8f26c8c98fa45", + "title": "Total Errors", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Average\",\"label\":\"Errors\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":2,\"thresholds\":[{\"from\":0,\"to\":10,\"color\":\"#ffb5b5\"},{\"from\":10,\"to\":50,\"color\":\"#ff5d5d\"},{\"from\":50,\"to\":null,\"color\":\"#bf2121\"}],\"sparkline\":{\"show\":false,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false,\"min\":0,\"max\":100,\"showThreshold\":false,\"showThresholdMarker\":false},\"labelFontSize\":16},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} namespace={{namespace}} region={{region}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\" errorCode errorMessage\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\", \"errorCode\", \"errorMessage\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName, ErrorCode, ErrorMessage nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where tolowercase(tablename) matches tolowercase(\"{{tablename}}\") and !isEmpty(ErrorCode)\n| count", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-b8faa804b5a87b46", + "title": "Top 10 IAM Users", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"bar\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#ED3CPE\",\"outlierBandFillOpacity\":0.15,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"fillOpacity\":1,\"mode\":\"distribution\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\"}},\"legend\":{\"enabled\":false,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} namespace={{namespace}} region={{region}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where tolowercase(tablename) matches tolowercase(\"{{tablename}}\")\n| count as count by UserName\n| sort count \n| limit 10", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-4c0728c1af8c2a4c", + "title": "Top Errors", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"distribution\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} namespace={{namespace}} region={{region}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\" errorCode errorMessage\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\", \"errorCode\", \"errorMessage\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName, ErrorCode, ErrorMessage nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where tolowercase(tablename) matches tolowercase(\"{{tablename}}\") and !isEmpty(ErrorCode)\n| count as Count by ErrorCode, ErrorMessage, EventName, UserName, SourceIp\n| sort by Count\n| limit 20", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-e435b2fb9dd53844", + "title": "All Table Events", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"distribution\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} namespace={{namespace}} region={{region}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\", \"requestParameters.keySchema\", \"requestParameters.attributeDefinitions\", \"userAgent\", \"responseElements.tableDescription.provisionedThroughput\", \"userIdentity.sessionContext.attributes.mfaAuthenticated\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName, TableSchema, AttributeDefinition, UserAgent, ProvisionedThroughput, MFAAuthenticated nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where tolowercase(tablename) matches tolowercase(\"{{tablename}}\")\n| formatDate(_messageTime, \"MM/dd/yyyy HH:mm:ss:SSS\") as MessageDate\n| count as Count by MessageDate, EventName, tablename, UserName, SourceIp, MFAAuthenticated\n| sort by MessageDate\n| fields MessageDate, EventName, tablename, UserName, SourceIp, MFAAuthenticated", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-DE37191980FCE946", + "title": "All Events Location", + "visualSettings": "{\"general\":{\"mode\":\"map\",\"type\":\"map\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#ED3CPE\",\"outlierBandFillOpacity\":0.15,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} namespace={{namespace}} region={{region}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where tolowercase(tablename) matches tolowercase(\"{{tablename}}\")\n| count by SourceIp\n| lookup latitude, longitude, country_code, country_name, region, city, postal_code from geo://location on ip = SourceIp\n| count by latitude, longitude, country_code, country_name, region, city, postal_code", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/dynamodb", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "tablename", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "tablename" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "4. AWS DynamoDB - Threat Intel", + "description": "See the details of IP threats including the count, location, and highly malicious IP threats.", + "title": "4. AWS DynamoDB - Threat Intel", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "namespace": [ + "aws/dynamodb" + ], + "tablename": [ + "*" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelpane-3b762241ac0aba4d", + "structure": "{\"height\":6,\"width\":5,\"x\":8,\"y\":0}" + }, + { + "key": "panelpane-c08479a8a0390b4d", + "structure": "{\"height\":6,\"width\":16,\"x\":8,\"y\":6}" + }, + { + "key": "panelpane-b8ffc92b8b722a41", + "structure": "{\"height\":6,\"width\":24,\"x\":0,\"y\":12}" + }, + { + "key": "panelpane-c605d948852ffb48", + "structure": "{\"height\":6,\"width\":11,\"x\":13,\"y\":0}" + }, + { + "key": "panelPANE-A3CC89D8BF50F949", + "structure": "{\"height\":12,\"width\":8,\"x\":0,\"y\":0}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelpane-3b762241ac0aba4d", + "title": "All IP Threat Count", + "visualSettings": "{\"general\":{\"type\":\"svp\"},\"svp\":{\"option\":\"Sum\",\"label\":\"Threats\",\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"valueFontSize\":20,\"labelFontSize\":8,\"sparkline\":{\"show\":false,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false,\"min\":0,\"max\":100}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "region={{region}} account={{account}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where tolowercase(tablename) matches tolowercase(\"{{tablename}}\")\n| where SourceIp != \"0.0.0.0\" and SourceIp != \"127.0.0.1\"\n| count as ip_count by SourceIp\n| lookup type, actor, raw, threatlevel as malicious_confidence from sumo://threat/cs on threat=SourceIp \n| json field=raw \"labels[*].name\" as label_name \n| replace(label_name, \"\\\\/\",\"->\") as label_name\n| replace(label_name, \"\\\"\",\" \") as label_name\n| where type=\"ip_address\" and !isNull(malicious_confidence)\n| if (isEmpty(actor), \"Unassigned\", actor) as Actor\n| sum (ip_count) as threat_count", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-c08479a8a0390b4d", + "title": "Highly Malicious IP Threats Table", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"table\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "region={{region}} account={{account}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where tolowercase(tablename) matches tolowercase(\"{{tablename}}\")\n| where SourceIp != \"0.0.0.0\" and SourceIp != \"127.0.0.1\"\n| timeslice 5m\n| count as ip_count by SourceIp, tablename\n| lookup Type, Actor, Raw, ThreatLevel as MaliciousConfidence from sumo://threat/cs on threat=SourceIp \n| json field=Raw \"labels[*].name\" as LabelName \n| replace(LabelName, \"\\\\/\",\"->\") as LabelName\n| replace(LabelName, \"\\\"\",\" \") as LabelName\n| where type=\"ip_address\" and MaliciousConfidence=\"high\"\n| if (isEmpty(Actor), \"Unassigned\", Actor) as Actor\n| sum (ip_count) as ThreatCount by SourceIp, MaliciousConfidence, tablename, Actor, LabelName\n| sort by ThreatCount", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-b8ffc92b8b722a41", + "title": "All IP Threats Table", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"table\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "region={{region}} account={{account}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where tolowercase(tablename) matches tolowercase(\"{{tablename}}\")\n| where SourceIp != \"0.0.0.0\" and SourceIp != \"127.0.0.1\"\n| count as ip_count by SourceIp\n| lookup Type, Actor, Raw, ThreatLevel as MaliciousConfidence from sumo://threat/cs on threat=SourceIp \n| json field=Raw \"labels[*].name\" as LabelName \n| replace(LabelName, \"\\\\/\",\"->\") as LabelName\n| replace(LabelName, \"\\\"\",\" \") as LabelName\n| where type=\"ip_address\" and !isNull(MaliciousConfidence)\n| if (isEmpty(Actor), \"Unassigned\", Actor) as Actor\n| sum (ip_count) as ThreatCount by SourceIp, MaliciousConfidence, Actor, LabelName\n| sort by ThreatCount", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-c605d948852ffb48", + "title": "Malicious Confidence", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"bar\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"fillOpacity\":1,\"mode\":\"distribution\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "region={{region}} account={{account}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where tolowercase(tablename) matches tolowercase(\"{{tablename}}\")\n| where SourceIp != \"0.0.0.0\" and SourceIp != \"127.0.0.1\"\n| count as ip_count by SourceIp\n| lookup type, actor, raw, threatlevel as malicious_confidence from sumo://threat/cs on threat=SourceIp \n| json field=raw \"labels[*].name\" as label_name \n| replace(label_name, \"\\\\/\",\"->\") as label_name\n| replace(label_name, \"\\\"\",\" \") as label_name\n| where type=\"ip_address\"\n| if (isEmpty(actor), \"Unassigned\", actor) as Actor\n| count by malicious_confidence\n| sort by _count", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-A3CC89D8BF50F949", + "title": "Threat Locations", + "visualSettings": "{\"general\":{\"mode\":\"map\",\"type\":\"map\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#ED3CPE\",\"outlierBandFillOpacity\":0.15,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"map\":{\"layerType\":\"Cluster\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "region={{region}} account={{account}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"dynamodb.amazonaws.com\\\"\"\n| json \"eventName\", \"awsRegion\", \"requestParameters.tableName\", \"sourceIPAddress\", \"userIdentity.userName\", \"userIdentity.sessionContext.sessionIssuer.userName\" as EventName, Region, tablename, SourceIp, UserName, ContextUserName nodrop\n| if (isEmpty(UserName), ContextUserName, UserName) as UserName\n| where tolowercase(tablename) matches tolowercase(\"{{tablename}}\")\n| where SourceIp != \"0.0.0.0\" and SourceIp != \"127.0.0.1\"\n| count as ip_count by SourceIp\n| lookup type, actor, raw, threatlevel as malicious_confidence from sumo://threat/cs on threat=SourceIp \n| json field=raw \"labels[*].name\" as label_name \n| replace(label_name, \"\\\\/\",\"->\") as label_name\n| replace(label_name, \"\\\"\",\" \") as label_name\n| where type=\"ip_address\" and !isNull(malicious_confidence)\n| if (isEmpty(actor), \"Unassigned\", actor) as Actor\n| count by SourceIp\n| lookup latitude, longitude, country_code, country_name, region, city, postal_code from geo://location on ip = SourceIp\n| count by latitude, longitude, country_code, country_name, region, city, postal_code\n| where !isnull(latitude)", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/dynamodb", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "tablename", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "tablename" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + } + ], + "coloringRules": [] + } + ] +} \ No newline at end of file diff --git a/aws-observability-terraform/examples/aws-observability/json/EC2-Metrics-App.json b/aws-observability-terraform/examples/aws-observability/json/EC2-Metrics-App.json new file mode 100644 index 00000000..c6b64ac5 --- /dev/null +++ b/aws-observability-terraform/examples/aws-observability/json/EC2-Metrics-App.json @@ -0,0 +1,3241 @@ +{ + "type": "FolderSyncDefinition", + "name": "AWS EC2 Metrics", + "description": "The Sumo Logic App for AWS EC2 Metrics allows you to collect your EC2 instance metrics and display them using predefined search queries and Dashboards. The App provides Dashboards to display analysis of EC2 instance metrics for cpu, disk, memory, network.", + "children": [ + { + "type": "DashboardV2SyncDefinition", + "name": "1. AWS EC2 Metrics - Overview", + "description": "The AWS EC2 Metrics - Overview dashboard provides at-a-glance information about a EC2 CPU, memory, network and disk usage.", + "title": "1. AWS EC2 Metrics - Overview", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "namespace": [ + "aws/ec2" + ], + "region": [ + "*" + ], + "_sumo_domain_name": [ + "aws" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelpane-b03ffbbdb0b59b4d", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":24}" + }, + { + "key": "panelpane-73159cd48a30e84d", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":24}" + }, + { + "key": "panelpane-7c0398e384ef0b4b", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":30}" + }, + { + "key": "panelpane-2a01fd42b58b994e", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":30}" + }, + { + "key": "panelpane-21f9df3286d4d843", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":36}" + }, + { + "key": "panelpane-b0342f51a88b2a47", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":36}" + }, + { + "key": "panelpane-2f4529faa0fcc94e", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":42}" + }, + { + "key": "panelpane-909c4962a7e08843", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":42}" + }, + { + "key": "panelpane-33b218968b91a845", + "structure": "{\"height\":6,\"width\":5,\"x\":9,\"y\":12}" + }, + { + "key": "panelpane-481cfaaf957d7842", + "structure": "{\"height\":6,\"width\":5,\"x\":14,\"y\":12}" + }, + { + "key": "panelpane-d3677624bfee3b41", + "structure": "{\"height\":6,\"width\":5,\"x\":9,\"y\":18}" + }, + { + "key": "panelpane-cea7ffdeb458fb4e", + "structure": "{\"height\":6,\"width\":5,\"x\":14,\"y\":18}" + }, + { + "key": "panelpane-33ac098a81186b4e", + "structure": "{\"height\":6,\"width\":5,\"x\":19,\"y\":12}" + }, + { + "key": "panelpane-9d0a24618eef0a4e", + "structure": "{\"height\":6,\"width\":5,\"x\":19,\"y\":18}" + }, + { + "key": "panelpane-1e29da5dbd267a45", + "structure": "{\"height\":6,\"width\":9,\"x\":0,\"y\":12}" + }, + { + "key": "panelPANE-2061037A94244A4B", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":0}" + }, + { + "key": "panelPANE-DE8ED3CB8CEBF849", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":0}" + }, + { + "key": "panel2F40FE32B1ED8A48", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":6}" + }, + { + "key": "panel092B86A6AF75C942", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":6}" + }, + { + "key": "panelE292F5CA9886CA4E", + "structure": "{\"height\":6,\"width\":9,\"x\":0,\"y\":18}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelpane-b03ffbbdb0b59b4d", + "title": "Average CPU Idle per Instance Type", + "visualSettings": "{\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Average CPU Idle\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"{{InstanceType}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "metric=CPU_Idle account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} | avg by instanceType", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-73159cd48a30e84d", + "title": "Overall Average CPU Load (1m, 5m, 15m)", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Average CPU Load\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"1 Minute Average CPU Load\"}},{\"series\":[],\"queries\":[\"B\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"5 Minute Average CPU Load\"}},{\"series\":[],\"queries\":[\"C\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"15 Minute Average CPU Load\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=CPU_LoadAvg_1min | avg by metric", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=CPU_LoadAvg_5min | avg by metric", + "queryType": "Metrics", + "queryKey": "B", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=CPU_LoadAvg_15min | avg by metric", + "queryType": "Metrics", + "queryKey": "C", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-7c0398e384ef0b4b", + "title": "Total Free System Memory per Instance Type", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Free Memory\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"{{InstanceType}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=Mem_Free | sum by instanceType", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-2a01fd42b58b994e", + "title": "Total Used, Less Buffers and Cached Memory per Instance Type", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Used Memory\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"{{InstanceType}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=Mem_ActualUsed | sum by instanceType", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-21f9df3286d4d843", + "title": "Disk Used Bytes per Instance Type", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Disk Used Bytes\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"{{InstanceType}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=Disk_Used | sum by instanceType", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-b0342f51a88b2a47", + "title": "Disk Available Bytes per Instance Type", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"axes\":{\"axisY\":{\"title\":\"Disk Available Bytes\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"{{InstanceType}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=Disk_Available | sum by instanceType", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-2f4529faa0fcc94e", + "title": "Network InByte Rate per Instance Type", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Network InByte Rate\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"{{InstanceType}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=Net_InBytes | sum by instanceType | rate", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-909c4962a7e08843", + "title": "Network OutByte Rate per Instance Type", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"legend\":{\"wrap\":true,\"enabled\":true},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Network OutByte Rate\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"{{InstanceType}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=Net_OutBytes | sum by instanceType | rate", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-33b218968b91a845", + "title": "Average CPU Utilization", + "visualSettings": "{\"general\":{\"type\":\"svp\"},\"svp\":{\"thresholds\":[{\"from\":0,\"to\":75,\"color\":\"#527b01\"},{\"from\":75,\"to\":85,\"color\":\"#b18209\"},{\"from\":85,\"to\":101,\"color\":\"#b63010\"}],\"sparkline\":{\"show\":false},\"gauge\":{\"show\":true},\"label\":\"% CPU Usage\",\"valueFontSize\":20,\"option\":\"Average\",\"labelFontSize\":8},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "metric=CPU_Total account={{account}} region={{region}} namespace={{namespace}} instanceid={{instanceid}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-481cfaaf957d7842", + "title": "Average Memory Usage", + "visualSettings": "{\"general\":{\"type\":\"svp\"},\"svp\":{\"option\":\"Average\",\"label\":\"% Memory Usage\",\"thresholds\":[{\"from\":0,\"to\":75,\"color\":\"#527b01\"},{\"from\":75,\"to\":85,\"color\":\"#b18209\"},{\"from\":85,\"to\":101,\"color\":\"#b63010\"}],\"valueFontSize\":20,\"labelFontSize\":8,\"sparkline\":{\"show\":true,\"color\":\"#222D3B\"},\"gauge\":{\"show\":true}}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "metric= Mem_UsedPercent account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-d3677624bfee3b41", + "title": "Average Inbound Connection", + "visualSettings": "{\"general\":{\"type\":\"svp\"},\"svp\":{\"option\":\"Average\",\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"label\":\"Connections\",\"valueFontSize\":24,\"labelFontSize\":16,\"sparkline\":{\"show\":true,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false,\"min\":0,\"max\":100},\"rounding\":0}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "metric= TCP_InboundTotal account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-cea7ffdeb458fb4e", + "title": "Average Outbound Connections", + "visualSettings": "{\"general\":{\"type\":\"svp\"},\"svp\":{\"label\":\"Connections\",\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"valueFontSize\":24,\"labelFontSize\":16,\"sparkline\":{\"show\":true,\"color\":\"\"},\"rounding\":0}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "metric= TCP_OutboundTotal account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-33ac098a81186b4e", + "title": "Average Received Bytes", + "visualSettings": "{\"general\":{\"type\":\"svp\"},\"svp\":{\"label\":\"MB\",\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"valueFontSize\":24,\"labelFontSize\":16,\"sparkline\":{\"show\":true,\"color\":\"\"}}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "metric= Net_InBytes account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} | avg | eval _value/1024/1024", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-9d0a24618eef0a4e", + "title": "Average Sent Bytes", + "visualSettings": "{\"general\":{\"type\":\"svp\"},\"svp\":{\"label\":\"MB\",\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"valueFontSize\":24,\"labelFontSize\":16,\"sparkline\":{\"show\":true,\"color\":\"\"}}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "metric= Net_OutBytes account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} | avg | eval _value/1024/1024", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-1e29da5dbd267a45", + "title": "Instance Types", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"pie\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#ED3CPE\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"fillOpacity\":1,\"startAngle\":270,\"innerRadius\":\"50%\",\"maxNumOfSlices\":10,\"mode\":\"distribution\",\"aggregationType\":\"latest\"},\"legend\":{\"enabled\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "metric=CPU_Sys account={{account}} region={{region}} namespace={{namespace}} instanceid={{instanceid}} | eval(_value/_value) | quantize to 60m using count | count by instancetype", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-2061037A94244A4B", + "title": "Instances with High CPU Utilization", + "visualSettings": "{\"general\":{\"mode\":\"honeyComb\",\"type\":\"honeyComb\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"honeyComb\":{\"thresholds\":[{\"from\":0,\"to\":60,\"color\":\"#28aa55\"},{\"from\":60,\"to\":85,\"color\":\"#f6c851\"},{\"from\":85,\"to\":101,\"color\":\"#f36644\"}],\"shape\":\"hexagon\",\"groupBy\":[],\"aggregationType\":\"latest\"},\"title\":{\"fontSize\":16},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "metric=CPU_Total account={{account}} region={{region}} namespace={{namespace}} instanceid={{instanceid}} | filter latest > 75 | sum by account, region, namespace, instanceid", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-DE8ED3CB8CEBF849", + "title": "Instances with High Memory Utilization", + "visualSettings": "{\"general\":{\"mode\":\"honeyComb\",\"type\":\"honeyComb\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"honeyComb\":{\"thresholds\":[{\"from\":0,\"to\":60,\"color\":\"#75bf00\"},{\"from\":60,\"to\":85,\"color\":\"#f6c851\"},{\"from\":85,\"to\":101,\"color\":\"#f36644\"}],\"shape\":\"hexagon\",\"groupBy\":[],\"aggregationType\":\"latest\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "metric= Mem_UsedPercent account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} | filter latest > 75 | sum by account, region, namespace, instanceid", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel2F40FE32B1ED8A48", + "title": "Instances with Low CPU Utilization", + "visualSettings": "{\"general\":{\"mode\":\"honeyComb\",\"type\":\"honeyComb\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"honeyComb\":{\"thresholds\":[{\"from\":0,\"to\":6,\"color\":\"#28aa55\"},{\"from\":6,\"to\":11,\"color\":\"#f6c851\"},{\"from\":11,\"to\":null,\"color\":\"#f36644\"}],\"shape\":\"hexagon\",\"groupBy\":[],\"aggregationType\":\"latest\"},\"title\":{\"fontSize\":16},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "metric=CPU_Total account={{account}} region={{region}} namespace={{namespace}} instanceid={{instanceid}} | filter latest <= 10 | sum by account, region, namespace, instanceid", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel092B86A6AF75C942", + "title": "Instances with Low Memory Utilization", + "visualSettings": "{\"general\":{\"mode\":\"honeyComb\",\"type\":\"honeyComb\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\"},\"title\":{\"fontSize\":16},\"honeyComb\":{\"thresholds\":[{\"from\":0,\"to\":6,\"color\":\"#75bf00\"},{\"from\":6,\"to\":11,\"color\":\"#f6c851\"},{\"from\":11,\"to\":null,\"color\":\"#f36644\"}],\"shape\":\"hexagon\",\"groupBy\":[],\"aggregationType\":\"latest\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "metric= Mem_UsedPercent account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} | filter latest <= 10 | sum by account, region, namespace, instanceid", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelE292F5CA9886CA4E", + "title": "Average CPU Utilization by Instance Type", + "visualSettings": "{\"title\":{\"fontSize\":16},\"legend\":{\"enabled\":false},\"series\":{},\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"distribution\",\"decimals\":2},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"Avg CPU Utilization\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "metric=CPU_Total account={{account}} region={{region}} namespace={{namespace}} | avg by instancetype | topk(25, avg)", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/ec2", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "instanceid", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "instanceid" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "1. AWS EC2 Metrics - Summary", + "description": "The AWS EC2 Metrics - Summary dashboard provides at-a-glance information about a EC2 CPU, memory, network and disk usage.", + "title": "1. AWS EC2 Metrics - Summary", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "instanceid": [ + "*" + ], + "namespace": [ + "aws/ec2" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelpane-b03ffbbdb0b59b4d", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":5}" + }, + { + "key": "panelpane-73159cd48a30e84d", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":5}" + }, + { + "key": "panelpane-7c0398e384ef0b4b", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":11}" + }, + { + "key": "panelpane-2a01fd42b58b994e", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":11}" + }, + { + "key": "panelpane-21f9df3286d4d843", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":17}" + }, + { + "key": "panelpane-b0342f51a88b2a47", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":17}" + }, + { + "key": "panelpane-909c4962a7e08843", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":23}" + }, + { + "key": "panelpane-33b218968b91a845", + "structure": "{\"height\":5,\"width\":4,\"x\":0,\"y\":0}" + }, + { + "key": "panelpane-481cfaaf957d7842", + "structure": "{\"height\":5,\"width\":4,\"x\":4,\"y\":0}" + }, + { + "key": "panelpane-d3677624bfee3b41", + "structure": "{\"height\":5,\"width\":4,\"x\":16,\"y\":0}" + }, + { + "key": "panelpane-cea7ffdeb458fb4e", + "structure": "{\"height\":5,\"width\":4,\"x\":20,\"y\":0}" + }, + { + "key": "panelpane-33ac098a81186b4e", + "structure": "{\"height\":5,\"width\":4,\"x\":8,\"y\":0}" + }, + { + "key": "panelpane-9d0a24618eef0a4e", + "structure": "{\"height\":5,\"width\":4,\"x\":12,\"y\":0}" + }, + { + "key": "panel92B3F2A48B5DCA4F", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":23}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelpane-b03ffbbdb0b59b4d", + "title": "CPU Idle Time", + "visualSettings": "{\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Average CPU Idle\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"{{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "metric=CPU_Idle account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} | sum by account, region, namespace, instanceid", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-73159cd48a30e84d", + "title": "Overall Average CPU Load (1m, 5m, 15m)", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Average CPU Load\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"1 Minute Average CPU Load\"}},{\"series\":[],\"queries\":[\"B\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"5 Minute Average CPU Load\"}},{\"series\":[],\"queries\":[\"C\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"15 Minute Average CPU Load\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=CPU_LoadAvg_1min | avg by metric", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=CPU_LoadAvg_5min | avg by metric", + "queryType": "Metrics", + "queryKey": "B", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=CPU_LoadAvg_15min | avg by metric", + "queryType": "Metrics", + "queryKey": "C", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-7c0398e384ef0b4b", + "title": "Total Free System Memory", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Free Memory\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"{{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=Mem_Free | sum by account, region, namespace, instanceid", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-2a01fd42b58b994e", + "title": "Total Used, Less Buffers and Cached Memory", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Used Memory\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"{{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=Mem_ActualUsed | sum by account, region, namespace, instanceid", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-21f9df3286d4d843", + "title": "Disk Used Bytes", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Disk Used Bytes\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"instanceid={{instanceid}} dirname={{dirname}} devname={{devname}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=Disk_Used | sum by account, region, namespace, instanceid, dirname, devname", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-b0342f51a88b2a47", + "title": "Disk Available Bytes", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"axes\":{\"axisY\":{\"title\":\"Disk Available Bytes\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"instanceid={{instanceid}} dirname={{dirname}} devname={{devname}}\"}}],\"color\":{\"family\":\"scheme7\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=Disk_Available | sum by account, region, namespace, instanceid, dirname, devname", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-909c4962a7e08843", + "title": "Network OutByte Rate", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"legend\":{\"wrap\":true,\"enabled\":true},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Network OutByte Rate\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"{{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=Net_OutBytes | sum by instanceid | rate", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-33b218968b91a845", + "title": "CPU Utilization", + "visualSettings": "{\"general\":{\"type\":\"svp\"},\"svp\":{\"thresholds\":[{\"from\":0,\"to\":75,\"color\":\"#527b01\"},{\"from\":75,\"to\":85,\"color\":\"#b18209\"},{\"from\":85,\"to\":101,\"color\":\"#b63010\"}],\"sparkline\":{\"show\":true,\"color\":\"#222D3B\"},\"gauge\":{\"show\":true,\"min\":0,\"max\":100},\"label\":\"% CPU Usage\",\"valueFontSize\":20,\"option\":\"Average\",\"labelFontSize\":8},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "metric=CPU_Total account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-481cfaaf957d7842", + "title": "Memory Usage", + "visualSettings": "{\"general\":{\"type\":\"svp\"},\"svp\":{\"option\":\"Average\",\"label\":\"% Memory Usage\",\"thresholds\":[{\"from\":0,\"to\":75,\"color\":\"#527b01\"},{\"from\":75,\"to\":85,\"color\":\"#b18209\"},{\"from\":85,\"to\":101,\"color\":\"#b63010\"}],\"valueFontSize\":20,\"labelFontSize\":8,\"sparkline\":{\"show\":true,\"color\":\"#222D3B\"},\"gauge\":{\"show\":true}}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "metric= Mem_UsedPercent account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-d3677624bfee3b41", + "title": "Inbound Connection", + "visualSettings": "{\"general\":{\"type\":\"svp\"},\"svp\":{\"option\":\"Average\",\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"label\":\"Connections\",\"valueFontSize\":24,\"labelFontSize\":16,\"sparkline\":{\"show\":true,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false,\"min\":0,\"max\":100},\"rounding\":0}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "metric= TCP_InboundTotal account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-cea7ffdeb458fb4e", + "title": "Outbound Connections", + "visualSettings": "{\"general\":{\"type\":\"svp\"},\"svp\":{\"label\":\"Connections\",\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"valueFontSize\":24,\"labelFontSize\":16,\"sparkline\":{\"show\":true,\"color\":\"\"},\"rounding\":0}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "metric= TCP_OutboundTotal account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-33ac098a81186b4e", + "title": "Received Bytes", + "visualSettings": "{\"general\":{\"type\":\"svp\"},\"svp\":{\"label\":\"MB\",\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"valueFontSize\":24,\"labelFontSize\":16,\"sparkline\":{\"show\":true,\"color\":\"\"},\"rounding\":1}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "metric= Net_InBytes account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} | avg | eval _value/1024/1024", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-9d0a24618eef0a4e", + "title": "Sent Bytes", + "visualSettings": "{\"general\":{\"type\":\"svp\"},\"svp\":{\"label\":\"MB\",\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"valueFontSize\":24,\"labelFontSize\":16,\"sparkline\":{\"show\":true,\"color\":\"\"},\"rounding\":1}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "metric= Net_OutBytes account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} | avg | eval _value/1024/1024", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel92B3F2A48B5DCA4F", + "title": "Network InByte Rate", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Network InByte Rate\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"{{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=Net_InBytes | sum by instanceid | rate", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/ec2", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "instanceid", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "instanceid" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "2. AWS EC2 Metrics - CPU", + "description": "The AWS EC2 Metrics - CPU dashboard provides details information about a EC2 CPU usage.", + "title": "2. AWS EC2 Metrics - CPU", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "instanceid": [ + "*" + ], + "namespace": [ + "aws/ec2" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelpane-b8fdf6e2b8c1d843", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":0}" + }, + { + "key": "panelpane-faa47ec2a6e5d947", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":6}" + }, + { + "key": "panelpane-c59320268cdb7a49", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":0}" + }, + { + "key": "panelpane-88f4336192c38b49", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":18}" + }, + { + "key": "panelpane-373635dab1b6b944", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":18}" + }, + { + "key": "panelpane-1902994c9e385941", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":6}" + }, + { + "key": "panelpane-29ddbf5e98aa884e", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":12}" + }, + { + "key": "panelpane-46c987c099bacb4c", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":12}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelpane-b8fdf6e2b8c1d843", + "title": "CPU User Time", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Percentage\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"{{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=CPU_User | sum by account, region, namespace, instanceid", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-faa47ec2a6e5d947", + "title": "CPU Nice Time", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Percentage\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"{{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=CPU_Nice | sum by account, region, namespace, instanceid", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-c59320268cdb7a49", + "title": "CPU Kernel Time", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Percentage\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=CPU_Sys | sum by account, region, namespace, instanceid", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-88f4336192c38b49", + "title": "CPU Time Servicing Interrupts", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Percentage\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"{{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=CPU_Irq | sum by account, region, namespace, instanceid", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-373635dab1b6b944", + "title": "CPU Time Servicing SoftIrqs", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Percentage\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"{{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric= CPU_SoftIrq | sum by account, region, namespace, instanceid", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-1902994c9e385941", + "title": "CPU Idle Time", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Percentage\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"{{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=CPU_Idle | sum by account, region, namespace, instanceid", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-29ddbf5e98aa884e", + "title": "CPU Involuntary Wait Time", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Percentage\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"{{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric= CPU_Stolen | sum by account, region, namespace, instanceid", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-46c987c099bacb4c", + "title": "CPU IO Wait Time", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Percentage\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"{{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=CPU_IOWait | sum by account, region, namespace, instanceid", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/ec2", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "instanceid", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "instanceid" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "3. AWS EC2 - Events", + "description": "The AWS EC2 Metrics - Audit Event Overview dashboard provides detailed insights into all events associated with EC2 instances and specifically helps identify changes, errors, and users", + "title": "3. AWS EC2 - Events", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "namespace": [ + "aws/ec2" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelPANE-9A6827ADAFD40B48", + "structure": "{\"height\":8,\"width\":6,\"x\":0,\"y\":10}" + }, + { + "key": "panel808FD9FD8BFB6846", + "structure": "{\"height\":6,\"width\":6,\"x\":0,\"y\":32}" + }, + { + "key": "panelPANE-F6D67170A3207848", + "structure": "{\"height\":10,\"width\":12,\"x\":0,\"y\":0}" + }, + { + "key": "panelPANE-55BA9CD690905848", + "structure": "{\"height\":5,\"width\":12,\"x\":12,\"y\":18}" + }, + { + "key": "panelE1BCBDE685FB3944", + "structure": "{\"height\":6,\"width\":6,\"x\":0,\"y\":39}" + }, + { + "key": "panelPANE-4D66006086774A44", + "structure": "{\"height\":8,\"width\":6,\"x\":6,\"y\":10}" + }, + { + "key": "panelPANE-829F6ADB86227949", + "structure": "{\"height\":6,\"width\":18,\"x\":6,\"y\":39}" + }, + { + "key": "panel1DA5F9AA9C03F945", + "structure": "{\"height\":6,\"width\":18,\"x\":6,\"y\":32}" + }, + { + "key": "panelPANE-C6B1C1249FED294C", + "structure": "{\"height\":8,\"width\":9,\"x\":6,\"y\":23}" + }, + { + "key": "panel422C79CD944AC840", + "structure": "{\"height\":8,\"width\":6,\"x\":18,\"y\":10}" + }, + { + "key": "panelB86F7C84926F1844", + "structure": "{\"height\":8,\"width\":6,\"x\":12,\"y\":10}" + }, + { + "key": "panelABB275868F4B2A44", + "structure": "{\"height\":5,\"width\":12,\"x\":0,\"y\":18}" + }, + { + "key": "panelA10E415491CA1B4F", + "structure": "{\"height\":8,\"width\":6,\"x\":0,\"y\":23}" + }, + { + "key": "panelPANE-4B95C387A7D03B47", + "structure": "{\"height\":6,\"width\":24,\"x\":0,\"y\":45}" + }, + { + "key": "panelF999E9E5A6591B41", + "structure": "{\"height\":10,\"width\":12,\"x\":12,\"y\":0}" + }, + { + "key": "panelC8228A47A6D3DA4D", + "structure": "{\"height\":8,\"width\":9,\"x\":15,\"y\":23}" + }, + { + "key": "panelPANE-4022F95385542A46", + "structure": "{\"height\":1,\"width\":24,\"x\":0,\"y\":31}" + }, + { + "key": "panelD9E5828D86D12941", + "structure": "{\"height\":1,\"width\":24,\"x\":0,\"y\":38}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelPANE-9A6827ADAFD40B48", + "title": "Event Status", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"pie\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"fillOpacity\":1,\"startAngle\":270,\"innerRadius\":\"50%\",\"maxNumOfSlices\":10,\"mode\":\"distribution\"},\"series\":{},\"legend\":{\"enabled\":false},\"overrides\":[{\"series\":[\"Success\"],\"queries\":[],\"properties\":{\"color\":\"#75bf00\"}},{\"series\":[\"Failure\"],\"queries\":[],\"properties\":{\"color\":\"#f36644\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} eventname eventsource \"ec2.amazonaws.com\"\n| json \"eventSource\", \"awsRegion\", \"requestParameters\", \"responseElements\", \"recipientAccountId\" as event_source, region, requestParameters, responseElements, accountid nodrop\n| json \"userIdentity\", \"eventName\", \"sourceIPAddress\", \"userAgent\", \"eventType\", \"requestID\", \"errorCode\", \"errorMessage\", \"eventCategory\", \"managementEvent\" as userIdentity, event_name, src_ip, user_agent, event_type, request_id, error_code, error_message, event_category, management_event nodrop\n| where event_source = \"ec2.amazonaws.com\"\n| \"aws/ec2\" as namespace\n| json field=userIdentity \"type\", \"principalId\", \"arn\", \"userName\", \"accountId\" nodrop\n| json field=userIdentity \"sessionContext.attributes.mfaAuthenticated\" as mfaAuthenticated nodrop\n| parse field=arn \":assumed-role/*\" as user nodrop \n| parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"instanceType\", \"instancesSet\", \"instanceId\", \"DescribeInstanceCreditSpecificationsRequest.InstanceId.content\" as req_instancetype, req_instancesSet, req_instanceid_1, req_instanceid_2 nodrop\n| json field=req_instancesSet \"item\", \"items\" as req_instancesSet_item, req_instancesSet_items nodrop\n| parse regex field=req_instancesSet_item \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| parse regex field=req_instancesSet_items \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| json field=responseElements \"instancesSet.items\" as res_responseElements_items nodrop\n| parse regex field=res_responseElements_items \"\\\"instanceType\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| parse regex field=res_responseElements_items \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| if (!isBlank(req_instanceid_1), req_instanceid_1, if (!isBlank(req_instanceid_2), req_instanceid_2, if (!isBlank(req_instanceid_3), req_instanceid_3, if (!isBlank(req_instanceid_4), req_instanceid_4, \"\")))) as req_instanceid\n| if (!isBlank(req_instanceid), req_instanceid, res_instanceid) as instanceid\n| if (!isBlank(req_instancetype), req_instancetype, res_instancetype) as instanceType \n| if (isEmpty(error_code), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| tolowercase(instanceid) as instanceid\n| count by eventStatus\n| sort by _count, eventStatus asc", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel808FD9FD8BFB6846", + "title": "Successful Events", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"pie\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"fillOpacity\":1,\"startAngle\":270,\"innerRadius\":\"50%\",\"maxNumOfSlices\":10,\"mode\":\"distribution\"},\"series\":{},\"legend\":{\"enabled\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} eventname eventsource \"ec2.amazonaws.com\" !errorCode\n| json \"eventSource\", \"awsRegion\", \"requestParameters\", \"responseElements\", \"recipientAccountId\" as event_source, region, requestParameters, responseElements, accountid nodrop\n| json \"userIdentity\", \"eventName\", \"sourceIPAddress\", \"userAgent\", \"eventType\", \"requestID\", \"errorCode\", \"errorMessage\", \"eventCategory\", \"managementEvent\" as userIdentity, event_name, src_ip, user_agent, event_type, request_id, error_code, error_message, event_category, management_event nodrop\n| where event_source = \"ec2.amazonaws.com\"\n| \"aws/ec2\" as namespace\n| json field=userIdentity \"type\", \"principalId\", \"arn\", \"userName\", \"accountId\" nodrop\n| json field=userIdentity \"sessionContext.attributes.mfaAuthenticated\" as mfaAuthenticated nodrop\n| parse field=arn \":assumed-role/*\" as user nodrop \n| parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"instanceType\", \"instancesSet\", \"instanceId\", \"DescribeInstanceCreditSpecificationsRequest.InstanceId.content\" as req_instancetype, req_instancesSet, req_instanceid_1, req_instanceid_2 nodrop\n| json field=req_instancesSet \"item\", \"items\" as req_instancesSet_item, req_instancesSet_items nodrop\n| parse regex field=req_instancesSet_item \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| parse regex field=req_instancesSet_items \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| json field=responseElements \"instancesSet.items\" as res_responseElements_items nodrop\n| parse regex field=res_responseElements_items \"\\\"instanceType\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| parse regex field=res_responseElements_items \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| if (!isBlank(req_instanceid_1), req_instanceid_1, if (!isBlank(req_instanceid_2), req_instanceid_2, if (!isBlank(req_instanceid_3), req_instanceid_3, if (!isBlank(req_instanceid_4), req_instanceid_4, \"\")))) as req_instanceid\n| if (!isBlank(req_instanceid), req_instanceid, res_instanceid) as instanceid\n| if (!isBlank(req_instancetype), req_instancetype, res_instancetype) as instanceType \n| if (isEmpty(error_code), \"Success\", \"Failure\") as eventStatus\n| where isBlank(error_code)\n| if (isEmpty(userName), user, userName) as user\n| tolowercase(instanceid) as instanceid\n| count by event_name\n| sort by _count, event_name asc", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-F6D67170A3207848", + "title": "Successful Event Locations", + "visualSettings": "{\"general\":{\"mode\":\"map\",\"type\":\"map\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} eventname eventsource \"ec2.amazonaws.com\" sourceIPAddress !errorCode\n| json \"eventSource\", \"awsRegion\", \"requestParameters\", \"responseElements\", \"recipientAccountId\" as event_source, region, requestParameters, responseElements, accountid nodrop\n| json \"userIdentity\", \"eventName\", \"sourceIPAddress\", \"userAgent\", \"eventType\", \"requestID\", \"errorCode\", \"errorMessage\", \"eventCategory\", \"managementEvent\" as userIdentity, event_name, src_ip, user_agent, event_type, request_id, error_code, error_message, event_category, management_event nodrop\n| where event_source = \"ec2.amazonaws.com\"\n| \"aws/ec2\" as namespace\n| json field=userIdentity \"type\", \"principalId\", \"arn\", \"userName\", \"accountId\" nodrop\n| json field=userIdentity \"sessionContext.attributes.mfaAuthenticated\" as mfaAuthenticated nodrop\n| parse field=arn \":assumed-role/*\" as user nodrop \n| parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"instanceType\", \"instancesSet\", \"instanceId\", \"DescribeInstanceCreditSpecificationsRequest.InstanceId.content\" as req_instancetype, req_instancesSet, req_instanceid_1, req_instanceid_2 nodrop\n| json field=req_instancesSet \"item\", \"items\" as req_instancesSet_item, req_instancesSet_items nodrop\n| parse regex field=req_instancesSet_item \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| parse regex field=req_instancesSet_items \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| json field=responseElements \"instancesSet.items\" as res_responseElements_items nodrop\n| parse regex field=res_responseElements_items \"\\\"instanceType\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| parse regex field=res_responseElements_items \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| if (!isBlank(req_instanceid_1), req_instanceid_1, if (!isBlank(req_instanceid_2), req_instanceid_2, if (!isBlank(req_instanceid_3), req_instanceid_3, if (!isBlank(req_instanceid_4), req_instanceid_4, \"\")))) as req_instanceid\n| if (!isBlank(req_instanceid), req_instanceid, res_instanceid) as instanceid\n| if (!isBlank(req_instancetype), req_instancetype, res_instancetype) as instanceType \n| if (isEmpty(error_code), \"Success\", \"Failure\") as eventStatus\n| where isEmpty(error_code)\n| if (isEmpty(userName), user, userName) as user\n| tolowercase(instanceid) as instanceid\n| count by src_ip\n| lookup latitude, longitude, country_code, country_name, region, city, postal_code from geo://location on ip = src_ip\n| where !isNull(latitude)", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-55BA9CD690905848", + "title": "Events Types Trend", + "visualSettings": "{\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"overrides\":[],\"series\":{},\"general\":{\"type\":\"line\",\"displayType\":\"default\",\"markerSize\":5,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":1,\"mode\":\"timeSeries\"},\"color\":{\"family\":\"Categorical Default\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} eventname eventsource \"ec2.amazonaws.com\"\n| json \"eventSource\", \"awsRegion\", \"requestParameters\", \"responseElements\", \"recipientAccountId\" as event_source, region, requestParameters, responseElements, accountid nodrop\n| json \"userIdentity\", \"eventName\", \"sourceIPAddress\", \"userAgent\", \"eventType\", \"requestID\", \"errorCode\", \"errorMessage\", \"eventCategory\", \"managementEvent\" as userIdentity, event_name, src_ip, user_agent, event_type, request_id, error_code, error_message, event_category, management_event nodrop\n| where event_source = \"ec2.amazonaws.com\"\n| \"aws/ec2\" as namespace\n| json field=userIdentity \"type\", \"principalId\", \"arn\", \"userName\", \"accountId\" nodrop\n| json field=userIdentity \"sessionContext.attributes.mfaAuthenticated\" as mfaAuthenticated nodrop\n| parse field=arn \":assumed-role/*\" as user nodrop \n| parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"instanceType\", \"instancesSet\", \"instanceId\", \"DescribeInstanceCreditSpecificationsRequest.InstanceId.content\" as req_instancetype, req_instancesSet, req_instanceid_1, req_instanceid_2 nodrop\n| json field=req_instancesSet \"item\", \"items\" as req_instancesSet_item, req_instancesSet_items nodrop\n| parse regex field=req_instancesSet_item \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| parse regex field=req_instancesSet_items \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| json field=responseElements \"instancesSet.items\" as res_responseElements_items nodrop\n| parse regex field=res_responseElements_items \"\\\"instanceType\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| parse regex field=res_responseElements_items \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| if (!isBlank(req_instanceid_1), req_instanceid_1, if (!isBlank(req_instanceid_2), req_instanceid_2, if (!isBlank(req_instanceid_3), req_instanceid_3, if (!isBlank(req_instanceid_4), req_instanceid_4, \"\")))) as req_instanceid\n| if (!isBlank(req_instanceid), req_instanceid, res_instanceid) as instanceid\n| if (!isBlank(req_instancetype), req_instancetype, res_instancetype) as instanceType \n| if (isEmpty(error_code), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| tolowercase(instanceid) as instanceid\n| timeslice 1h\n| count by _timeslice, event_name\n| transpose row _timeslice column event_name", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelE1BCBDE685FB3944", + "title": "Failed Events", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"pie\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"fillOpacity\":1,\"startAngle\":270,\"innerRadius\":\"50%\",\"maxNumOfSlices\":10,\"mode\":\"distribution\"},\"series\":{},\"legend\":{\"enabled\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} eventname eventsource \"ec2.amazonaws.com\" errorCode\n| json \"eventSource\", \"awsRegion\", \"requestParameters\", \"responseElements\", \"recipientAccountId\" as event_source, region, requestParameters, responseElements, accountid nodrop\n| json \"userIdentity\", \"eventName\", \"sourceIPAddress\", \"userAgent\", \"eventType\", \"requestID\", \"errorCode\", \"errorMessage\", \"eventCategory\", \"managementEvent\" as userIdentity, event_name, src_ip, user_agent, event_type, request_id, error_code, error_message, event_category, management_event nodrop\n| where event_source = \"ec2.amazonaws.com\"\n| \"aws/ec2\" as namespace\n| json field=userIdentity \"type\", \"principalId\", \"arn\", \"userName\", \"accountId\" nodrop\n| json field=userIdentity \"sessionContext.attributes.mfaAuthenticated\" as mfaAuthenticated nodrop\n| parse field=arn \":assumed-role/*\" as user nodrop \n| parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"instanceType\", \"instancesSet\", \"instanceId\", \"DescribeInstanceCreditSpecificationsRequest.InstanceId.content\" as req_instancetype, req_instancesSet, req_instanceid_1, req_instanceid_2 nodrop\n| json field=req_instancesSet \"item\", \"items\" as req_instancesSet_item, req_instancesSet_items nodrop\n| parse regex field=req_instancesSet_item \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| parse regex field=req_instancesSet_items \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| json field=responseElements \"instancesSet.items\" as res_responseElements_items nodrop\n| parse regex field=res_responseElements_items \"\\\"instanceType\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| parse regex field=res_responseElements_items \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| if (!isBlank(req_instanceid_1), req_instanceid_1, if (!isBlank(req_instanceid_2), req_instanceid_2, if (!isBlank(req_instanceid_3), req_instanceid_3, if (!isBlank(req_instanceid_4), req_instanceid_4, \"\")))) as req_instanceid\n| if (!isBlank(req_instanceid), req_instanceid, res_instanceid) as instanceid\n| if (!isBlank(req_instancetype), req_instancetype, res_instancetype) as instanceType \n| if (isEmpty(error_code), \"Success\", \"Failure\") as eventStatus\n| where !isEmpty(error_code)\n| if (isEmpty(userName), user, userName) as user\n| tolowercase(instanceid) as instanceid\n| count by event_name\n| sort by _count, event_name asc", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-4D66006086774A44", + "title": "Top 10 Error Codes", + "visualSettings": "{\"title\":{\"fontSize\":16},\"series\":{},\"legend\":{\"enabled\":false},\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"distribution\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} eventname eventsource \"ec2.amazonaws.com\" errorCode\n| json \"eventSource\", \"awsRegion\", \"requestParameters\", \"responseElements\", \"recipientAccountId\" as event_source, region, requestParameters, responseElements, accountid nodrop\n| json \"userIdentity\", \"eventName\", \"sourceIPAddress\", \"userAgent\", \"eventType\", \"requestID\", \"errorCode\", \"errorMessage\", \"eventCategory\", \"managementEvent\" as userIdentity, event_name, src_ip, user_agent, event_type, request_id, error_code, error_message, event_category, management_event nodrop\n| where event_source = \"ec2.amazonaws.com\"\n| \"aws/ec2\" as namespace\n| json field=userIdentity \"type\", \"principalId\", \"arn\", \"userName\", \"accountId\" nodrop\n| json field=userIdentity \"sessionContext.attributes.mfaAuthenticated\" as mfaAuthenticated nodrop\n| parse field=arn \":assumed-role/*\" as user nodrop \n| parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"instanceType\", \"instancesSet\", \"instanceId\", \"DescribeInstanceCreditSpecificationsRequest.InstanceId.content\" as req_instancetype, req_instancesSet, req_instanceid_1, req_instanceid_2 nodrop\n| json field=req_instancesSet \"item\", \"items\" as req_instancesSet_item, req_instancesSet_items nodrop\n| parse regex field=req_instancesSet_item \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| parse regex field=req_instancesSet_items \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| json field=responseElements \"instancesSet.items\" as res_responseElements_items nodrop\n| parse regex field=res_responseElements_items \"\\\"instanceType\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| parse regex field=res_responseElements_items \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| if (!isBlank(req_instanceid_1), req_instanceid_1, if (!isBlank(req_instanceid_2), req_instanceid_2, if (!isBlank(req_instanceid_3), req_instanceid_3, if (!isBlank(req_instanceid_4), req_instanceid_4, \"\")))) as req_instanceid\n| if (!isBlank(req_instanceid), req_instanceid, res_instanceid) as instanceid\n| if (!isBlank(req_instancetype), req_instancetype, res_instancetype) as instanceType \n| if (isEmpty(error_code), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| tolowercase(instanceid) as instanceid\n| count as count by error_code | sort by count, error_code asc | limit 10", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-829F6ADB86227949", + "title": "Latest Failed Events", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"timeSeries\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} eventname eventsource \"ec2.amazonaws.com\" errorCode\n| json \"eventSource\", \"awsRegion\", \"requestParameters\", \"responseElements\", \"recipientAccountId\" as event_source, region, requestParameters, responseElements, accountid nodrop\n| json \"userIdentity\", \"eventName\", \"sourceIPAddress\", \"userAgent\", \"eventType\", \"requestID\", \"errorCode\", \"errorMessage\", \"eventCategory\", \"managementEvent\" as userIdentity, event_name, src_ip, user_agent, event_type, request_id, error_code, error_message, event_category, management_event nodrop\n| where event_source = \"ec2.amazonaws.com\"\n| \"aws/ec2\" as namespace\n| json field=userIdentity \"type\", \"principalId\", \"arn\", \"userName\", \"accountId\" nodrop\n| json field=userIdentity \"sessionContext.attributes.mfaAuthenticated\" as mfaAuthenticated nodrop\n| parse field=arn \":assumed-role/*\" as user nodrop \n| parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"instanceType\", \"instancesSet\", \"instanceId\", \"DescribeInstanceCreditSpecificationsRequest.InstanceId.content\" as req_instancetype, req_instancesSet, req_instanceid_1, req_instanceid_2 nodrop\n| json field=req_instancesSet \"item\", \"items\" as req_instancesSet_item, req_instancesSet_items nodrop\n| parse regex field=req_instancesSet_item \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| parse regex field=req_instancesSet_items \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| json field=responseElements \"instancesSet.items\" as res_responseElements_items nodrop\n| parse regex field=res_responseElements_items \"\\\"instanceType\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| parse regex field=res_responseElements_items \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| if (!isBlank(req_instanceid_1), req_instanceid_1, if (!isBlank(req_instanceid_2), req_instanceid_2, if (!isBlank(req_instanceid_3), req_instanceid_3, if (!isBlank(req_instanceid_4), req_instanceid_4, \"\")))) as req_instanceid\n| if (!isBlank(req_instanceid), req_instanceid, res_instanceid) as instanceid\n| if (!isBlank(req_instancetype), req_instancetype, res_instancetype) as instanceType \n| if (isEmpty(error_code), \"Success\", \"Failure\") as eventStatus\n| where !isEmpty(error_code)\n| if (isEmpty(userName), user, userName) as user\n| tolowercase(instanceid) as instanceid\n| timeslice 1s\n| count as Count by _timeslice, event_name, error_code, error_message, src_ip, user, type, request_id, user_agent, instanceid, instancetype\n| sort by _timeslice\n| limit 100", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel1DA5F9AA9C03F945", + "title": "Latest Successful Events", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"timeSeries\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} eventname eventsource \"ec2.amazonaws.com\" !errorCode\n| json \"eventSource\", \"awsRegion\", \"requestParameters\", \"responseElements\", \"recipientAccountId\" as event_source, region, requestParameters, responseElements, accountid nodrop\n| json \"userIdentity\", \"eventName\", \"sourceIPAddress\", \"userAgent\", \"eventType\", \"requestID\", \"errorCode\", \"errorMessage\", \"eventCategory\", \"managementEvent\" as userIdentity, event_name, src_ip, user_agent, event_type, request_id, error_code, error_message, event_category, management_event nodrop\n| where event_source = \"ec2.amazonaws.com\"\n| \"aws/ec2\" as namespace\n| json field=userIdentity \"type\", \"principalId\", \"arn\", \"userName\", \"accountId\" nodrop\n| json field=userIdentity \"sessionContext.attributes.mfaAuthenticated\" as mfaAuthenticated nodrop\n| parse field=arn \":assumed-role/*\" as user nodrop \n| parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"instanceType\", \"instancesSet\", \"instanceId\", \"DescribeInstanceCreditSpecificationsRequest.InstanceId.content\" as req_instancetype, req_instancesSet, req_instanceid_1, req_instanceid_2 nodrop\n| json field=req_instancesSet \"item\", \"items\" as req_instancesSet_item, req_instancesSet_items nodrop\n| parse regex field=req_instancesSet_item \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| parse regex field=req_instancesSet_items \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| json field=responseElements \"instancesSet.items\" as res_responseElements_items nodrop\n| parse regex field=res_responseElements_items \"\\\"instanceType\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| parse regex field=res_responseElements_items \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| if (!isBlank(req_instanceid_1), req_instanceid_1, if (!isBlank(req_instanceid_2), req_instanceid_2, if (!isBlank(req_instanceid_3), req_instanceid_3, if (!isBlank(req_instanceid_4), req_instanceid_4, \"\")))) as req_instanceid\n| if (!isBlank(req_instanceid), req_instanceid, res_instanceid) as instanceid\n| if (!isBlank(req_instancetype), req_instancetype, res_instancetype) as instanceType \n| if (isEmpty(error_code), \"Success\", \"Failure\") as eventStatus\n| where isEmpty(error_code)\n| if (isEmpty(userName), user, userName) as user\n| tolowercase(instanceid) as instanceid\n| timeslice 1s\n| count as Count by _timeslice, event_name, src_ip, user, type, request_id, user_agent, instanceid, instancetype\n| sort by _timeslice\n| limit 100", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-C6B1C1249FED294C", + "title": "Top 10 AssumedRole Users", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"distribution\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} eventname eventsource \"ec2.amazonaws.com\" AssumedRole\n| json \"eventSource\", \"awsRegion\", \"requestParameters\", \"responseElements\", \"recipientAccountId\" as event_source, region, requestParameters, responseElements, accountid nodrop\n| json \"userIdentity\", \"eventName\", \"sourceIPAddress\", \"userAgent\", \"eventType\", \"requestID\", \"errorCode\", \"errorMessage\", \"eventCategory\", \"managementEvent\" as userIdentity, event_name, src_ip, user_agent, event_type, request_id, error_code, error_message, event_category, management_event nodrop\n| where event_source = \"ec2.amazonaws.com\"\n| \"aws/ec2\" as namespace\n| json field=userIdentity \"type\", \"principalId\", \"arn\", \"userName\", \"accountId\" nodrop\n| json field=userIdentity \"sessionContext.attributes.mfaAuthenticated\" as mfaAuthenticated nodrop\n| parse field=arn \":assumed-role/*\" as user nodrop \n| parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"instanceType\", \"instancesSet\", \"instanceId\", \"DescribeInstanceCreditSpecificationsRequest.InstanceId.content\" as req_instancetype, req_instancesSet, req_instanceid_1, req_instanceid_2 nodrop\n| json field=req_instancesSet \"item\", \"items\" as req_instancesSet_item, req_instancesSet_items nodrop\n| parse regex field=req_instancesSet_item \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| parse regex field=req_instancesSet_items \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| json field=responseElements \"instancesSet.items\" as res_responseElements_items nodrop\n| parse regex field=res_responseElements_items \"\\\"instanceType\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| parse regex field=res_responseElements_items \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| if (!isBlank(req_instanceid_1), req_instanceid_1, if (!isBlank(req_instanceid_2), req_instanceid_2, if (!isBlank(req_instanceid_3), req_instanceid_3, if (!isBlank(req_instanceid_4), req_instanceid_4, \"\")))) as req_instanceid\n| if (!isBlank(req_instanceid), req_instanceid, res_instanceid) as instanceid\n| if (!isBlank(req_instancetype), req_instancetype, res_instancetype) as instanceType \n| if (isEmpty(error_code), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| tolowercase(instanceid) as instanceid\n| where type = \"AssumedRole\"\n| count as Count by user\n| sort by Count, user asc | limit 10", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel422C79CD944AC840", + "title": "Top Events Types", + "visualSettings": "{\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"series\":{},\"overrides\":[],\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"distribution\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} eventname eventsource \"ec2.amazonaws.com\"\n| json \"eventSource\", \"awsRegion\", \"requestParameters\", \"responseElements\", \"recipientAccountId\" as event_source, region, requestParameters, responseElements, accountid nodrop\n| json \"userIdentity\", \"eventName\", \"sourceIPAddress\", \"userAgent\", \"eventType\", \"requestID\", \"errorCode\", \"errorMessage\", \"eventCategory\", \"managementEvent\" as userIdentity, event_name, src_ip, user_agent, event_type, request_id, error_code, error_message, event_category, management_event nodrop\n| where event_source = \"ec2.amazonaws.com\"\n| \"aws/ec2\" as namespace\n| json field=userIdentity \"type\", \"principalId\", \"arn\", \"userName\", \"accountId\" nodrop\n| json field=userIdentity \"sessionContext.attributes.mfaAuthenticated\" as mfaAuthenticated nodrop\n| parse field=arn \":assumed-role/*\" as user nodrop \n| parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"instanceType\", \"instancesSet\", \"instanceId\", \"DescribeInstanceCreditSpecificationsRequest.InstanceId.content\" as req_instancetype, req_instancesSet, req_instanceid_1, req_instanceid_2 nodrop\n| json field=req_instancesSet \"item\", \"items\" as req_instancesSet_item, req_instancesSet_items nodrop\n| parse regex field=req_instancesSet_item \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| parse regex field=req_instancesSet_items \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| json field=responseElements \"instancesSet.items\" as res_responseElements_items nodrop\n| parse regex field=res_responseElements_items \"\\\"instanceType\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| parse regex field=res_responseElements_items \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| if (!isBlank(req_instanceid_1), req_instanceid_1, if (!isBlank(req_instanceid_2), req_instanceid_2, if (!isBlank(req_instanceid_3), req_instanceid_3, if (!isBlank(req_instanceid_4), req_instanceid_4, \"\")))) as req_instanceid\n| if (!isBlank(req_instanceid), req_instanceid, res_instanceid) as instanceid\n| if (!isBlank(req_instancetype), req_instancetype, res_instancetype) as instanceType \n| if (isEmpty(error_code), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| tolowercase(instanceid) as instanceid\n| count as Count by event_name\n| sort by Count, event_name asc | limit 10", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelB86F7C84926F1844", + "title": "Event Types", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"pie\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"fillOpacity\":1,\"startAngle\":270,\"innerRadius\":\"50%\",\"maxNumOfSlices\":10,\"mode\":\"distribution\"},\"overrides\":[],\"series\":{\"A_readonlyEvents\":{\"visible\":true},\"A_updateEvents\":{\"visible\":true}},\"legend\":{\"enabled\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} eventname eventsource \"ec2.amazonaws.com\"\n| json \"eventSource\", \"awsRegion\", \"requestParameters\", \"responseElements\", \"recipientAccountId\" as event_source, region, requestParameters, responseElements, accountid nodrop\n| json \"userIdentity\", \"eventName\", \"sourceIPAddress\", \"userAgent\", \"eventType\", \"requestID\", \"errorCode\", \"errorMessage\", \"eventCategory\", \"managementEvent\" as userIdentity, event_name, src_ip, user_agent, event_type, request_id, error_code, error_message, event_category, management_event nodrop\n| where event_source = \"ec2.amazonaws.com\"\n| \"aws/ec2\" as namespace\n| json field=userIdentity \"type\", \"principalId\", \"arn\", \"userName\", \"accountId\" nodrop\n| json field=userIdentity \"sessionContext.attributes.mfaAuthenticated\" as mfaAuthenticated nodrop\n| parse field=arn \":assumed-role/*\" as user nodrop \n| parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"instanceType\", \"instancesSet\", \"instanceId\", \"DescribeInstanceCreditSpecificationsRequest.InstanceId.content\" as req_instancetype, req_instancesSet, req_instanceid_1, req_instanceid_2 nodrop\n| json field=req_instancesSet \"item\", \"items\" as req_instancesSet_item, req_instancesSet_items nodrop\n| parse regex field=req_instancesSet_item \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| parse regex field=req_instancesSet_items \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| json field=responseElements \"instancesSet.items\" as res_responseElements_items nodrop\n| parse regex field=res_responseElements_items \"\\\"instanceType\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| parse regex field=res_responseElements_items \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| if (!isBlank(req_instanceid_1), req_instanceid_1, if (!isBlank(req_instanceid_2), req_instanceid_2, if (!isBlank(req_instanceid_3), req_instanceid_3, if (!isBlank(req_instanceid_4), req_instanceid_4, \"\")))) as req_instanceid\n| if (!isBlank(req_instanceid), req_instanceid, res_instanceid) as instanceid\n| if (!isBlank(req_instancetype), req_instancetype, res_instancetype) as instanceType \n| if (isEmpty(error_code), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| tolowercase(instanceid) as instanceid\n| if (event_name matches \"*Describe*\" or event_name matches \"Get*\" or event_name matches \"*List*\", \"ReadOnly\", if (event_name matches \"*Delete*\" or event_name matches \"*Terminate*\", \"Delete\", if (event_name matches \"*Create*\", \"Create\", if (!(event_name matches \"*Describe*\") and !(event_name matches \"Get*\") and !(event_name matches \"*List*\") and !(event_name matches \"*Delete*\") and !(event_name matches \"Terminate*\") and !(event_name matches \"Create*\") and !(event_name matches \"MonitorInstances\") and !(event_name matches \"RunInstances\"), \"Update\", \"Others\")))) as EventType\n| count by EventType | sort by _count, EventType asc", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelABB275868F4B2A44", + "title": "Events Status Trend", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"column\",\"displayType\":\"stacked\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"fillOpacity\":1,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[\"Failure\"],\"queries\":[],\"properties\":{\"color\":\"#f36644\"}},{\"series\":[\"Success\"],\"queries\":[],\"properties\":{\"color\":\"#75bf00\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} eventname eventsource \"ec2.amazonaws.com\"\n| json \"eventSource\", \"awsRegion\", \"requestParameters\", \"responseElements\", \"recipientAccountId\" as event_source, region, requestParameters, responseElements, accountid nodrop\n| json \"userIdentity\", \"eventName\", \"sourceIPAddress\", \"userAgent\", \"eventType\", \"requestID\", \"errorCode\", \"errorMessage\", \"eventCategory\", \"managementEvent\" as userIdentity, event_name, src_ip, user_agent, event_type, request_id, error_code, error_message, event_category, management_event nodrop\n| where event_source = \"ec2.amazonaws.com\"\n| \"aws/ec2\" as namespace\n| json field=userIdentity \"type\", \"principalId\", \"arn\", \"userName\", \"accountId\" nodrop\n| json field=userIdentity \"sessionContext.attributes.mfaAuthenticated\" as mfaAuthenticated nodrop\n| parse field=arn \":assumed-role/*\" as user nodrop \n| parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"instanceType\", \"instancesSet\", \"instanceId\", \"DescribeInstanceCreditSpecificationsRequest.InstanceId.content\" as req_instancetype, req_instancesSet, req_instanceid_1, req_instanceid_2 nodrop\n| json field=req_instancesSet \"item\", \"items\" as req_instancesSet_item, req_instancesSet_items nodrop\n| parse regex field=req_instancesSet_item \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| parse regex field=req_instancesSet_items \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| json field=responseElements \"instancesSet.items\" as res_responseElements_items nodrop\n| parse regex field=res_responseElements_items \"\\\"instanceType\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| parse regex field=res_responseElements_items \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| if (!isBlank(req_instanceid_1), req_instanceid_1, if (!isBlank(req_instanceid_2), req_instanceid_2, if (!isBlank(req_instanceid_3), req_instanceid_3, if (!isBlank(req_instanceid_4), req_instanceid_4, \"\")))) as req_instanceid\n| if (!isBlank(req_instanceid), req_instanceid, res_instanceid) as instanceid\n| if (!isBlank(req_instancetype), req_instancetype, res_instancetype) as instanceType \n| if (isEmpty(error_code), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| tolowercase(instanceid) as instanceid\n| timeslice 1h\n| count by _timeslice, eventStatus\n| transpose row _timeslice column eventStatus", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelA10E415491CA1B4F", + "title": "Top 10 IAM Users", + "visualSettings": "{\"title\":{\"fontSize\":16},\"overrides\":[],\"series\":{\"A_readonlyEvents\":{\"visible\":true},\"A_updateEvents\":{\"visible\":true}},\"legend\":{\"enabled\":false},\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"distribution\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} eventname eventsource \"ec2.amazonaws.com\" IAMUser\n| json \"eventSource\", \"awsRegion\", \"requestParameters\", \"responseElements\", \"recipientAccountId\" as event_source, region, requestParameters, responseElements, accountid nodrop\n| json \"userIdentity\", \"eventName\", \"sourceIPAddress\", \"userAgent\", \"eventType\", \"requestID\", \"errorCode\", \"errorMessage\", \"eventCategory\", \"managementEvent\" as userIdentity, event_name, src_ip, user_agent, event_type, request_id, error_code, error_message, event_category, management_event nodrop\n| where event_source = \"ec2.amazonaws.com\"\n| \"aws/ec2\" as namespace\n| json field=userIdentity \"type\", \"principalId\", \"arn\", \"userName\", \"accountId\" nodrop\n| json field=userIdentity \"sessionContext.attributes.mfaAuthenticated\" as mfaAuthenticated nodrop\n| parse field=arn \":assumed-role/*\" as user nodrop \n| parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"instanceType\", \"instancesSet\", \"instanceId\", \"DescribeInstanceCreditSpecificationsRequest.InstanceId.content\" as req_instancetype, req_instancesSet, req_instanceid_1, req_instanceid_2 nodrop\n| json field=req_instancesSet \"item\", \"items\" as req_instancesSet_item, req_instancesSet_items nodrop\n| parse regex field=req_instancesSet_item \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| parse regex field=req_instancesSet_items \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| json field=responseElements \"instancesSet.items\" as res_responseElements_items nodrop\n| parse regex field=res_responseElements_items \"\\\"instanceType\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| parse regex field=res_responseElements_items \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| if (!isBlank(req_instanceid_1), req_instanceid_1, if (!isBlank(req_instanceid_2), req_instanceid_2, if (!isBlank(req_instanceid_3), req_instanceid_3, if (!isBlank(req_instanceid_4), req_instanceid_4, \"\")))) as req_instanceid\n| if (!isBlank(req_instanceid), req_instanceid, res_instanceid) as instanceid\n| if (!isBlank(req_instancetype), req_instancetype, res_instancetype) as instanceType \n| if (isEmpty(error_code), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| tolowercase(instanceid) as instanceid\n| where type = \"IAMUser\"\n| count as Count by user\n| sort by Count, user asc | limit 10", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-4B95C387A7D03B47", + "title": "Events from Known Malicious IP Addresses", + "visualSettings": "{\"general\":{\"mode\":\"distribution\",\"type\":\"pie\",\"displayType\":\"default\",\"fillOpacity\":1,\"startAngle\":270,\"innerRadius\":\"30%\",\"maxNumOfSlices\":10},\"title\":{\"fontSize\":14},\"axes\":{\"axisX\":{\"titleFontSize\":12,\"labelFontSize\":12},\"axisY\":{\"titleFontSize\":12,\"labelFontSize\":12}},\"series\":{},\"legend\":{\"enabled\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} eventname eventsource \"ec2.amazonaws.com\" sourceIPAddress\n| json \"eventSource\", \"awsRegion\", \"requestParameters\", \"responseElements\", \"recipientAccountId\" as event_source, region, requestParameters, responseElements, accountid nodrop\n| json \"userIdentity\", \"eventName\", \"sourceIPAddress\", \"userAgent\", \"eventType\", \"requestID\", \"errorCode\", \"errorMessage\", \"eventCategory\", \"managementEvent\" as userIdentity, event_name, src_ip, user_agent, event_type, request_id, error_code, error_message, event_category, management_event nodrop\n| where event_source = \"ec2.amazonaws.com\"\n| \"aws/ec2\" as namespace\n| json field=userIdentity \"type\", \"principalId\", \"arn\", \"userName\", \"accountId\" nodrop\n| json field=userIdentity \"sessionContext.attributes.mfaAuthenticated\" as mfaAuthenticated nodrop\n| parse field=arn \":assumed-role/*\" as user nodrop \n| parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"instanceType\", \"instancesSet\", \"instanceId\", \"DescribeInstanceCreditSpecificationsRequest.InstanceId.content\" as req_instancetype, req_instancesSet, req_instanceid_1, req_instanceid_2 nodrop\n| json field=req_instancesSet \"item\", \"items\" as req_instancesSet_item, req_instancesSet_items nodrop\n| parse regex field=req_instancesSet_item \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| parse regex field=req_instancesSet_items \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| json field=responseElements \"instancesSet.items\" as res_responseElements_items nodrop\n| parse regex field=res_responseElements_items \"\\\"instanceType\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| parse regex field=res_responseElements_items \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| if (!isBlank(req_instanceid_1), req_instanceid_1, if (!isBlank(req_instanceid_2), req_instanceid_2, if (!isBlank(req_instanceid_3), req_instanceid_3, if (!isBlank(req_instanceid_4), req_instanceid_4, \"\")))) as req_instanceid\n| if (!isBlank(req_instanceid), req_instanceid, res_instanceid) as instanceid\n| if (!isBlank(req_instancetype), req_instancetype, res_instancetype) as instanceType \n| if (isEmpty(error_code), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| tolowercase(instanceid) as instanceid\n| count by src_ip, event_name, user, user_agent\n| lookup type, actor, raw, threatlevel as malicious_confidence from sumo://threat/cs on threat=src_ip \n| json field=raw \"labels[*].name\" as label_name \n| replace(label_name, \"\\\\/\",\"->\") as label_name\n| replace(label_name, \"\\\"\",\" \") as label_name\n| where type=\"ip_address\" and malicious_confidence = \"high\"\n| if (isEmpty(actor), \"Unassigned\", actor) as Actor\n| sort by _count\n| fields src_ip, event_name, user, user_agent, type, actor, malicious_confidence", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelF999E9E5A6591B41", + "title": "Failure Event Locations", + "visualSettings": "{\"general\":{\"mode\":\"map\",\"type\":\"map\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} eventname eventsource \"ec2.amazonaws.com\" sourceIPAddress errorCode\n| json \"eventSource\", \"awsRegion\", \"requestParameters\", \"responseElements\", \"recipientAccountId\" as event_source, region, requestParameters, responseElements, accountid nodrop\n| json \"userIdentity\", \"eventName\", \"sourceIPAddress\", \"userAgent\", \"eventType\", \"requestID\", \"errorCode\", \"errorMessage\", \"eventCategory\", \"managementEvent\" as userIdentity, event_name, src_ip, user_agent, event_type, request_id, error_code, error_message, event_category, management_event nodrop\n| where event_source = \"ec2.amazonaws.com\"\n| \"aws/ec2\" as namespace\n| json field=userIdentity \"type\", \"principalId\", \"arn\", \"userName\", \"accountId\" nodrop\n| json field=userIdentity \"sessionContext.attributes.mfaAuthenticated\" as mfaAuthenticated nodrop\n| parse field=arn \":assumed-role/*\" as user nodrop \n| parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"instanceType\", \"instancesSet\", \"instanceId\", \"DescribeInstanceCreditSpecificationsRequest.InstanceId.content\" as req_instancetype, req_instancesSet, req_instanceid_1, req_instanceid_2 nodrop\n| json field=req_instancesSet \"item\", \"items\" as req_instancesSet_item, req_instancesSet_items nodrop\n| parse regex field=req_instancesSet_item \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| parse regex field=req_instancesSet_items \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| json field=responseElements \"instancesSet.items\" as res_responseElements_items nodrop\n| parse regex field=res_responseElements_items \"\\\"instanceType\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| parse regex field=res_responseElements_items \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| if (!isBlank(req_instanceid_1), req_instanceid_1, if (!isBlank(req_instanceid_2), req_instanceid_2, if (!isBlank(req_instanceid_3), req_instanceid_3, if (!isBlank(req_instanceid_4), req_instanceid_4, \"\")))) as req_instanceid\n| if (!isBlank(req_instanceid), req_instanceid, res_instanceid) as instanceid\n| if (!isBlank(req_instancetype), req_instancetype, res_instancetype) as instanceType \n| if (isEmpty(error_code), \"Success\", \"Failure\") as eventStatus\n| where !isBlank(error_code)\n| if (isEmpty(userName), user, userName) as user\n| tolowercase(instanceid) as instanceid\n| count by src_ip\n| lookup latitude, longitude, country_code, country_name, region, city, postal_code from geo://location on ip = src_ip\n| where !isNull(latitude)", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelC8228A47A6D3DA4D", + "title": "Top 10 User Agents", + "visualSettings": "{\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"series\":{},\"overrides\":[],\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"distribution\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} eventname eventsource \"ec2.amazonaws.com\" userAgent\n| json \"eventSource\", \"awsRegion\", \"requestParameters\", \"responseElements\", \"recipientAccountId\" as event_source, region, requestParameters, responseElements, accountid nodrop\n| json \"userIdentity\", \"eventName\", \"sourceIPAddress\", \"userAgent\", \"eventType\", \"requestID\", \"errorCode\", \"errorMessage\", \"eventCategory\", \"managementEvent\" as userIdentity, event_name, src_ip, user_agent, event_type, request_id, error_code, error_message, event_category, management_event nodrop\n| where event_source = \"ec2.amazonaws.com\"\n| \"aws/ec2\" as namespace\n| json field=userIdentity \"type\", \"principalId\", \"arn\", \"userName\", \"accountId\" nodrop\n| json field=userIdentity \"sessionContext.attributes.mfaAuthenticated\" as mfaAuthenticated nodrop\n| parse field=arn \":assumed-role/*\" as user nodrop \n| parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| json field=requestParameters \"instanceType\", \"instancesSet\", \"instanceId\", \"DescribeInstanceCreditSpecificationsRequest.InstanceId.content\" as req_instancetype, req_instancesSet, req_instanceid_1, req_instanceid_2 nodrop\n| json field=req_instancesSet \"item\", \"items\" as req_instancesSet_item, req_instancesSet_items nodrop\n| parse regex field=req_instancesSet_item \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| parse regex field=req_instancesSet_items \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| json field=responseElements \"instancesSet.items\" as res_responseElements_items nodrop\n| parse regex field=res_responseElements_items \"\\\"instanceType\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| parse regex field=res_responseElements_items \"\\\"instanceId\\\":\\s*\\\"(?.*?)\\\"\" nodrop\n| if (!isBlank(req_instanceid_1), req_instanceid_1, if (!isBlank(req_instanceid_2), req_instanceid_2, if (!isBlank(req_instanceid_3), req_instanceid_3, if (!isBlank(req_instanceid_4), req_instanceid_4, \"\")))) as req_instanceid\n| if (!isBlank(req_instanceid), req_instanceid, res_instanceid) as instanceid\n| if (!isBlank(req_instancetype), req_instancetype, res_instancetype) as instanceType \n| if (isEmpty(error_code), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| tolowercase(instanceid) as instanceid\n| count as event_count by user_agent\n| sort by event_count, user_agent asc | limit 10", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-4022F95385542A46", + "title": "Successful Events", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\"},\"title\":{\"fontSize\":14},\"series\":{},\"legend\":{\"enabled\":false},\"text\":{\"format\":\"markdownV2\",\"backgroundColor\":\"#dfe5e9\",\"textColor\":\"black\",\"verticalAlignment\":\"center\",\"horizontalAlignment\":\"center\",\"showTitle\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Successful Events" + }, + { + "id": null, + "key": "panelD9E5828D86D12941", + "title": "Failure Events", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\"},\"title\":{\"fontSize\":14},\"series\":{},\"legend\":{\"enabled\":false},\"text\":{\"format\":\"markdownV2\",\"backgroundColor\":\"#dfe5e9\",\"textColor\":\"black\",\"verticalAlignment\":\"center\",\"horizontalAlignment\":\"center\",\"showTitle\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "Failure Events" + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "namespace", + "displayName": "namespace", + "defaultValue": "aws/ec2", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "3. AWS EC2 Metrics - Memory", + "description": "The AWS EC2 Metrics - Memory dashboard provides details information about a EC2 memory usage.", + "title": "3. AWS EC2 Metrics - Memory", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "instanceid": [ + "*" + ], + "namespace": [ + "aws/ec2" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelpane-efa308ec98ca9a47", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":0}" + }, + { + "key": "panelpane-51fa4586b262ea45", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":0}" + }, + { + "key": "panelpane-f40f828787debb4b", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":6}" + }, + { + "key": "panelpane-f77ed3b9a7469a41", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":6}" + }, + { + "key": "panelpane-14a8edc8a9082a44", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":12}" + }, + { + "key": "panelpane-fd78c765b827f940", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":12}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelpane-efa308ec98ca9a47", + "title": "Total Physical RAM", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Bytes\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=Mem_Total | sum by account, region, namespace, instanceid", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-51fa4586b262ea45", + "title": "Memory Free vs Used Percentage", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Percentage\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"Used Percent - {{instanceid}}\"}},{\"series\":[],\"queries\":[\"B\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"Free Percent - {{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=Mem_UsedPercent | sum by account, region, namespace, instanceid", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric= Mem_FreePercent | sum by account, region, namespace, instanceid", + "queryType": "Metrics", + "queryKey": "B", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-f40f828787debb4b", + "title": "Total Free, Buffers and Cached Memory", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Bytes\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"{{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=Mem_ActualFree | sum by account, region, namespace, instanceid", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-f77ed3b9a7469a41", + "title": "Total Used, Less Buffers and Cached Memory", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Bytes\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"{{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=Mem_ActualUsed | sum by account, region, namespace, instanceid", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-14a8edc8a9082a44", + "title": "Total Free Memory", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Bytes\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=Mem_Free | sum by account, region, namespace, instanceid", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-fd78c765b827f940", + "title": "Total Used Memory", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Bytes\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=Mem_Used | sum by account, region, namespace, instanceid", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/ec2", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "instanceid", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "instanceid" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "4. AWS EC2 Metrics - Disk", + "description": "The AWS EC2 Metrics - Disk dashboard provides details information about a EC2 Disk usage.", + "title": "4. AWS EC2 Metrics - Disk", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "instanceid": [ + "*" + ], + "namespace": [ + "aws/ec2" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelpane-f5adc9cfa7ab084e", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":6}" + }, + { + "key": "panelpane-fbbffe38bcd87a4d", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":6}" + }, + { + "key": "panelpane-74ec11c0b1d21845", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":12}" + }, + { + "key": "panelpane-972ecae0a835ab49", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":12}" + }, + { + "key": "panelpane-e941049387bcc843", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":18}" + }, + { + "key": "panelpane-24a34d858564ca43", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":18}" + }, + { + "key": "panelPANE-7940D0AEBE753846", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":0}" + }, + { + "key": "panelPANE-A8BE6B8FB2B93A44", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":0}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelpane-f5adc9cfa7ab084e", + "title": "Disk Used Bytes", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Bytes\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"instanceid={{instanceid}} DevName={{DevName}} DirName={{DirName}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=Disk_Used | sum by account, region, namespace, instanceid, dirname, devname", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-fbbffe38bcd87a4d", + "title": "Disk Available Bytes", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Bytes\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"instanceid={{instanceid}} DevName={{DevName}} DirName={{DirName}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=Disk_Available | sum by account, region, namespace, instanceid, dirname, devname", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-74ec11c0b1d21845", + "title": "Disk Read Rate", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Rate\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=Disk_Reads | sum by instanceid | rate", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-972ecae0a835ab49", + "title": "Disk Read Byte Rate", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Byte Rate\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=Disk_ReadBytes | sum by instanceid | rate", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-e941049387bcc843", + "title": "Disk Write Rate", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Rate\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=Disk_Writes | sum by instanceid | rate", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-24a34d858564ca43", + "title": "Disk Write Byte Rate", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Byte Rate\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=Disk_WriteBytes | sum by instanceid | rate", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-7940D0AEBE753846", + "title": "File System Used Percent", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Percentage\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme7\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"instanceid={{instanceid}} DevName={{DevName}} DirName={{DirName}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "metric=Disk_UsedPercent account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} | sum by account, region, namespace, instanceid, dirname, devname", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-A8BE6B8FB2B93A44", + "title": "Disk Queue Operations", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Operations\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme7\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"instanceid={{instanceid}} DevName={{DevName}} DirName={{DirName}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "metric=Disk_Queue account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} | sum by account, region, namespace, instanceid, dirname, devname", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/ec2", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "instanceid", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "instanceid" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "5. AWS EC2 Metrics - Network", + "description": "The AWS EC2 Metrics - Network dashboard provides details information about a EC2 Network activities based on In and out packets, bytes.", + "title": "5. AWS EC2 Metrics - Network", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "instanceid": [ + "*" + ], + "namespace": [ + "aws/ec2" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelpane-aae783508eb33b4b", + "structure": "{\"height\":9,\"width\":12,\"x\":0,\"y\":0}" + }, + { + "key": "panelpane-38312cc29dd88a45", + "structure": "{\"height\":9,\"width\":12,\"x\":12,\"y\":0}" + }, + { + "key": "panelpane-256276e180045843", + "structure": "{\"height\":9,\"width\":12,\"x\":0,\"y\":9}" + }, + { + "key": "panelpane-f0bf2577bbe6ba48", + "structure": "{\"height\":9,\"width\":12,\"x\":12,\"y\":9}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelpane-aae783508eb33b4b", + "title": "Network InPacket Rate", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Rate\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=Net_InPackets | sum by instanceid | rate", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-38312cc29dd88a45", + "title": "Network OutPacket Rate", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Rate\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=Net_OutPackets | sum by instanceid | rate", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-256276e180045843", + "title": "Network InByte Rate", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Rate\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=Net_InBytes | sum by instanceid | rate", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-f0bf2577bbe6ba48", + "title": "Network OutByte Rate", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Rate\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=Net_OutBytes | sum by instanceid | rate", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/ec2", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "instanceid", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "instanceid" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "6. AWS EC2 Metrics - TCP", + "description": "The AWS EC2 Metrics - TCP dashboard provides details information about a EC2 connection details.", + "title": "6. AWS EC2 Metrics - TCP", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "instanceid": [ + "*" + ], + "namespace": [ + "aws/ec2" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelpane-17ee2e37b6eccb47", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":0}" + }, + { + "key": "panelpane-c24a86f4a132b84c", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":0}" + }, + { + "key": "panelpane-820b2a5db0d45848", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":12}" + }, + { + "key": "panelpane-d8ac2293bd568940", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":12}" + }, + { + "key": "panelpane-ef64ec5dbc991840", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":18}" + }, + { + "key": "panelpane-35dcff5392216a4f", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":18}" + }, + { + "key": "panelPANE-EC5685348CE70A41", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":6}" + }, + { + "key": "panelPANE-B10542A88EB87840", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":6}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelpane-17ee2e37b6eccb47", + "title": "Inbound Connections", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Count\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=TCP_InboundTotal | sum by account, region, namespace, instanceid", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-c24a86f4a132b84c", + "title": "Outbound Connections", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Count\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=TCP_OutboundTotal | sum by account, region, namespace, instanceid", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-820b2a5db0d45848", + "title": "Listen Connections", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Count\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=TCP_Listen | sum by account, region, namespace, instanceid", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-d8ac2293bd568940", + "title": "Established Connections", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Count\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=TCP_Established | sum by account, region, namespace, instanceid", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-ef64ec5dbc991840", + "title": "CloseWait Connections", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Count\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=TCP_CloseWait ", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-35dcff5392216a4f", + "title": "TimeWait Connections", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"color\":{\"family\":\"scheme7\"},\"axes\":{\"axisY\":{\"title\":\"Count\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=TCP_TimeWait | sum by account, region, namespace, instanceid", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-EC5685348CE70A41", + "title": "Idle Connections", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Count\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme7\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=TCP_Idle | sum by account, region, namespace, instanceid", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-B10542A88EB87840", + "title": "Close Connections", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.3,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Count\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme7\"},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"{{instanceid}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} instanceid={{instanceid}} namespace={{namespace}} metric=TCP_Close | sum by account, region, namespace, instanceid", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/ec2", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + }, + { + "id": null, + "name": "instanceid", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "instanceid" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false, + "valueType": "Any" + } + ], + "coloringRules": [] + } + ] +} \ No newline at end of file diff --git a/aws-observability-terraform/examples/aws-observability/json/Ecs-App.json b/aws-observability-terraform/examples/aws-observability/json/Ecs-App.json new file mode 100644 index 00000000..a4ba10ff --- /dev/null +++ b/aws-observability-terraform/examples/aws-observability/json/Ecs-App.json @@ -0,0 +1,1555 @@ +{ + "type": "FolderSyncDefinition", + "name": "Amazon ECS", + "description": "Amazon Elastic Container Service is a scalable, container management service that is used to manage containers in a cluster. With dashboards for Amazon ECS, you can monitor capacity and resource utilization of ECS components as well as quickly identify changes made to your clusters to help with troubleshooting.", + "children": [ + { + "type": "DashboardV2SyncDefinition", + "name": "1. Amazon ECS - Overview", + "description": "The Amazon ECS - Overview dashboard provides an overview of CPU and memory utilization across all your ECS clusters and services. The customer upon checking the dashboard can determine which services are high in utilization and accordingly make decisions for the ECS deployment.", + "title": "1. Amazon ECS - Overview", + "rootPanel": null, + "theme": "Dark", + "topologyLabelMap": { + "data": { + "namespace": [ + "aws/ecs" + ], + "region": [ + "*" + ], + "_sumo_domain_name": [ + "aws" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelPANE-DAD554E4A6BCC843", + "structure": "{\"height\":5,\"width\":3,\"x\":12,\"y\":1}" + }, + { + "key": "panelPANE-EB38C97F935BEB4A", + "structure": "{\"height\":5,\"width\":5,\"x\":5,\"y\":24}" + }, + { + "key": "panelPANE-3FF7DB0BB6188A4D", + "structure": "{\"height\":6,\"width\":8,\"x\":0,\"y\":6}" + }, + { + "key": "panelPANE-1C688241A2863A4E", + "structure": "{\"height\":6,\"width\":7,\"x\":8,\"y\":6}" + }, + { + "key": "panelPANE-801680AAAF52094B", + "structure": "{\"height\":6,\"width\":8,\"x\":0,\"y\":12}" + }, + { + "key": "panelPANE-AD09413E82EF994D", + "structure": "{\"height\":6,\"width\":8,\"x\":8,\"y\":12}" + }, + { + "key": "panelPANE-396C9FA3B219CB46", + "structure": "{\"height\":6,\"width\":8,\"x\":16,\"y\":12}" + }, + { + "key": "panelPANE-808B8CCF8E42CA46", + "structure": "{\"height\":1,\"width\":24,\"x\":0,\"y\":0}" + }, + { + "key": "panelPANE-CFB9A6668E9A594A", + "structure": "{\"height\":1,\"width\":24,\"x\":0,\"y\":18}" + }, + { + "key": "panelPANE-D3471365951C1843", + "structure": "{\"height\":10,\"width\":12,\"x\":0,\"y\":29}" + }, + { + "key": "panelPANE-B7B36B9A9840D94F", + "structure": "{\"height\":10,\"width\":12,\"x\":12,\"y\":29}" + }, + { + "key": "panelPANE-6CF530B1B7B1384B", + "structure": "{\"height\":5,\"width\":3,\"x\":0,\"y\":1}" + }, + { + "key": "panelPANE-ECF7967481FEAB48", + "structure": "{\"height\":5,\"width\":5,\"x\":0,\"y\":19}" + }, + { + "key": "panelPANE-80FE1A5C8372F84F", + "structure": "{\"height\":5,\"width\":3,\"x\":3,\"y\":1}" + }, + { + "key": "panelPANE-EDD9E06BB32AEA42", + "structure": "{\"height\":5,\"width\":3,\"x\":6,\"y\":1}" + }, + { + "key": "panelPANE-99CD4FA5B28B0B4C", + "structure": "{\"height\":5,\"width\":3,\"x\":9,\"y\":1}" + }, + { + "key": "panelPANE-85B7A6BEAF5ADB44", + "structure": "{\"height\":11,\"width\":9,\"x\":15,\"y\":1}" + }, + { + "key": "panelPANE-FD79A27BA70C494E", + "structure": "{\"height\":5,\"width\":5,\"x\":5,\"y\":19}" + }, + { + "key": "panelPANE-36979C96A6014942", + "structure": "{\"height\":10,\"width\":14,\"x\":10,\"y\":19}" + }, + { + "key": "panelPANE-3C55753791F5A84A", + "structure": "{\"height\":5,\"width\":5,\"x\":0,\"y\":24}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelPANE-DAD554E4A6BCC843", + "title": "Clusters", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Maximum\",\"label\":\"Clusters\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":2,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": " account={{account}} region={{region}} namespace={{namespace}} ClusterName={{clustername}} | sum by ClusterName, account, region, namespace | count", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-EB38C97F935BEB4A", + "title": "Running Tasks", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Latest\",\"label\":\"Tasks\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} Metric=CPUUtilization ClusterName={{clustername}} ServiceName={{servicename}} statistic=samplecount | sum by account, region, namespace, ClusterName, ServiceName | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "For more details refer - https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cloudwatch-metrics.html#cw_running_task_count", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-3FF7DB0BB6188A4D", + "title": "Average CPU Utilization", + "visualSettings": "{\"general\":{\"mode\":\"honeyComb\",\"type\":\"honeyComb\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"honeyComb\":{\"thresholds\":[{\"from\":0,\"to\":75,\"color\":\"#75bf00\"},{\"from\":75,\"to\":85,\"color\":\"#f6c851\"},{\"from\":85,\"to\":null,\"color\":\"#f36644\"}],\"shape\":\"hexagon\",\"groupBy\":[],\"aggregationType\":\"avg\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{ClusterName}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": " account={{account}} region={{region}} namespace={{namespace}} metric=CPUUtilization statistic=Average ClusterName={{clustername}} | avg by ClusterName, account, region, namespace", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-1C688241A2863A4E", + "title": "Average Memory Utilization", + "visualSettings": "{\"general\":{\"mode\":\"honeyComb\",\"type\":\"honeyComb\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"honeyComb\":{\"thresholds\":[{\"from\":0,\"to\":75,\"color\":\"#75bf00\"},{\"from\":75,\"to\":85,\"color\":\"#f6c851\"},{\"from\":85,\"to\":null,\"color\":\"#f36644\"}],\"shape\":\"hexagon\",\"groupBy\":[],\"aggregationType\":\"avg\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{Clustername}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": " account={{account}} region={{region}} namespace={{namespace}} metric=MemoryUtilization statistic=Average ClusterName={{clustername}} | avg by ClusterName, account, region, namespace", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-801680AAAF52094B", + "title": "Average CPU Reservation Percentage", + "visualSettings": "{\"general\":{\"mode\":\"honeyComb\",\"type\":\"honeyComb\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"honeyComb\":{\"thresholds\":[{\"from\":0,\"to\":75,\"color\":\"#75bf00\"},{\"from\":75,\"to\":85,\"color\":\"#f6c851\"},{\"from\":85,\"to\":null,\"color\":\"#f36644\"}],\"shape\":\"hexagon\",\"groupBy\":[],\"aggregationType\":\"avg\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{ClusterName}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": " account={{account}} region={{region}} namespace={{namespace}} metric=CPUReservation statistic=Average ClusterName={{clustername}} | avg by ClusterName, account, region, namespace", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-AD09413E82EF994D", + "title": "Average Memory Reservation Percentage", + "visualSettings": "{\"general\":{\"mode\":\"honeyComb\",\"type\":\"honeyComb\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"honeyComb\":{\"thresholds\":[{\"from\":0,\"to\":75,\"color\":\"#75bf00\"},{\"from\":75,\"to\":85,\"color\":\"#f6c851\"},{\"from\":85,\"to\":null,\"color\":\"#f36644\"}],\"shape\":\"hexagon\",\"groupBy\":[],\"aggregationType\":\"avg\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{ClusterName}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": " account={{account}} region={{region}} namespace={{namespace}} metric=MemoryReservation statistic=Average ClusterName={{clustername}} | avg by ClusterName, account, region, namespace", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-396C9FA3B219CB46", + "title": "Average GPU Reservation Percentage", + "visualSettings": "{\"general\":{\"mode\":\"honeyComb\",\"type\":\"honeyComb\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"honeyComb\":{\"thresholds\":[{\"from\":0,\"to\":75,\"color\":\"#75bf00\"},{\"from\":75,\"to\":85,\"color\":\"#f6c851\"},{\"from\":85,\"to\":null,\"color\":\"#f36644\"}],\"shape\":\"hexagon\",\"groupBy\":[],\"aggregationType\":\"avg\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{clustername}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": " account={{account}} region={{region}} namespace={{namespace}} metric=GPUReservation statistic=Average ClusterName={{clustername}} | avg by ClusterName, account, region, namespace", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-808B8CCF8E42CA46", + "title": "Clusters", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"series\":{},\"text\":{\"backgroundColor\":\"#dfe5e9\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "" + }, + { + "id": null, + "key": "panelPANE-CFB9A6668E9A594A", + "title": "Services", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"series\":{},\"text\":{\"backgroundColor\":\"#dfe5e9\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "" + }, + { + "id": null, + "key": "panelPANE-D3471365951C1843", + "title": "Average CPU Utilization", + "visualSettings": "{\"general\":{\"mode\":\"honeyComb\",\"type\":\"honeyComb\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"honeyComb\":{\"thresholds\":[{\"from\":0,\"to\":75,\"color\":\"#75bf00\"},{\"from\":75,\"to\":85,\"color\":\"#f6c851\"},{\"from\":85,\"to\":null,\"color\":\"#f36644\"}],\"shape\":\"hexagon\",\"groupBy\":[{\"label\":\"ClusterName\",\"value\":\"ClusterName\"}],\"aggregationType\":\"avg\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{ServiceName}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": " account={{account}} region={{region}} namespace={{namespace}} metric=CPUUtilization statistic=Average ClusterName={{clustername}} ServiceName={{servicename}} | avg by ClusterName, ServiceName, account, region, namespace", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-B7B36B9A9840D94F", + "title": "Average Memory Utilization", + "visualSettings": "{\"general\":{\"mode\":\"honeyComb\",\"type\":\"honeyComb\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"honeyComb\":{\"thresholds\":[{\"from\":0,\"to\":75,\"color\":\"#75bf00\"},{\"from\":75,\"to\":85,\"color\":\"#f6c851\"},{\"from\":85,\"to\":null,\"color\":\"#f36644\"}],\"shape\":\"hexagon\",\"groupBy\":[{\"label\":\"ClusterName\",\"value\":\"ClusterName\"}],\"aggregationType\":\"avg\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{ServiceName}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": " account={{account}} region={{region}} namespace={{namespace}} metric=MemoryUtilization statistic=Average ClusterName={{clustername}} ServiceName={{servicename}} | avg by ClusterName, ServiceName, account, region, namespace", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-6CF530B1B7B1384B", + "title": "CPU Utilization", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"mode\":\"singleValueMetrics\"},\"svp\":{\"option\":\"Average\",\"label\":\"%\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":2,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":0,\"to\":75,\"color\":\"#75bf00\"},{\"from\":75,\"to\":85,\"color\":\"#f6c851\"},{\"from\":85,\"to\":101,\"color\":\"#f36644\"}],\"sparkline\":{\"show\":false},\"gauge\":{\"show\":true}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": " account={{account}} region={{region}} namespace={{namespace}} metric=CPUUtilization statistic=Average ClusterName={{clustername}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-ECF7967481FEAB48", + "title": "Average CPU Utilization", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Average\",\"label\":\"%\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"No data\",\"hideData\":false,\"rounding\":2,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":0,\"to\":75,\"color\":\"#75bf00\"},{\"from\":75,\"to\":85,\"color\":\"#f6c851\"},{\"from\":85,\"to\":101,\"color\":\"#f36644\"}],\"sparkline\":{\"show\":false},\"gauge\":{\"show\":true,\"min\":0,\"max\":100}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": " account={{account}} region={{region}} namespace={{namespace}} metric=CPUUtilization statistic=Average ClusterName={{clustername}} ServiceName={{servicename}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-80FE1A5C8372F84F", + "title": "Memory Utilization", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Average\",\"label\":\"%\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"No data\",\"hideData\":false,\"rounding\":2,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":0,\"to\":75,\"color\":\"#75bf00\"},{\"from\":75,\"to\":85,\"color\":\"#f6c851\"},{\"from\":85,\"to\":100,\"color\":\"#f36644\"}],\"sparkline\":{\"show\":false},\"gauge\":{\"show\":true,\"min\":0,\"max\":100}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": " account={{account}} region={{region}} namespace={{namespace}} metric=MemoryUtilization statistic=Average ClusterName={{clustername}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-EDD9E06BB32AEA42", + "title": "CPU Reservation", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Average\",\"label\":\"%\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"No data\",\"hideData\":false,\"rounding\":2,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":0,\"to\":75,\"color\":\"#75bf00\"},{\"from\":75,\"to\":85,\"color\":\"#f6c851\"},{\"from\":85,\"to\":101,\"color\":\"#f36644\"}],\"sparkline\":{\"show\":false},\"gauge\":{\"show\":true,\"min\":0,\"max\":100}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": " account={{account}} region={{region}} namespace={{namespace}} metric=CPUReservation statistic=Average ClusterName={{clustername}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-99CD4FA5B28B0B4C", + "title": "Memory Reservation", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Average\",\"label\":\"%\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"No data\",\"hideData\":false,\"rounding\":2,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":0,\"to\":75,\"color\":\"#75bf00\"},{\"from\":75,\"to\":85,\"color\":\"#f6c851\"},{\"from\":85,\"to\":101,\"color\":\"#f36644\"}],\"sparkline\":{\"show\":false},\"gauge\":{\"show\":true,\"min\":0,\"max\":100}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": " account={{account}} region={{region}} namespace={{namespace}} metric=MemoryReservation statistic=Average ClusterName={{clustername}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-85B7A6BEAF5ADB44", + "title": "Cluster Details", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"distribution\",\"decimals\":2},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"CPU Utilization\"}},{\"series\":[],\"queries\":[\"B\"],\"properties\":{\"name\":\"Memory Utilization\"}}],\"hiddenQueryKeys\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": " account={{account}} region={{region}} namespace={{namespace}} metric=CPUUtilization statistic=Average clustername={{clustername}} | avg by clustername, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": " account={{account}} region={{region}} namespace={{namespace}} metric=MemoryUtilization statistic=Average clustername={{clustername}} | avg by clustername, account, region", + "queryType": "Metrics", + "queryKey": "B", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-FD79A27BA70C494E", + "title": "Average Memory Utilization", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Average\",\"label\":\"%\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"No data\",\"hideData\":false,\"rounding\":2,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":0,\"to\":75,\"color\":\"#75bf00\"},{\"from\":75,\"to\":85,\"color\":\"#f6c851\"},{\"from\":85,\"to\":101,\"color\":\"#f36644\"}],\"sparkline\":{\"show\":false},\"gauge\":{\"show\":true,\"min\":0,\"max\":100}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": " account={{account}} region={{region}} namespace={{namespace}} metric=MemoryUtilization statistic=Average ClusterName={{clustername}} ServiceName={{servicename}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-36979C96A6014942", + "title": "Service Details", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"distribution\",\"decimals\":2},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"CPU Utilization\"}},{\"series\":[],\"queries\":[\"B\"],\"properties\":{\"name\":\"Memory Utilization\"}}],\"hiddenQueryKeys\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": " account={{account}} region={{region}} namespace={{namespace}} metric=CPUUtilization statistic=Average clustername={{clustername}} servicename={{servicename}} | avg by clustername, servicename, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": " account={{account}} region={{region}} namespace={{namespace}} metric=MemoryUtilization statistic=Average clustername={{clustername}} servicename={{servicename}} | avg by clustername, servicename, account, region", + "queryType": "Metrics", + "queryKey": "B", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-3C55753791F5A84A", + "title": "Services", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Maximum\",\"label\":\"Services\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"No data\",\"hideData\":false,\"rounding\":2,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} Metric=CPUUtilization ClusterName={{clustername}} ServiceName={{servicename}} | sum by account, region, namespace, ClusterName, ServiceName | count", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/ecs", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "clustername", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "clustername" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "servicename", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}} clustername={{clustername}}", + "key": "servicename" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "1. Amazon ECS - Resource Utilization", + "description": "The Amazon ECS - Resource Utilization dashboard provides trends around CPU and Memory utilization for clusters and services.", + "title": "1. Amazon ECS - Resource Utilization", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "clustername": [ + "*" + ], + "namespace": [ + "aws/ecs" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelPANE-94BC2597AC36CA44", + "structure": "{\"height\":8,\"width\":12,\"x\":0,\"y\":6}" + }, + { + "key": "panelPANE-901C72C995EC4849", + "structure": "{\"height\":8,\"width\":12,\"x\":12,\"y\":6}" + }, + { + "key": "panelPANE-C48D067689C74940", + "structure": "{\"height\":1,\"width\":24,\"x\":0,\"y\":5}" + }, + { + "key": "panelPANE-BB90A45AA5CD2A49", + "structure": "{\"height\":1,\"width\":24,\"x\":0,\"y\":14}" + }, + { + "key": "panelE89F489BBBF0694C", + "structure": "{\"height\":8,\"width\":12,\"x\":0,\"y\":15}" + }, + { + "key": "panel799EDF7AB2CEEA45", + "structure": "{\"height\":8,\"width\":12,\"x\":12,\"y\":15}" + }, + { + "key": "panelPANE-6A4FFE3F9C2DEB4A", + "structure": "{\"height\":5,\"width\":24,\"x\":0,\"y\":0}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelPANE-94BC2597AC36CA44", + "title": "CPU Utilization", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"CPU Utilization\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{\"A_ClusterName=duc-test metric=avg(CPUUtilization)\":{\"visible\":true}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{clustername}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=CPUUtilization Statistic=Average ClusterName={{clustername}} | avg by ClusterName, account, region, namespace", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-901C72C995EC4849", + "title": "Memory Utilization", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Memory Utilization\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{clustername}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=MemoryUtilization Statistic=Average ClusterName={{clustername}} | avg by ClusterName, account, region, namespace ", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-C48D067689C74940", + "title": "Clusters", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"series\":{},\"text\":{\"alignment\":\"left\",\"backgroundColor\":\"#dfe5e9\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": " " + }, + { + "id": null, + "key": "panelPANE-BB90A45AA5CD2A49", + "title": "Services", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"series\":{},\"text\":{\"backgroundColor\":\"#dfe5e9\"}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "" + }, + { + "id": null, + "key": "panelE89F489BBBF0694C", + "title": "CPU Utilization", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"CPU Utilization\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{\"A_ClusterName=duc-test metric=avg(CPUUtilization)\":{\"visible\":true}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{servicename}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=CPUUtilization Statistic=Average ClusterName={{clustername}} ServiceName={{servicename}} | avg by ClusterName, ServiceName, account, region, namespace", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel799EDF7AB2CEEA45", + "title": "Memory Utilization", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Memory Utilization\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{servicename}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=MemoryUtilization Statistic=Average ClusterName={{clustername}} ServiceName={{servicename}} | avg by ClusterName, ServiceName, account, region, namespace ", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-6A4FFE3F9C2DEB4A", + "title": "Note", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"series\":{},\"text\":{\"format\":\"markdown\",\"backgroundColor\":\"#dfe5e9\"},\"title\":{\"fontSize\":20}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "- **CPU Utilization**: The percentage of CPU units that are used in the cluster or service.\n\n- **Memory Utilization**: The percentage of memory that is used in the cluster or service.\n\nThese metrics are available for both ECS clusters and services.\n\nAll Amazon ECS services using the Fargate launch type are enabled for CloudWatch CPU and memory utilization metrics automatically.\n\nFor more information: [Amazon ECS CloudWatch metrics](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cloudwatch-metrics.html)" + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/ecs", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "clustername", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "clustername" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "servicename", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}} clustername={{clustername}}", + "key": "servicename" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "2. Amazon ECS - Audit Events", + "description": "The Amazon ECS - Audit Events dashboard provides insights into changes to your ECS environment including top IAM users, locations of events. The dashboard also shows the created, updated, and deleted events with respect to time, along with the details for the top 10 AWS Identity and Access Management users, and the last 20 Container Registration and Deregistration Events.", + "title": "2. Amazon ECS - Audit Events", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "namespace": [ + "aws/ecs" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelPANE-0046E81E9A249843", + "structure": "{\"height\":7,\"width\":8,\"x\":8,\"y\":7}" + }, + { + "key": "panelPANE-427C14EE9B45894A", + "structure": "{\"height\":7,\"width\":16,\"x\":8,\"y\":0}" + }, + { + "key": "panelPANE-E843FEF9BA8C0940", + "structure": "{\"height\":14,\"width\":8,\"x\":0,\"y\":0}" + }, + { + "key": "panelPANE-AADECF2BA524A849", + "structure": "{\"height\":6,\"width\":8,\"x\":0,\"y\":14}" + }, + { + "key": "panelPANE-CE26D0879923C84D", + "structure": "{\"height\":6,\"width\":8,\"x\":8,\"y\":14}" + }, + { + "key": "panelPANE-ED48C03398FA5A43", + "structure": "{\"height\":6,\"width\":8,\"x\":0,\"y\":20}" + }, + { + "key": "panelPANE-8CB9EAD38C680B49", + "structure": "{\"height\":6,\"width\":8,\"x\":8,\"y\":20}" + }, + { + "key": "panelPANE-B26EEFB0B50DEA41", + "structure": "{\"height\":8,\"width\":24,\"x\":0,\"y\":26}" + }, + { + "key": "panelPANE-0F2D957EB8B8F94F", + "structure": "{\"height\":7,\"width\":8,\"x\":16,\"y\":7}" + }, + { + "key": "panelPANE-21449CD186C2AA40", + "structure": "{\"height\":6,\"width\":8,\"x\":16,\"y\":14}" + }, + { + "key": "panelPANE-C74F040CA8569A49", + "structure": "{\"height\":6,\"width\":8,\"x\":16,\"y\":20}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelPANE-0046E81E9A249843", + "title": "ECS Events by Type", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"distribution\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"ecs.amazonaws.com\\\"\"\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"requestParameters\", \"sourceIPAddress\" as event_name, event_source, Region, requestParameters, src_ip nodrop\n| where event_source = \"ecs.amazonaws.com\"\n| json field=requestParameters \"cluster\" as clustername nodrop\n| json field=requestParameters \"service\", \"serviceName\" as service, servicename nodrop | if (isBlank(service), servicename, service) as servicename\n| where tolowercase(clustername) matches tolowercase(\"{{clustername}}\")\n| parse \"\\\"userName\\\":\\\"*\\\"\" as user nodrop\n| parse \"\\\"ec2InstanceId\\\":\\\"*\\\"\" as ec2InstanceId nodrop\n| count as event_count by event_name\n| sort by event_count, event_name asc", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-427C14EE9B45894A", + "title": "ECS Events Over Time", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Event Count\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"ecs.amazonaws.com\\\"\"\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"requestParameters\", \"sourceIPAddress\" as event_name, event_source, Region, requestParameters, src_ip nodrop\n| where event_source = \"ecs.amazonaws.com\"\n| json field=requestParameters \"cluster\" as clustername nodrop\n| json field=requestParameters \"service\", \"serviceName\" as service, servicename nodrop | if (isBlank(service), servicename, service) as servicename\n| where tolowercase(clustername) matches tolowercase(\"{{clustername}}\")\n| parse \"\\\"userName\\\":\\\"*\\\"\" as user nodrop\n| parse \"\\\"ec2InstanceId\\\":\\\"*\\\"\" as ec2InstanceId nodrop\n| timeslice 1h\n| count as event_count by event_name, _timeslice\n| transpose row _timeslice column event_name ", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-E843FEF9BA8C0940", + "title": "Location of Events", + "visualSettings": "{\"general\":{\"mode\":\"map\",\"type\":\"map\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"ecs.amazonaws.com\\\"\" sourceIPAddress\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"requestParameters\", \"sourceIPAddress\" as event_name, event_source, Region, requestParameters, src_ip nodrop\n| where event_source = \"ecs.amazonaws.com\" and !(src_ip matches \"*.amazonaws.com\")\n| json field=requestParameters \"cluster\" as clustername nodrop\n| json field=requestParameters \"service\", \"serviceName\" as service, servicename nodrop | if (isBlank(service), servicename, service) as servicename\n| where tolowercase(clustername) matches tolowercase(\"{{clustername}}\")\n| parse \"\\\"userName\\\":\\\"*\\\"\" as user nodrop\n| parse \"\\\"ec2InstanceId\\\":\\\"*\\\"\" as ec2InstanceId nodrop\n| count by src_ip\n| lookup latitude, longitude, country_code, country_name, region, city, postal_code from geo://location on ip = src_ip\n| where !isNull(latitude)", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-AADECF2BA524A849", + "title": "Created ECS Resources", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"column\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"fillOpacity\":1,\"mode\":\"distribution\"},\"axes\":{\"axisX\":{\"title\":\"resource_type\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Event Count\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"ecs.amazonaws.com\\\"\" (CreateCluster or CreateService or RegisterContainerInstance or RegisterTaskDefinition or RunTask)\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"requestParameters\", \"sourceIPAddress\" as event_name, event_source, Region, requestParameters, src_ip nodrop\n| where event_source = \"ecs.amazonaws.com\"\n| json field=requestParameters \"cluster\" as clustername nodrop\n| json field=requestParameters \"service\", \"serviceName\" as service, servicename nodrop | if (isBlank(service), servicename, service) as servicename\n| where tolowercase(clustername) matches tolowercase(\"{{clustername}}\")\n| parse \"\\\"userName\\\":\\\"*\\\"\" as user nodrop\n| parse \"\\\"ec2InstanceId\\\":\\\"*\\\"\" as ec2InstanceId nodrop\n| parse regex field=event_name \"^(?:Create|Run|Register)(?[A-Z][A-Za-z]+)\" nodrop\n| count as event_count by resource_type | sort by event_count, resource_type asc", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-CE26D0879923C84D", + "title": "Deleted ECS Resources", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"column\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"fillOpacity\":1,\"mode\":\"distribution\"},\"axes\":{\"axisX\":{\"title\":\"resource_type\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Event Count\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[],\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"ecs.amazonaws.com\\\"\" (DeleteCluster or DeleteService or DeregisterContainerInstance or DeregisterTaskDefinition or StopTask)\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"requestParameters\", \"sourceIPAddress\" as event_name, event_source, Region, requestParameters, src_ip nodrop\n| where event_source = \"ecs.amazonaws.com\"\n| json field=requestParameters \"cluster\" as clustername nodrop\n| json field=requestParameters \"service\", \"serviceName\" as service, servicename nodrop | if (isBlank(service), servicename, service) as servicename\n| where tolowercase(clustername) matches tolowercase(\"{{clustername}}\")\n| parse \"\\\"userName\\\":\\\"*\\\"\" as user nodrop\n| parse \"\\\"ec2InstanceId\\\":\\\"*\\\"\" as ec2InstanceId nodrop\n| parse regex field=event_name \"^(?:Delete|Deregister|Stop)(?[A-Z][A-Za-z]+)\" nodrop\n| count as event_count by resource_type\n| sort by event_count, resource_type asc", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-ED48C03398FA5A43", + "title": "ECS Resources Created Over Time", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"column\",\"displayType\":\"stacked\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"fillOpacity\":1,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Event Count\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"ecs.amazonaws.com\\\"\" (CreateCluster or CreateService or RegisterContainerInstance or RegisterTaskDefinition or RunTask)\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"requestParameters\", \"sourceIPAddress\" as event_name, event_source, Region, requestParameters, src_ip nodrop\n| where event_source = \"ecs.amazonaws.com\"\n| json field=requestParameters \"cluster\" as clustername nodrop\n| json field=requestParameters \"service\", \"serviceName\" as service, servicename nodrop | if (isBlank(service), servicename, service) as servicename\n| where tolowercase(clustername) matches tolowercase(\"{{clustername}}\")\n| parse \"\\\"userName\\\":\\\"*\\\"\" as user nodrop\n| parse \"\\\"ec2InstanceId\\\":\\\"*\\\"\" as ec2InstanceId nodrop\n| parse regex field=event_name \"^(?:Create|Run|Register)(?[A-Z][A-Za-z]+)\" nodrop\n| timeslice 1h\n| count as event_count by resource_type, _timeslice\n| transpose row _timeslice column resource_type", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-8CB9EAD38C680B49", + "title": "ECS Resources Deleted Over Time", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"column\",\"displayType\":\"stacked\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"fillOpacity\":1,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Event Count\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"ecs.amazonaws.com\\\"\" (DeleteCluster or DeleteService or DeregisterContainerInstance or DeregisterTaskDefinition or StopTask) !(InternalFailure)\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"requestParameters\", \"sourceIPAddress\" as event_name, event_source, Region, requestParameters, src_ip nodrop\n| where event_source = \"ecs.amazonaws.com\"\n| json field=requestParameters \"cluster\" as clustername nodrop\n| json field=requestParameters \"service\", \"serviceName\" as service, servicename nodrop | if (isBlank(service), servicename, service) as servicename\n| where tolowercase(clustername) matches tolowercase(\"{{clustername}}\")\n| parse \"\\\"userName\\\":\\\"*\\\"\" as user nodrop\n| parse \"\\\"ec2InstanceId\\\":\\\"*\\\"\" as ec2InstanceId nodrop\n| parse regex field=event_name \"^(?:Delete|Deregister|Stop)(?[A-Z][A-Za-z]+)\" nodrop\n| timeslice 1h\n| count as event_count by resource_type, _timeslice\n| transpose row _timeslice column resource_type", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-B26EEFB0B50DEA41", + "title": "Last 20 Container Registration and Deregistration Events", + "visualSettings": "{\"general\":{\"mode\":\"distribution\",\"type\":\"table\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"fillOpacity\":1,\"startAngle\":270,\"innerRadius\":\"50%\",\"maxNumOfSlices\":10},\"title\":{\"fontSize\":16},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"ecs.amazonaws.com\\\"\" (RegisterContainerInstance or DeregisterContainerInstance)\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"requestParameters\", \"sourceIPAddress\" as event_name, event_source, Region, requestParameters, src_ip nodrop\n| where event_source = \"ecs.amazonaws.com\" and event_name in (\"RegisterContainerInstance\", \"DeregisterContainerInstance\")\n| json field=requestParameters \"cluster\" as clustername nodrop\n| json field=requestParameters \"service\", \"serviceName\" as service, servicename nodrop | if (isBlank(service), servicename, service) as servicename\n| where tolowercase(clustername) matches tolowercase(\"{{clustername}}\")\n| parse \"\\\"userName\\\":\\\"*\\\"\" as user nodrop\n| parse \"\\\"ec2InstanceId\\\":\\\"*\\\"\" as ec2_instanceid nodrop\n| parse regex field=event_name \"^(?[Register|Deregister]+)(?[A-Z][A-Za-z]+)\" nodrop\n| timeslice 1s\n| count _timeslice, event, resource_type, region, clustername, ec2_instanceid\n| fields -_count\n| sort _timeslice\n| limit 20\n//| fields -_count", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-0F2D957EB8B8F94F", + "title": "Top 10 IAM Users", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"pie\",\"displayType\":\"default\",\"fillOpacity\":1,\"startAngle\":270,\"innerRadius\":\"50%\",\"maxNumOfSlices\":10,\"mode\":\"distribution\"},\"overrides\":[],\"series\":{},\"legend\":{\"enabled\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"ecs.amazonaws.com\\\"\"\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"requestParameters\", \"sourceIPAddress\" as event_name, event_source, Region, requestParameters, src_ip nodrop\n| where event_source = \"ecs.amazonaws.com\"\n| json field=requestParameters \"cluster\" as clustername nodrop\n| json field=requestParameters \"service\", \"serviceName\" as service, servicename nodrop | if (isBlank(service), servicename, service) as servicename\n| where tolowercase(clustername) matches tolowercase(\"{{clustername}}\")\n| parse \"\\\"userName\\\":\\\"*\\\"\" as user nodrop\n| parse \"\\\"ec2InstanceId\\\":\\\"*\\\"\" as ec2InstanceId nodrop\n| count as event_count by user\n| sort by event_count \n| limit 10", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-21449CD186C2AA40", + "title": "Updated ECS Resources", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"column\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"fillOpacity\":1,\"mode\":\"distribution\"},\"axes\":{\"axisX\":{\"showLabels\":true,\"title\":\"resource_type\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"showLabels\":true,\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Event Count\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"ecs.amazonaws.com\\\"\" *update*\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"requestParameters\", \"sourceIPAddress\" as event_name, event_source, Region, requestParameters, src_ip nodrop\n| where event_source = \"ecs.amazonaws.com\" and (event_name matches \"*Update*\" or event_name matches \"*update*\")\n| json field=requestParameters \"cluster\" as clustername nodrop\n| json field=requestParameters \"service\", \"serviceName\" as service, servicename nodrop | if (isBlank(service), servicename, service) as servicename\n| where tolowercase(clustername) matches tolowercase(\"{{clustername}}\")\n| parse \"\\\"userName\\\":\\\"*\\\"\" as user nodrop\n| parse \"\\\"ec2InstanceId\\\":\\\"*\\\"\" as ec2InstanceId nodrop\n| parse regex field=event_name \"^(?:Update)(?[A-Z][A-Za-z]+)\" nodrop\n| count as event_count by resource_type\n| sort by event_count, resource_type asc", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-C74F040CA8569A49", + "title": "ECS Resources Updated Over Time", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"column\",\"displayType\":\"stacked\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"fillOpacity\":1,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"showLabels\":true,\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"showLabels\":true,\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Event Count\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"ecs.amazonaws.com\\\"\" *update*\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"requestParameters\", \"sourceIPAddress\" as event_name, event_source, Region, requestParameters, src_ip nodrop\n| where event_source = \"ecs.amazonaws.com\" and event_name matches \"Update*\"\n| json field=requestParameters \"cluster\" as clustername nodrop\n| json field=requestParameters \"service\", \"serviceName\" as service, servicename nodrop | if (isBlank(service), servicename, service) as servicename\n| where tolowercase(clustername) matches tolowercase(\"{{clustername}}\")\n| parse \"\\\"userName\\\":\\\"*\\\"\" as user nodrop\n| parse \"\\\"ec2InstanceId\\\":\\\"*\\\"\" as ec2InstanceId nodrop\n| parse regex field=event_name \"^(?:Update)(?[A-Z][A-Za-z]+)\" nodrop\n| timeslice 1h\n| count by resource_type, _timeslice\n| transpose row _timeslice column resource_type", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/ecs", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "clustername", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "clustername" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "2. Amazon ECS - Resource Reservation", + "description": "The Amazon ECS - Resource Reservation dashboard provides detailed insights into the average reservation (units utilized) by CPU, Memory, and GPU for a given cluster.", + "title": "2. Amazon ECS - Resource Reservation", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "clustername": [ + "*" + ], + "namespace": [ + "aws/ecs" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelPANE-94BC2597AC36CA44", + "structure": "{\"height\":8,\"width\":24,\"x\":0,\"y\":5}" + }, + { + "key": "panelPANE-FDD23D15950FB848", + "structure": "{\"height\":8,\"width\":24,\"x\":0,\"y\":13}" + }, + { + "key": "panelPANE-901C72C995EC4849", + "structure": "{\"height\":8,\"width\":24,\"x\":0,\"y\":21}" + }, + { + "key": "panelPANE-F5D3FA22BB65C945", + "structure": "{\"height\":5,\"width\":24,\"x\":0,\"y\":0}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelPANE-94BC2597AC36CA44", + "title": "Average CPU Reservation", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"CPU Reservation\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{clustername}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=CPUReservation Statistic=Average ClusterName={{clustername}} | avg by ClusterName, account, region, namespace", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-FDD23D15950FB848", + "title": "Average Memory Reservation", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Memory Reservation\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{clustername}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=MemoryReservation Statistic=Average ClusterName={{clustername}} | avg by ClusterName, account, region, namespace ", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-901C72C995EC4849", + "title": "Average GPU Reservation", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"GPU Reservation\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{clustername}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=GPUReservation Statistic=Average ClusterName={{clustername}} | max by ClusterName, account, region, namespace ", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-F5D3FA22BB65C945", + "title": "Note", + "visualSettings": "{\"general\":{\"mode\":\"TextPanel\",\"type\":\"text\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"series\":{},\"text\":{\"alignment\":\"left\",\"format\":\"markdown\",\"backgroundColor\":\"#dfe5e9\"},\"title\":{\"fontSize\":20}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "TextPanel", + "text": "- **CPU Reservation**: The percentage of CPU units that are reserved by running tasks in the cluster.\n\n- **Memory Reservation**: The percentage of memory that is reserved by running tasks in the cluster.\n\n- **GPU Reservation**: The percentage of total available GPUs that are reserved by running tasks in the cluster.\n\nThese metrics are available for clusters only.\n\nFor more information: [Amazon ECS CloudWatch metrics](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cloudwatch-metrics.html)" + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/ecs", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "clustername", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "clustername" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + } + ], + "coloringRules": [] + } + ] +} \ No newline at end of file diff --git a/aws-observability-terraform/examples/aws-observability/json/ElastiCache-App.json b/aws-observability-terraform/examples/aws-observability/json/ElastiCache-App.json new file mode 100644 index 00000000..79c72e22 --- /dev/null +++ b/aws-observability-terraform/examples/aws-observability/json/ElastiCache-App.json @@ -0,0 +1,4710 @@ +{ + "type": "FolderSyncDefinition", + "name": "Amazon ElastiCache", + "description": "Amazon ElastiCache allows you to set up, run, and scale popular open-source compatible in-memory data stores in the cloud. \n\nThe Amazon ElastiCache dashboards provide visibility into key event and performance analytics that enable proactive diagnosis and response to system and environment issues. Use the preconfigured dashboards for at-a-glance analysis of event status trends, locations, successes and failures, as well as system health and performance metrics. The dashboards also have additional performance insights for Redis clusters.", + "children": [ + { + "type": "DashboardV2SyncDefinition", + "name": "1. Amazon ElastiCache - Host Performance Details", + "description": "The Amazon ElastiCache - Host Performance Details dashboard shows an overview of the resource utilization for a given ElastiCache cluster across its nodes and also showcases trends around CPU, memory, swap usage and network traffic.", + "title": "1. Amazon ElastiCache - Host Performance Details", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "namespace": [ + "aws/elasticache" + ], + "region": [ + "*" + ], + "cacheclusterid": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelPANE-1161D6DCA0CF2842", + "structure": "{\"height\":7,\"width\":12,\"x\":0,\"y\":19}" + }, + { + "key": "panel013CB3A4B9DC3A4C", + "structure": "{\"height\":7,\"width\":12,\"x\":0,\"y\":26}" + }, + { + "key": "panelFE6ADF0195E64842", + "structure": "{\"height\":7,\"width\":12,\"x\":12,\"y\":19}" + }, + { + "key": "panelA3C245028BD9D843", + "structure": "{\"height\":7,\"width\":12,\"x\":12,\"y\":26}" + }, + { + "key": "panelA26E1E6397AB7B42", + "structure": "{\"height\":7,\"width\":12,\"x\":12,\"y\":5}" + }, + { + "key": "panel3C352A88A33C0A4E", + "structure": "{\"height\":7,\"width\":12,\"x\":12,\"y\":12}" + }, + { + "key": "panel3C01D90E9E2B7B4D", + "structure": "{\"height\":7,\"width\":12,\"x\":0,\"y\":5}" + }, + { + "key": "panel84447385941EF844", + "structure": "{\"height\":7,\"width\":12,\"x\":0,\"y\":12}" + }, + { + "key": "panelPANE-436BAC5F8F71C844", + "structure": "{\"height\":5,\"width\":24,\"x\":0,\"y\":0}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelPANE-1161D6DCA0CF2842", + "title": "Network Packets In", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Packets\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}} \"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=NetworkPacketsIn statistic=Sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum by CacheClusterId, CacheNodeId, account, region, namespace", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel013CB3A4B9DC3A4C", + "title": "Network Packets Out", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Packets\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}} \"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=NetworkPacketsOut statistic=Sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum by CacheClusterId, CacheNodeId, account, region, namespace", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelFE6ADF0195E64842", + "title": "Network Bytes In", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Bytes\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}} \"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=NetworkBytesIn statistic=Sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum by CacheClusterId, CacheClusterId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelA3C245028BD9D843", + "title": "Network Bytes Out", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Bytes\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=NetworkBytesOut statistic=Sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelA26E1E6397AB7B42", + "title": "Freeable Memory (GB)", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"GB\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}} \"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=FreeableMemory statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg by CacheClusterId, CacheNodeId, account, region, namespace | eval _value / (1024 * 1024 * 1024)", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel3C352A88A33C0A4E", + "title": "Swap Usage (MB)", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"MB\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}} \"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=SwapUsage statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg by CacheClusterId, CacheNodeId, account, region, namespace | eval _value / (1024 * 1024)", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel3C01D90E9E2B7B4D", + "title": "CPU Utilization", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Percent\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}} \"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=CPUUtilization statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg by CacheClusterId, CacheNodeId, account, region, namespace", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel84447385941EF844", + "title": "Engine CPU Utilization", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Percent\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}} \"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=EngineCPUUtilization statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg by CacheClusterId, CacheNodeId, account, region, namespace", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-436BAC5F8F71C844", + "title": "Cluster and Node Details", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"distribution\",\"decimals\":2},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"CPU Utilization\"}},{\"series\":[],\"queries\":[\"B\"],\"properties\":{\"name\":\"Freeable Memory (GB)\"}},{\"series\":[],\"queries\":[\"C\"],\"properties\":{\"name\":\"Engine CPU Utilization\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=CPUUtilization statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=FreeableMemory statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg by CacheClusterId, CacheNodeId, account, region | eval _value / (1024 * 1024 * 1024) ", + "queryType": "Metrics", + "queryKey": "B", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=EngineCPUUtilization statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg by CacheClusterId, CacheNodeId, account, region, namespace", + "queryType": "Metrics", + "queryKey": "C", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/elasticache", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "CacheClusterId", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "cacheclusterid" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "CacheNodeId", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}} CacheClusterId={{CacheClusterId}}", + "key": "cachenodeid" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "1. Amazon ElastiCache - Host Performance Overview", + "description": "The Amazon ElastiCache - Host Performance Overview dashboard provides detailed insights into CPU, memory and network performance metrics of hosts running your ElastiCache clusters.", + "title": "1. Amazon ElastiCache - Host Performance Overview", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "namespace": [ + "aws/elasticache" + ], + "region": [ + "*" + ], + "_sumo_domain_name": [ + "aws" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelPANE-DAD554E4A6BCC843", + "structure": "{\"height\":5,\"width\":3,\"x\":15,\"y\":0}" + }, + { + "key": "panelPANE-3FF7DB0BB6188A4D", + "structure": "{\"height\":6,\"width\":8,\"x\":8,\"y\":5}" + }, + { + "key": "panelPANE-AD09413E82EF994D", + "structure": "{\"height\":6,\"width\":8,\"x\":0,\"y\":5}" + }, + { + "key": "panelPANE-6CF530B1B7B1384B", + "structure": "{\"height\":5,\"width\":3,\"x\":0,\"y\":0}" + }, + { + "key": "panelPANE-80FE1A5C8372F84F", + "structure": "{\"height\":5,\"width\":3,\"x\":6,\"y\":0}" + }, + { + "key": "panelPANE-EDD9E06BB32AEA42", + "structure": "{\"height\":5,\"width\":3,\"x\":3,\"y\":0}" + }, + { + "key": "panel989CF605A88D3844", + "structure": "{\"height\":5,\"width\":3,\"x\":21,\"y\":0}" + }, + { + "key": "panel64548DCEB83D194D", + "structure": "{\"height\":5,\"width\":3,\"x\":18,\"y\":0}" + }, + { + "key": "panelF38FB8BA80FD884B", + "structure": "{\"height\":5,\"width\":3,\"x\":9,\"y\":0}" + }, + { + "key": "panelD6156E21B17CA94F", + "structure": "{\"height\":5,\"width\":3,\"x\":12,\"y\":0}" + }, + { + "key": "panelPANE-DE9EBFD69FD53A46", + "structure": "{\"height\":6,\"width\":8,\"x\":0,\"y\":11}" + }, + { + "key": "panel4A4045BBA3228A4F", + "structure": "{\"height\":6,\"width\":8,\"x\":8,\"y\":11}" + }, + { + "key": "panel608F10C3A9631A40", + "structure": "{\"height\":6,\"width\":8,\"x\":16,\"y\":17}" + }, + { + "key": "panel622549C5B893994A", + "structure": "{\"height\":6,\"width\":8,\"x\":8,\"y\":17}" + }, + { + "key": "panel0E86E8BAA74A8842", + "structure": "{\"height\":6,\"width\":8,\"x\":0,\"y\":17}" + }, + { + "key": "panel8E23238D95CBF942", + "structure": "{\"height\":6,\"width\":8,\"x\":16,\"y\":11}" + }, + { + "key": "panelF634964B97D8CB4B", + "structure": "{\"height\":6,\"width\":8,\"x\":16,\"y\":5}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelPANE-DAD554E4A6BCC843", + "title": "Bytes In", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Sum\",\"label\":\"GB\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":2,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=NetworkBytesIn statistic=Sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum | eval _value / (1024 * 1024 * 1024)", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-3FF7DB0BB6188A4D", + "title": "Average Engine CPU Utilization", + "visualSettings": "{\"general\":{\"mode\":\"honeyComb\",\"type\":\"honeyComb\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"honeyComb\":{\"thresholds\":[{\"from\":0,\"to\":75,\"color\":\"#75bf00\"},{\"from\":75,\"to\":85,\"color\":\"#f6c851\"},{\"from\":85,\"to\":null,\"color\":\"#f36644\"}],\"shape\":\"hexagon\",\"groupBy\":[],\"aggregationType\":\"avg\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=EngineCPUUtilization statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg by account, region, namespace, CacheClusterId, CacheNodeId", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-AD09413E82EF994D", + "title": "Average CPU Utilization", + "visualSettings": "{\"general\":{\"mode\":\"honeyComb\",\"type\":\"honeyComb\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"honeyComb\":{\"thresholds\":[{\"from\":0,\"to\":75,\"color\":\"#75bf00\"},{\"from\":75,\"to\":85,\"color\":\"#f6c851\"},{\"from\":85,\"to\":null,\"color\":\"#f36644\"}],\"shape\":\"hexagon\",\"groupBy\":[],\"aggregationType\":\"avg\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=CPUUtilization statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg by CacheClusterId, CacheNodeId, account, region, namespace", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-6CF530B1B7B1384B", + "title": "Avg CPU Utilization", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"mode\":\"singleValueMetrics\"},\"svp\":{\"option\":\"Average\",\"label\":\"%\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"No data\",\"hideData\":false,\"rounding\":2,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":0,\"to\":75,\"color\":\"#16943E\"},{\"from\":75,\"to\":85,\"color\":\"#DFBE2E\"},{\"from\":85,\"to\":101,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":false},\"gauge\":{\"show\":true}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=CPUUtilization statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-80FE1A5C8372F84F", + "title": "Avg Free Memory (GB)", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Average\",\"label\":\"GB\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":2,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=FreeableMemory statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg | eval _value / (1024 * 1024 * 1024)", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-EDD9E06BB32AEA42", + "title": "Avg Engine CPU Utilization ", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Average\",\"label\":\"%\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"No data\",\"hideData\":false,\"rounding\":2,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":0,\"to\":75,\"color\":\"#16943E\"},{\"from\":75,\"to\":85,\"color\":\"#DFBE2E\"},{\"from\":85,\"to\":101,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":false},\"gauge\":{\"show\":true,\"min\":0,\"max\":100}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=EngineCPUUtilization statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel989CF605A88D3844", + "title": "Swap Usage", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Average\",\"label\":\"MB\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":2,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=SwapUsage statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg | eval _value / (1024 * 1024)", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel64548DCEB83D194D", + "title": "Bytes Out", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Sum\",\"label\":\"GB\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":2,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=NetworkBytesOut statistic=Sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum | eval _value / (1024 * 1024 * 1024)", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelF38FB8BA80FD884B", + "title": "Packets In", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Sum\",\"label\":\"Million\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":2,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=NetworkPacketsIn statistic=Sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum | eval _value / 1000000", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelD6156E21B17CA94F", + "title": "Packets Out", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Sum\",\"label\":\"Million\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":2,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=NetworkPacketsOut statistic=Sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum | eval _value / 1000000", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-DE9EBFD69FD53A46", + "title": "Bytes In - Today Vs Yesterday", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"Today\"}},{\"series\":[],\"queries\":[\"B\"],\"properties\":{\"name\":\"Yesterday\"}},{\"series\":[],\"queries\":[\"C\"],\"properties\":{\"axisYType\":\"secondary\",\"displayType\":\"smooth\",\"name\":\"Percentage Change\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=NetworkBytesIn Statistic=Sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "#A | timeshift 1d", + "queryType": "Metrics", + "queryKey": "B", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "((#A-#B)/#B)*100", + "queryType": "Metrics", + "queryKey": "C", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel4A4045BBA3228A4F", + "title": "Bytes Out - Today Vs Yesterday", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"Today\"}},{\"series\":[],\"queries\":[\"B\"],\"properties\":{\"name\":\"Yesterday\"}},{\"series\":[],\"queries\":[\"C\"],\"properties\":{\"axisYType\":\"secondary\",\"displayType\":\"smooth\",\"name\":\"Percentage Change\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=NetworkBytesOut Statistic=Sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "#A | timeshift 1d", + "queryType": "Metrics", + "queryKey": "B", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "((#A-#B)/#B)*100", + "queryType": "Metrics", + "queryKey": "C", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel608F10C3A9631A40", + "title": "Net Difference of In and Out (Packets) Network Traffic", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{\"A_metric=sum(NetworkPacketsIn)\":{\"visible\":true},\"B_metric=sum(NetworkPacketsIn) _timeshift=1d\":{\"visible\":true},\"C_A.metric=sum(NetworkPacketsIn) metric=sum(NetworkPacketsIn) _timeshift=1d\":{\"visible\":true}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"PacketsIn\"}},{\"series\":[],\"queries\":[\"B\"],\"properties\":{\"name\":\"PacketsOut\"}},{\"series\":[],\"queries\":[\"C\"],\"properties\":{\"axisYType\":\"secondary\",\"displayType\":\"smooth\",\"name\":\"Net Difference\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=NetworkPacketsIn Statistic=Sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | rate | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=NetworkPacketsOut Statistic=Sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | rate | sum", + "queryType": "Metrics", + "queryKey": "B", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "#B - #A", + "queryType": "Metrics", + "queryKey": "C", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel622549C5B893994A", + "title": "Packets Out - Today Vs Yesterday", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"Today\"}},{\"series\":[],\"queries\":[\"B\"],\"properties\":{\"name\":\"Yesterday\"}},{\"series\":[],\"queries\":[\"C\"],\"properties\":{\"axisYType\":\"secondary\",\"displayType\":\"smooth\",\"name\":\"Percentage Change\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=NetworkPacketsOut Statistic=Sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "#A | timeshift 1d", + "queryType": "Metrics", + "queryKey": "B", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "((#A-#B)/#B)*100", + "queryType": "Metrics", + "queryKey": "C", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel0E86E8BAA74A8842", + "title": "Packets In - Today Vs Yesterday", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"Today\"}},{\"series\":[],\"queries\":[\"B\"],\"properties\":{\"name\":\"Yesterday\"}},{\"series\":[],\"queries\":[\"C\"],\"properties\":{\"axisYType\":\"secondary\",\"displayType\":\"smooth\",\"name\":\"Percentage Change\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=NetworkPacketsIn Statistic=Sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "#A | timeshift 1d", + "queryType": "Metrics", + "queryKey": "B", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "((#A-#B)/#B)*100", + "queryType": "Metrics", + "queryKey": "C", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel8E23238D95CBF942", + "title": "Net Difference of In and Out (Bytes) Network Traffic", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{\"A_metric=sum(NetworkPacketsIn)\":{\"visible\":true},\"B_metric=sum(NetworkPacketsIn) _timeshift=1d\":{\"visible\":true},\"C_A.metric=sum(NetworkPacketsIn) metric=sum(NetworkPacketsIn) _timeshift=1d\":{\"visible\":true}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"BytesIn\"}},{\"series\":[],\"queries\":[\"B\"],\"properties\":{\"name\":\"BytesOut\"}},{\"series\":[],\"queries\":[\"C\"],\"properties\":{\"axisYType\":\"secondary\",\"displayType\":\"smooth\",\"name\":\"Net Difference\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=NetworkBytesIn Statistic=Sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | rate | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=NetworkBytesOut Statistic=Sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | rate | sum", + "queryType": "Metrics", + "queryKey": "B", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "#B - #A", + "queryType": "Metrics", + "queryKey": "C", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelF634964B97D8CB4B", + "title": "Swap Usage (MB)", + "visualSettings": "{\"general\":{\"mode\":\"honeyComb\",\"type\":\"honeyComb\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"honeyComb\":{\"thresholds\":[{\"from\":0,\"to\":25,\"color\":\"#75bf00\"},{\"from\":25,\"to\":50,\"color\":\"#f6c851\"},{\"from\":50,\"to\":null,\"color\":\"#f36644\"}],\"shape\":\"hexagon\",\"groupBy\":[],\"aggregationType\":\"max\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=SwapUsage statistic=Maximum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | max by account, region, namespace, CacheClusterId, CacheNodeId | eval _value / (1024 * 1024)", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/elasticache", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "CacheClusterId", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "cacheclusterid" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "CacheNodeId", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}} CacheClusterId={{CacheClusterId}}", + "key": "cachenodeid" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "2. Amazon ElastiCache - Audit Event Overview", + "description": "The Amazon ElastiCache - Audit Event Overview dashboard provides detailed insights into all events associated with ElastiCache clusters and specifically helps identify changes, errors, users and replication groups.", + "title": "2. Amazon ElastiCache - Audit Event Overview", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "namespace": [ + "aws/elasticache" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelPANE-9A6827ADAFD40B48", + "structure": "{\"height\":5,\"width\":6,\"x\":0,\"y\":0}" + }, + { + "key": "panel808FD9FD8BFB6846", + "structure": "{\"height\":6,\"width\":6,\"x\":0,\"y\":23}" + }, + { + "key": "panelPANE-F6D67170A3207848", + "structure": "{\"height\":10,\"width\":12,\"x\":12,\"y\":0}" + }, + { + "key": "panelPANE-55BA9CD690905848", + "structure": "{\"height\":5,\"width\":12,\"x\":0,\"y\":10}" + }, + { + "key": "panelE1BCBDE685FB3944", + "structure": "{\"height\":6,\"width\":6,\"x\":0,\"y\":29}" + }, + { + "key": "panelPANE-4D66006086774A44", + "structure": "{\"height\":5,\"width\":6,\"x\":6,\"y\":0}" + }, + { + "key": "panelPANE-829F6ADB86227949", + "structure": "{\"height\":6,\"width\":18,\"x\":6,\"y\":29}" + }, + { + "key": "panel1DA5F9AA9C03F945", + "structure": "{\"height\":6,\"width\":18,\"x\":6,\"y\":23}" + }, + { + "key": "panelPANE-9D1136C884776B4C", + "structure": "{\"height\":5,\"width\":6,\"x\":0,\"y\":5}" + }, + { + "key": "panelPANE-C6B1C1249FED294C", + "structure": "{\"height\":8,\"width\":12,\"x\":0,\"y\":15}" + }, + { + "key": "panel422C79CD944AC840", + "structure": "{\"height\":8,\"width\":12,\"x\":12,\"y\":15}" + }, + { + "key": "panelB86F7C84926F1844", + "structure": "{\"height\":5,\"width\":6,\"x\":6,\"y\":5}" + }, + { + "key": "panelABB275868F4B2A44", + "structure": "{\"height\":5,\"width\":12,\"x\":12,\"y\":10}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelPANE-9A6827ADAFD40B48", + "title": "Event Status", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"pie\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"fillOpacity\":1,\"startAngle\":270,\"innerRadius\":\"50%\",\"maxNumOfSlices\":10,\"mode\":\"distribution\"},\"series\":{},\"legend\":{\"enabled\":false},\"overrides\":[{\"series\":[\"Success\"],\"queries\":[],\"properties\":{\"color\":\"#75bf00\"}},{\"series\":[\"Failure\"],\"queries\":[],\"properties\":{\"color\":\"#f36644\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"elasticache.amazonaws.com\\\"\"\n| json \"userIdentity\", \"eventSource\", \"eventName\", \"awsRegion\", \"sourceIPAddress\", \"userAgent\", \"eventType\", \"recipientAccountId\", \"requestParameters\", \"responseElements\", \"requestID\", \"errorCode\", \"errorMessage\" as userIdentity, event_source, event_name, region, src_ip, user_agent, event_type, recipient_account_id, requestParameters, responseElements, request_id, error_code, error_message nodrop\n| where event_source = \"elasticache.amazonaws.com\"\n| json field=userIdentity \"type\", \"principalId\", \"arn\", \"userName\", \"accountId\" nodrop\n| json field=userIdentity \"sessionContext.attributes.mfaAuthenticated\" as mfaAuthenticated nodrop\n| json field=requestParameters \"replicationGroupId\", \"engine\", \"engineVersion\" as req_replicationGroupId, req_engine, req_engineVersion nodrop\n| json field=responseElements \"replicationGroupId\", \"engine\", \"engineVersion\", \"status\" as res_replicationGroupId, res_engine, res_engineVersion, res_status nodrop\n| parse field=arn \":assumed-role/*\" as user nodrop \n| parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| if (isEmpty(error_code), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| if (isEmpty(req_replicationGroupId), res_replicationGroupId, req_replicationGroupId) as replicationgroupid\n| if (isEmpty(req_engine), res_engine, req_engine) as engine\n| if (isEmpty(req_engineVersion), res_engineVersion, req_engineVersion) as engine_version\n| count by eventStatus\n| sort by _count, eventStatus asc", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel808FD9FD8BFB6846", + "title": "Successful Events", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"pie\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"fillOpacity\":1,\"startAngle\":270,\"innerRadius\":\"50%\",\"maxNumOfSlices\":10,\"mode\":\"distribution\"},\"series\":{},\"legend\":{\"enabled\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"elasticache.amazonaws.com\\\"\" !errorCode\n| json \"userIdentity\", \"eventSource\", \"eventName\", \"awsRegion\", \"sourceIPAddress\", \"userAgent\", \"eventType\", \"recipientAccountId\", \"requestParameters\", \"responseElements\", \"requestID\", \"errorCode\", \"errorMessage\" as userIdentity, event_source, event_name, region, src_ip, user_agent, event_type, recipient_account_id, requestParameters, responseElements, request_id, error_code, error_message nodrop\n| where event_source = \"elasticache.amazonaws.com\" and isEmpty(error_code)\n| json field=userIdentity \"type\", \"principalId\", \"arn\", \"userName\", \"accountId\" nodrop\n| json field=userIdentity \"sessionContext.attributes.mfaAuthenticated\" as mfaAuthenticated nodrop\n| json field=requestParameters \"replicationGroupId\", \"engine\", \"engineVersion\" as req_replicationGroupId, req_engine, req_engineVersion nodrop\n| json field=responseElements \"replicationGroupId\", \"engine\", \"engineVersion\", \"status\" as res_replicationGroupId, res_engine, res_engineVersion, res_status nodrop\n| parse field=arn \":assumed-role/*\" as user nodrop \n| parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| if (isEmpty(error_code), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| if (isEmpty(req_replicationGroupId), res_replicationGroupId, req_replicationGroupId) as replicationgroupid\n| if (isEmpty(req_engine), res_engine, req_engine) as engine\n| if (isEmpty(req_engineVersion), res_engineVersion, req_engineVersion) as engine_version\n| count by event_name\n| sort by _count, event_name asc", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-F6D67170A3207848", + "title": "Event Locations", + "visualSettings": "{\"general\":{\"mode\":\"map\",\"type\":\"map\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"elasticache.amazonaws.com\\\"\" sourceIPAddress\n| json \"userIdentity\", \"eventSource\", \"eventName\", \"awsRegion\", \"sourceIPAddress\", \"userAgent\", \"eventType\", \"recipientAccountId\", \"requestParameters\", \"responseElements\", \"requestID\", \"errorCode\", \"errorMessage\" as userIdentity, event_source, event_name, region, src_ip, user_agent, event_type, recipient_account_id, requestParameters, responseElements, request_id, error_code, error_message nodrop\n| where event_source = \"elasticache.amazonaws.com\" and !(src_ip matches \"*.amazonaws.com\")\n| json field=userIdentity \"type\", \"principalId\", \"arn\", \"userName\", \"accountId\" nodrop\n| json field=userIdentity \"sessionContext.attributes.mfaAuthenticated\" as mfaAuthenticated nodrop\n| json field=requestParameters \"replicationGroupId\", \"engine\", \"engineVersion\" as req_replicationGroupId, req_engine, req_engineVersion nodrop\n| json field=responseElements \"replicationGroupId\", \"engine\", \"engineVersion\", \"status\" as res_replicationGroupId, res_engine, res_engineVersion, res_status nodrop\n| parse field=arn \":assumed-role/*\" as user nodrop \n| parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| if (isEmpty(error_code), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| if (isEmpty(req_replicationGroupId), res_replicationGroupId, req_replicationGroupId) as replicationgroupid\n| if (isEmpty(req_engine), res_engine, req_engine) as engine\n| if (isEmpty(req_engineVersion), res_engineVersion, req_engineVersion) as engine_version\n| count by src_ip\n| lookup latitude, longitude, country_code, country_name, region, city, postal_code from geo://location on ip = src_ip\n| where !isNull(latitude)", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-55BA9CD690905848", + "title": "Events Trend", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"column\",\"displayType\":\"stacked\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"fillOpacity\":1,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"overrides\":[],\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"elasticache.amazonaws.com\\\"\"\n| json \"userIdentity\", \"eventSource\", \"eventName\", \"awsRegion\", \"sourceIPAddress\", \"userAgent\", \"eventType\", \"recipientAccountId\", \"requestParameters\", \"responseElements\", \"requestID\", \"errorCode\", \"errorMessage\" as userIdentity, event_source, event_name, region, src_ip, user_agent, event_type, recipient_account_id, requestParameters, responseElements, request_id, error_code, error_message nodrop\n| where event_source = \"elasticache.amazonaws.com\"\n| json field=userIdentity \"type\", \"principalId\", \"arn\", \"userName\", \"accountId\" nodrop\n| json field=userIdentity \"sessionContext.attributes.mfaAuthenticated\" as mfaAuthenticated nodrop\n| json field=requestParameters \"replicationGroupId\", \"engine\", \"engineVersion\" as req_replicationGroupId, req_engine, req_engineVersion nodrop\n| json field=responseElements \"replicationGroupId\", \"engine\", \"engineVersion\", \"status\" as res_replicationGroupId, res_engine, res_engineVersion, res_status nodrop\n| parse field=arn \":assumed-role/*\" as user nodrop \n| parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| if (isEmpty(error_code), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| if (isEmpty(req_replicationGroupId), res_replicationGroupId, req_replicationGroupId) as replicationgroupid\n| if (isEmpty(req_engine), res_engine, req_engine) as engine\n| if (isEmpty(req_engineVersion), res_engineVersion, req_engineVersion) as engine_version\n| timeslice 1h\n| count by _timeslice, event_name\n| transpose row _timeslice column event_name", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelE1BCBDE685FB3944", + "title": "Failed Events", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"pie\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"fillOpacity\":1,\"startAngle\":270,\"innerRadius\":\"50%\",\"maxNumOfSlices\":10,\"mode\":\"distribution\"},\"series\":{},\"legend\":{\"enabled\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"elasticache.amazonaws.com\\\"\" errorCode\n| json \"userIdentity\", \"eventSource\", \"eventName\", \"awsRegion\", \"sourceIPAddress\", \"userAgent\", \"eventType\", \"recipientAccountId\", \"requestParameters\", \"responseElements\", \"requestID\", \"errorCode\", \"errorMessage\" as userIdentity, event_source, event_name, region, src_ip, user_agent, event_type, recipient_account_id, requestParameters, responseElements, request_id, error_code, error_message nodrop\n| where event_source = \"elasticache.amazonaws.com\" and !isEmpty(error_code)\n| json field=userIdentity \"type\", \"principalId\", \"arn\", \"userName\", \"accountId\" nodrop\n| json field=userIdentity \"sessionContext.attributes.mfaAuthenticated\" as mfaAuthenticated nodrop\n| json field=requestParameters \"replicationGroupId\", \"engine\", \"engineVersion\" as req_replicationGroupId, req_engine, req_engineVersion nodrop\n| json field=responseElements \"replicationGroupId\", \"engine\", \"engineVersion\", \"status\" as res_replicationGroupId, res_engine, res_engineVersion, res_status nodrop\n| parse field=arn \":assumed-role/*\" as user nodrop \n| parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| if (isEmpty(error_code), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| if (isEmpty(req_replicationGroupId), res_replicationGroupId, req_replicationGroupId) as replicationgroupid\n| if (isEmpty(req_engine), res_engine, req_engine) as engine\n| if (isEmpty(req_engineVersion), res_engineVersion, req_engineVersion) as engine_version\n| count by event_name\n| sort by _count, event_name asc", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-4D66006086774A44", + "title": "Top 10 Error Codes", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"pie\",\"displayType\":\"default\",\"fillOpacity\":1,\"startAngle\":270,\"innerRadius\":\"50%\",\"maxNumOfSlices\":10,\"mode\":\"distribution\"},\"series\":{},\"legend\":{\"enabled\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"elasticache.amazonaws.com\\\"\" errorCode\n| json \"userIdentity\", \"eventSource\", \"eventName\", \"awsRegion\", \"sourceIPAddress\", \"userAgent\", \"eventType\", \"recipientAccountId\", \"requestParameters\", \"responseElements\", \"requestID\", \"errorCode\", \"errorMessage\" as userIdentity, event_source, event_name, region, src_ip, user_agent, event_type, recipient_account_id, requestParameters, responseElements, request_id, error_code, error_message nodrop\n| where event_source = \"elasticache.amazonaws.com\" and !isEmpty(error_code)\n| json field=userIdentity \"type\", \"principalId\", \"arn\", \"userName\", \"accountId\" nodrop\n| json field=userIdentity \"sessionContext.attributes.mfaAuthenticated\" as mfaAuthenticated nodrop\n| json field=requestParameters \"replicationGroupId\", \"engine\", \"engineVersion\" as req_replicationGroupId, req_engine, req_engineVersion nodrop\n| json field=responseElements \"replicationGroupId\", \"engine\", \"engineVersion\", \"status\" as res_replicationGroupId, res_engine, res_engineVersion, res_status nodrop\n| parse field=arn \":assumed-role/*\" as user nodrop \n| parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| if (isEmpty(error_code), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| if (isEmpty(req_replicationGroupId), res_replicationGroupId, req_replicationGroupId) as replicationgroupid\n| if (isEmpty(req_engine), res_engine, req_engine) as engine\n| if (isEmpty(req_engineVersion), res_engineVersion, req_engineVersion) as engine_version\n| count as Count by error_code | sort by Count, error_code asc | limit 10", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-829F6ADB86227949", + "title": "Failed Event Details", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"timeSeries\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"elasticache.amazonaws.com\\\"\" errorCode\n| json \"userIdentity\", \"eventSource\", \"eventName\", \"awsRegion\", \"sourceIPAddress\", \"userAgent\", \"eventType\", \"recipientAccountId\", \"requestParameters\", \"responseElements\", \"requestID\", \"errorCode\", \"errorMessage\" as userIdentity, event_source, event_name, region, src_ip, user_agent, event_type, recipient_account_id, requestParameters, responseElements, request_id, error_code, error_message nodrop\n| where event_source = \"elasticache.amazonaws.com\" and !isEmpty(error_code)\n| json field=userIdentity \"type\", \"principalId\", \"arn\", \"userName\", \"accountId\" nodrop\n| json field=userIdentity \"sessionContext.attributes.mfaAuthenticated\" as mfaAuthenticated nodrop\n| json field=requestParameters \"replicationGroupId\", \"engine\", \"engineVersion\" as req_replicationGroupId, req_engine, req_engineVersion nodrop\n| json field=responseElements \"replicationGroupId\", \"engine\", \"engineVersion\", \"status\" as res_replicationGroupId, res_engine, res_engineVersion, res_status nodrop\n| parse field=arn \":assumed-role/*\" as user nodrop \n| parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| if (isEmpty(error_code), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| if (isEmpty(req_replicationGroupId), res_replicationGroupId, req_replicationGroupId) as replicationgroupid\n| if (isEmpty(req_engine), res_engine, req_engine) as engine\n| if (isEmpty(req_engineVersion), res_engineVersion, req_engineVersion) as engine_version\n| timeslice 1s\n| count as Count by _timeslice, event_name, error_code, error_message, src_ip, user, type, request_id, user_agent, engine, engine_version\n| sort by _timeslice", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel1DA5F9AA9C03F945", + "title": "Successful Event Details", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"timeSeries\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"elasticache.amazonaws.com\\\"\" !errorCode\n| json \"userIdentity\", \"eventSource\", \"eventName\", \"awsRegion\", \"sourceIPAddress\", \"userAgent\", \"eventType\", \"recipientAccountId\", \"requestParameters\", \"responseElements\", \"requestID\", \"errorCode\", \"errorMessage\" as userIdentity, event_source, event_name, region, src_ip, user_agent, event_type, recipient_account_id, requestParameters, responseElements, request_id, error_code, error_message nodrop\n| where event_source = \"elasticache.amazonaws.com\" and isEmpty(error_code)\n| json field=userIdentity \"type\", \"principalId\", \"arn\", \"userName\", \"accountId\" nodrop\n| json field=userIdentity \"sessionContext.attributes.mfaAuthenticated\" as mfaAuthenticated nodrop\n| json field=requestParameters \"replicationGroupId\", \"engine\", \"engineVersion\" as req_replicationGroupId, req_engine, req_engineVersion nodrop\n| json field=responseElements \"replicationGroupId\", \"engine\", \"engineVersion\", \"status\" as res_replicationGroupId, res_engine, res_engineVersion, res_status nodrop\n| parse field=arn \":assumed-role/*\" as user nodrop \n| parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| if (isEmpty(error_code), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| if (isEmpty(req_replicationGroupId), res_replicationGroupId, req_replicationGroupId) as replicationgroupid\n| if (isEmpty(req_engine), res_engine, req_engine) as engine\n| if (isEmpty(req_engineVersion), res_engineVersion, req_engineVersion) as engine_version\n| timeslice 1s\n| count as Count by _timeslice, event_name, src_ip, user, type, request_id, user_agent, engine, engine_version\n| sort by _timeslice", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-9D1136C884776B4C", + "title": "Top 10 ReplicationGroupId's", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"timeSeries\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"elasticache.amazonaws.com\\\"\" replicationGroupId\n| json \"userIdentity\", \"eventSource\", \"eventName\", \"awsRegion\", \"sourceIPAddress\", \"userAgent\", \"eventType\", \"recipientAccountId\", \"requestParameters\", \"responseElements\", \"requestID\", \"errorCode\", \"errorMessage\" as userIdentity, event_source, event_name, region, src_ip, user_agent, event_type, recipient_account_id, requestParameters, responseElements, request_id, error_code, error_message nodrop\n| where event_source = \"elasticache.amazonaws.com\" \n| json field=userIdentity \"type\", \"principalId\", \"arn\", \"userName\", \"accountId\" nodrop\n| json field=userIdentity \"sessionContext.attributes.mfaAuthenticated\" as mfaAuthenticated nodrop\n| json field=requestParameters \"replicationGroupId\", \"engine\", \"engineVersion\" as req_replicationGroupId, req_engine, req_engineVersion nodrop\n| json field=responseElements \"replicationGroupId\", \"engine\", \"engineVersion\", \"status\" as res_replicationGroupId, res_engine, res_engineVersion, res_status nodrop\n| if (isEmpty(req_replicationGroupId), res_replicationGroupId, req_replicationGroupId) as replicationgroupid\n| where !isEmpty(replicationgroupid)\n| parse field=arn \":assumed-role/*\" as user nodrop \n| parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| if (isEmpty(error_code), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| if (isEmpty(req_engine), res_engine, req_engine) as engine\n| if (isEmpty(req_engineVersion), res_engineVersion, req_engineVersion) as engine_version\n| res_status as Status\n| count as Count by replicationgroupid | sort by Count, replicationgroupid asc | limit 10", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-C6B1C1249FED294C", + "title": "Top 10 Users", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"distribution\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"elasticache.amazonaws.com\\\"\"\n| json \"userIdentity\", \"eventSource\", \"eventName\", \"awsRegion\", \"sourceIPAddress\", \"userAgent\", \"eventType\", \"recipientAccountId\", \"requestParameters\", \"responseElements\", \"requestID\", \"errorCode\", \"errorMessage\" as userIdentity, event_source, event_name, region, src_ip, user_agent, event_type, recipient_account_id, requestParameters, responseElements, request_id, error_code, error_message nodrop\n| where event_source = \"elasticache.amazonaws.com\"\n| json field=userIdentity \"type\", \"principalId\", \"arn\", \"userName\", \"accountId\" nodrop\n| json field=userIdentity \"sessionContext.attributes.mfaAuthenticated\" as mfaAuthenticated nodrop\n| json field=requestParameters \"replicationGroupId\", \"engine\", \"engineVersion\" as req_replicationGroupId, req_engine, req_engineVersion nodrop\n| json field=responseElements \"replicationGroupId\", \"engine\", \"engineVersion\", \"status\" as res_replicationGroupId, res_engine, res_engineVersion, res_status nodrop\n| parse field=arn \":assumed-role/*\" as user nodrop \n| parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| if (isEmpty(error_code), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| if (isEmpty(req_replicationGroupId), res_replicationGroupId, req_replicationGroupId) as replicationgroupid\n| if (isEmpty(req_engine), res_engine, req_engine) as engine\n| if (isEmpty(req_engineVersion), res_engineVersion, req_engineVersion) as engine_version\n| count as Count by type, user\n| sort by Count, type asc, user asc | limit 10", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel422C79CD944AC840", + "title": "Events by User", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"bar\",\"displayType\":\"stacked\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"fillOpacity\":1,\"mode\":\"distribution\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"elasticache.amazonaws.com\\\"\"\n| json \"userIdentity\", \"eventSource\", \"eventName\", \"awsRegion\", \"sourceIPAddress\", \"userAgent\", \"eventType\", \"recipientAccountId\", \"requestParameters\", \"responseElements\", \"requestID\", \"errorCode\", \"errorMessage\" as userIdentity, event_source, event_name, region, src_ip, user_agent, event_type, recipient_account_id, requestParameters, responseElements, request_id, error_code, error_message nodrop\n| where event_source = \"elasticache.amazonaws.com\"\n| json field=userIdentity \"type\", \"principalId\", \"arn\", \"userName\", \"accountId\" nodrop\n| json field=userIdentity \"sessionContext.attributes.mfaAuthenticated\" as mfaAuthenticated nodrop\n| json field=requestParameters \"replicationGroupId\", \"engine\", \"engineVersion\" as req_replicationGroupId, req_engine, req_engineVersion nodrop\n| json field=responseElements \"replicationGroupId\", \"engine\", \"engineVersion\", \"status\" as res_replicationGroupId, res_engine, res_engineVersion, res_status nodrop\n| parse field=arn \":assumed-role/*\" as user nodrop \n| parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| if (isEmpty(error_code), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| if (isEmpty(req_replicationGroupId), res_replicationGroupId, req_replicationGroupId) as replicationgroupid\n| if (isEmpty(req_engine), res_engine, req_engine) as engine\n| if (isEmpty(req_engineVersion), res_engineVersion, req_engineVersion) as engine_version\n| count by user, event_name\n| transpose row user column event_name", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelB86F7C84926F1844", + "title": "Event Types", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"pie\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"fillOpacity\":1,\"startAngle\":270,\"innerRadius\":\"50%\",\"maxNumOfSlices\":10,\"mode\":\"distribution\"},\"overrides\":[],\"series\":{\"A_readonlyEvents\":{\"visible\":true},\"A_updateEvents\":{\"visible\":true}},\"legend\":{\"enabled\":false}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"elasticache.amazonaws.com\\\"\"\n| json \"userIdentity\", \"eventSource\", \"eventName\", \"awsRegion\", \"sourceIPAddress\", \"userAgent\", \"eventType\", \"recipientAccountId\", \"requestParameters\", \"responseElements\", \"requestID\", \"errorCode\", \"errorMessage\" as userIdentity, event_source, event_name, region, src_ip, user_agent, event_type, recipient_account_id, requestParameters, responseElements, request_id, error_code, error_message nodrop\n| where event_source = \"elasticache.amazonaws.com\"\n| if (event_name matches \"*Describe*\" or event_name matches \"*List*\", \"ReadOnly\", if (!(event_name matches \"*Describe*\") and !(event_name matches \"*List*\"), \"Update\", \"Unkown\")) as EventType\n| where EventType<>\"Unknown\"\n| json field=userIdentity \"type\", \"principalId\", \"arn\", \"userName\", \"accountId\" nodrop\n| json field=userIdentity \"sessionContext.attributes.mfaAuthenticated\" as mfaAuthenticated nodrop\n| json field=requestParameters \"replicationGroupId\", \"engine\", \"engineVersion\" as req_replicationGroupId, req_engine, req_engineVersion nodrop\n| json field=responseElements \"replicationGroupId\", \"engine\", \"engineVersion\", \"status\" as res_replicationGroupId, res_engine, res_engineVersion, res_status nodrop\n| parse field=arn \":assumed-role/*\" as user nodrop \n| parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| if (isEmpty(error_code), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| if (isEmpty(req_replicationGroupId), res_replicationGroupId, req_replicationGroupId) as replicationgroupid\n| if (isEmpty(req_engine), res_engine, req_engine) as engine\n| if (isEmpty(req_engineVersion), res_engineVersion, req_engineVersion) as engine_version\n| count by EventType", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelABB275868F4B2A44", + "title": "Events Status Trend", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"column\",\"displayType\":\"stacked\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"fillOpacity\":1,\"mode\":\"timeSeries\"},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[\"Failure\"],\"queries\":[],\"properties\":{\"color\":\"#f36644\"}},{\"series\":[\"Success\"],\"queries\":[],\"properties\":{\"color\":\"#75bf00\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"elasticache.amazonaws.com\\\"\"\n| json \"userIdentity\", \"eventSource\", \"eventName\", \"awsRegion\", \"sourceIPAddress\", \"userAgent\", \"eventType\", \"recipientAccountId\", \"requestParameters\", \"responseElements\", \"requestID\", \"errorCode\", \"errorMessage\" as userIdentity, event_source, event_name, region, src_ip, user_agent, event_type, recipient_account_id, requestParameters, responseElements, request_id, error_code, error_message nodrop\n| where event_source = \"elasticache.amazonaws.com\"\n| json field=userIdentity \"type\", \"principalId\", \"arn\", \"userName\", \"accountId\" nodrop\n| json field=userIdentity \"sessionContext.attributes.mfaAuthenticated\" as mfaAuthenticated nodrop\n| json field=requestParameters \"replicationGroupId\", \"engine\", \"engineVersion\" as req_replicationGroupId, req_engine, req_engineVersion nodrop\n| json field=responseElements \"replicationGroupId\", \"engine\", \"engineVersion\", \"status\" as res_replicationGroupId, res_engine, res_engineVersion, res_status nodrop\n| parse field=arn \":assumed-role/*\" as user nodrop \n| parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| if (isEmpty(error_code), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| if (isEmpty(req_replicationGroupId), res_replicationGroupId, req_replicationGroupId) as replicationgroupid\n| if (isEmpty(req_engine), res_engine, req_engine) as engine\n| if (isEmpty(req_engineVersion), res_engineVersion, req_engineVersion) as engine_version\n| timeslice 1h\n| count by _timeslice, eventStatus\n| transpose row _timeslice column eventStatus", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/elasticache", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "CacheClusterId", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "cacheclusterid" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "CacheNodeId", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}} CacheClusterId={{CacheClusterId}}", + "key": "cachenodeid" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "2. Amazon ElastiCache - Redis Performance Details", + "description": "The Amazon ElastiCache - Redis Performance Details dashboard provides detailed insights into cache hits, keys, replication, connections and failures of Redis ElastiCache clusters.", + "title": "2. Amazon ElastiCache - Redis Performance Details", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "namespace": [ + "aws/elasticache" + ], + "region": [ + "*" + ], + "cacheclusterid": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelPANE-3A698F8A9F87D943", + "structure": "{\"height\":5,\"width\":8,\"x\":8,\"y\":10}" + }, + { + "key": "panel4B06F578B4BFEA4B", + "structure": "{\"height\":5,\"width\":8,\"x\":0,\"y\":0}" + }, + { + "key": "panelD3510977A9100B4C", + "structure": "{\"height\":5,\"width\":8,\"x\":0,\"y\":5}" + }, + { + "key": "panel45FB62658515F940", + "structure": "{\"height\":5,\"width\":8,\"x\":0,\"y\":10}" + }, + { + "key": "panel4C36770FB66C0A41", + "structure": "{\"height\":5,\"width\":8,\"x\":8,\"y\":15}" + }, + { + "key": "panel2F33FBF99B938942", + "structure": "{\"height\":5,\"width\":8,\"x\":8,\"y\":5}" + }, + { + "key": "panelA7D4B21DAC6ECA4C", + "structure": "{\"height\":5,\"width\":8,\"x\":16,\"y\":10}" + }, + { + "key": "panel531765FA95966846", + "structure": "{\"height\":5,\"width\":8,\"x\":16,\"y\":15}" + }, + { + "key": "panel4900BEC9B252BB4C", + "structure": "{\"height\":5,\"width\":8,\"x\":8,\"y\":0}" + }, + { + "key": "panelD94772A7BD6BD941", + "structure": "{\"height\":5,\"width\":8,\"x\":0,\"y\":15}" + }, + { + "key": "panelEEE8CD57BDA0B840", + "structure": "{\"height\":5,\"width\":8,\"x\":8,\"y\":20}" + }, + { + "key": "panel4190B757A8B60B4E", + "structure": "{\"height\":5,\"width\":8,\"x\":16,\"y\":5}" + }, + { + "key": "panel8CD5BE7AB40B3840", + "structure": "{\"height\":5,\"width\":8,\"x\":0,\"y\":20}" + }, + { + "key": "panel7B6650EFB77E4847", + "structure": "{\"height\":5,\"width\":8,\"x\":16,\"y\":0}" + }, + { + "key": "panel322681E79C3C2A4A", + "structure": "{\"height\":5,\"width\":8,\"x\":16,\"y\":20}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelPANE-3A698F8A9F87D943", + "title": "Background Save Status", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Save In Progress\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=SaveInProgress statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel4B06F578B4BFEA4B", + "title": "Cache Hits", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Hits\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=CacheHits statistic=sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelD3510977A9100B4C", + "title": "Cache Misses", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Misses\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=CacheMisses statistic=sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel45FB62658515F940", + "title": "Active Defrag Hits", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Hits\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=ActiveDefragHits statistic=sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel4C36770FB66C0A41", + "title": "Replication Bytes - Primary to Replicas", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Bytes\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=ReplicationBytes statistic=average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel2F33FBF99B938942", + "title": "Master Link Health Status", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Health Status\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=MasterLinkHealthStatus statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": " Primary node sync status with Redis on EC2", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelA7D4B21DAC6ECA4C", + "title": "Reclaimed - Key Expiration Events", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Keys\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=Reclaimed statistic=sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel531765FA95966846", + "title": "Keys Tracked by Redis", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Keys\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=KeysTracked statistic=Maximum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | max by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel4900BEC9B252BB4C", + "title": "Key - Time To Live", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Milliseconds\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=DB0AverageTTL statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelD94772A7BD6BD941", + "title": "Number of Current Client Connections", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Connections\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=CurrConnections statistic=sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelEEE8CD57BDA0B840", + "title": "Replication Lag", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Seconds\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=ReplicationLag statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel4190B757A8B60B4E", + "title": "Keys Evicted Due To Max Memory Limit", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Keys\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=Evictions statistic=sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel8CD5BE7AB40B3840", + "title": "New Connections Accepted By Server", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Connections\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=NewConnections statistic=sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel7B6650EFB77E4847", + "title": "Items in Cache", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Items\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=CurrItems statistic=sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel322681E79C3C2A4A", + "title": "Authentication and Authorization Failures", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Failures\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=*Failures statistic=sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/elasticache", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "CacheClusterId", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "cacheclusterid" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "CacheNodeId", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}} CacheClusterId={{CacheClusterId}}", + "key": "cachenodeid" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "3. Amazon ElastiCache - Redis Command Latency", + "description": "The Amazon ElastiCache - Redis Command Latency dashboard provides detailed insights into latency of various Redis commands.", + "title": "3. Amazon ElastiCache - Redis Command Latency", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "namespace": [ + "aws/elasticache" + ], + "region": [ + "*" + ], + "cacheclusterid": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelPANE-DAD554E4A6BCC843", + "structure": "{\"height\":5,\"width\":4,\"x\":0,\"y\":10}" + }, + { + "key": "panelPANE-80FE1A5C8372F84F", + "structure": "{\"height\":5,\"width\":4,\"x\":12,\"y\":10}" + }, + { + "key": "panel989CF605A88D3844", + "structure": "{\"height\":5,\"width\":4,\"x\":0,\"y\":20}" + }, + { + "key": "panel2439E90A96110842", + "structure": "{\"height\":5,\"width\":4,\"x\":12,\"y\":5}" + }, + { + "key": "panelB9A9D10FBAA24946", + "structure": "{\"height\":5,\"width\":4,\"x\":0,\"y\":5}" + }, + { + "key": "panel8855326E87766846", + "structure": "{\"height\":5,\"width\":4,\"x\":12,\"y\":20}" + }, + { + "key": "panel5C5F34089624DB45", + "structure": "{\"height\":5,\"width\":4,\"x\":12,\"y\":0}" + }, + { + "key": "panel213A8089AD47DB49", + "structure": "{\"height\":5,\"width\":4,\"x\":0,\"y\":25}" + }, + { + "key": "panel68FD6E1FADC27840", + "structure": "{\"height\":5,\"width\":4,\"x\":12,\"y\":15}" + }, + { + "key": "panel0A8F5410B2A40A47", + "structure": "{\"height\":5,\"width\":4,\"x\":12,\"y\":25}" + }, + { + "key": "panel99529F87A22CD940", + "structure": "{\"height\":5,\"width\":4,\"x\":0,\"y\":0}" + }, + { + "key": "panel509CEF36B7C8AB4B", + "structure": "{\"height\":5,\"width\":4,\"x\":0,\"y\":30}" + }, + { + "key": "panel63CB5EBC9B50D943", + "structure": "{\"height\":5,\"width\":4,\"x\":0,\"y\":15}" + }, + { + "key": "panelPANE-3A698F8A9F87D943", + "structure": "{\"height\":5,\"width\":8,\"x\":4,\"y\":0}" + }, + { + "key": "panel4B06F578B4BFEA4B", + "structure": "{\"height\":5,\"width\":8,\"x\":16,\"y\":0}" + }, + { + "key": "panel85BF423289A9A849", + "structure": "{\"height\":5,\"width\":8,\"x\":4,\"y\":5}" + }, + { + "key": "panelD3510977A9100B4C", + "structure": "{\"height\":5,\"width\":8,\"x\":16,\"y\":5}" + }, + { + "key": "panel26A5E8FFADB40B43", + "structure": "{\"height\":5,\"width\":8,\"x\":4,\"y\":10}" + }, + { + "key": "panel45FB62658515F940", + "structure": "{\"height\":5,\"width\":8,\"x\":16,\"y\":10}" + }, + { + "key": "panel8B618144B3D12B4F", + "structure": "{\"height\":5,\"width\":8,\"x\":4,\"y\":15}" + }, + { + "key": "panelF21A4871A2A5EA43", + "structure": "{\"height\":5,\"width\":8,\"x\":4,\"y\":20}" + }, + { + "key": "panel27C8934BB5EF8B4F", + "structure": "{\"height\":5,\"width\":8,\"x\":4,\"y\":25}" + }, + { + "key": "panel4C36770FB66C0A41", + "structure": "{\"height\":5,\"width\":8,\"x\":4,\"y\":30}" + }, + { + "key": "panel2F33FBF99B938942", + "structure": "{\"height\":5,\"width\":8,\"x\":16,\"y\":15}" + }, + { + "key": "panelA7D4B21DAC6ECA4C", + "structure": "{\"height\":5,\"width\":8,\"x\":16,\"y\":20}" + }, + { + "key": "panel531765FA95966846", + "structure": "{\"height\":5,\"width\":8,\"x\":16,\"y\":25}" + }, + { + "key": "panelF914B054A0E02B48", + "structure": "{\"height\":5,\"width\":4,\"x\":12,\"y\":30}" + }, + { + "key": "panel4900BEC9B252BB4C", + "structure": "{\"height\":5,\"width\":8,\"x\":16,\"y\":30}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelPANE-DAD554E4A6BCC843", + "title": "Key Based Cmds Latency", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Average\",\"label\":\"Microseconds\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=KeyBasedCmdsLatency statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-80FE1A5C8372F84F", + "title": "String Based Cmds Latency", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Average\",\"label\":\"Microseconds\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=StringBasedCmdsLatency statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel989CF605A88D3844", + "title": "Set Based Cmds Latency", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Average\",\"label\":\"Microseconds\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=SetBasedCmdsLatency statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel2439E90A96110842", + "title": "Set Type Cmds Latency", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Average\",\"label\":\"Microseconds\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=SetTypeCmdsLatency statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelB9A9D10FBAA24946", + "title": "Get Type Cmds Latency", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Average\",\"label\":\"Microseconds\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=GetTypeCmdsLatency statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel8855326E87766846", + "title": "List Based Cmds Latency", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Average\",\"label\":\"Microseconds\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=ListBasedCmdsLatency statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel5C5F34089624DB45", + "title": "Hash Based Cmds Latency", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Average\",\"label\":\"Microseconds\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=HashBasedCmdsLatency statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel213A8089AD47DB49", + "title": "SortedSet Based Cmds Latency", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Average\",\"label\":\"Microseconds\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=SortedSetBasedCmdsLatency statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel68FD6E1FADC27840", + "title": "HyperLogLog Based Cmds Latency", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Average\",\"label\":\"Microseconds\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=HyperLogLogBasedCmdsLatency statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel0A8F5410B2A40A47", + "title": "Stream Based Cmds Latency", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Average\",\"label\":\"Microseconds\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=StreamBasedCmdsLatency statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel99529F87A22CD940", + "title": "Eval Based Cmds Latency", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Average\",\"label\":\"Microseconds\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=EvalBasedCmdsLatency statistic=average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel509CEF36B7C8AB4B", + "title": "GeoSpatial Based Cmds Latency", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Average\",\"label\":\"Microseconds\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=GeoSpatialBasedCmdsLatency statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel63CB5EBC9B50D943", + "title": "PubSub Based Cmds Latency", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Average\",\"label\":\"Microseconds\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=PubSubBasedCmdsLatency statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-3A698F8A9F87D943", + "title": "Eval Based Cmds Latency", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Microseconds\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=EvalBasedCmdsLatency statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel4B06F578B4BFEA4B", + "title": "Hash Based Cmds Latency", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Microseconds\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=HashBasedCmdsLatency statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel85BF423289A9A849", + "title": "Get Type Cmds Latency", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Microseconds\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=GetTypeCmdsLatency statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelD3510977A9100B4C", + "title": "Set Type Cmds Latency", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Microseconds\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=SetTypeCmdsLatency statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel26A5E8FFADB40B43", + "title": "Key Based Cmds Latency", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Microseconds\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=KeyBasedCmdsLatency statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel45FB62658515F940", + "title": "String Based Cmds Latency", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Microseconds\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=StringBasedCmdsLatency statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel8B618144B3D12B4F", + "title": "PubSub Based Cmds Latency", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Microseconds\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=PubSubBasedCmdsLatency statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelF21A4871A2A5EA43", + "title": "Set Based Cmds Latency", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Microseconds\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=SetBasedCmdsLatency statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel27C8934BB5EF8B4F", + "title": "SortedSet Based Cmds Latency", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Microseconds\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=SortedSetBasedCmdsLatency statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel4C36770FB66C0A41", + "title": "GeoSpatial Based Cmds Latency", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Microseconds\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=GeoSpatialBasedCmdsLatency statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel2F33FBF99B938942", + "title": "HyperLogLog Based Cmds Latency", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Microseconds\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=HyperLogLogBasedCmdsLatency statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelA7D4B21DAC6ECA4C", + "title": "List Based Cmds Latency", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Microseconds\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=ListBasedCmdsLatency statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel531765FA95966846", + "title": "Stream Based Cmds Latency", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Microseconds\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=StreamBasedCmdsLatency statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelF914B054A0E02B48", + "title": "All *Cmds Latency", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Average\",\"label\":\"Microseconds\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=*CmdsLatency statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel4900BEC9B252BB4C", + "title": "All *Cmds Latency", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Microseconds\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=*CmdsLatency statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/elasticache", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "CacheClusterId", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "cacheclusterid" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "CacheNodeId", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}} CacheClusterId={{CacheClusterId}}", + "key": "cachenodeid" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "3. Amazon ElastiCache - Redis Performance Overview", + "description": "The Amazon ElastiCache - Redis Performance Overview dashboard provides an overview into performance, evictions and authentication and authorization failures of ElastiCache Redis clusters.", + "title": "3. Amazon ElastiCache - Redis Performance Overview", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "namespace": [ + "aws/elasticache" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelPANE-DAD554E4A6BCC843", + "structure": "{\"height\":5,\"width\":4,\"x\":4,\"y\":17}" + }, + { + "key": "panelPANE-3FF7DB0BB6188A4D", + "structure": "{\"height\":6,\"width\":8,\"x\":0,\"y\":6}" + }, + { + "key": "panelPANE-1C688241A2863A4E", + "structure": "{\"height\":6,\"width\":8,\"x\":8,\"y\":0}" + }, + { + "key": "panelPANE-801680AAAF52094B", + "structure": "{\"height\":6,\"width\":8,\"x\":8,\"y\":6}" + }, + { + "key": "panelPANE-AD09413E82EF994D", + "structure": "{\"height\":6,\"width\":8,\"x\":0,\"y\":0}" + }, + { + "key": "panelPANE-396C9FA3B219CB46", + "structure": "{\"height\":12,\"width\":8,\"x\":16,\"y\":0}" + }, + { + "key": "panelPANE-6CF530B1B7B1384B", + "structure": "{\"height\":5,\"width\":4,\"x\":0,\"y\":12}" + }, + { + "key": "panelPANE-80FE1A5C8372F84F", + "structure": "{\"height\":5,\"width\":4,\"x\":12,\"y\":17}" + }, + { + "key": "panelPANE-EDD9E06BB32AEA42", + "structure": "{\"height\":5,\"width\":4,\"x\":4,\"y\":12}" + }, + { + "key": "panelPANE-99CD4FA5B28B0B4C", + "structure": "{\"height\":5,\"width\":4,\"x\":8,\"y\":12}" + }, + { + "key": "panel344E0AB5B863A84E", + "structure": "{\"height\":5,\"width\":4,\"x\":12,\"y\":12}" + }, + { + "key": "panel989CF605A88D3844", + "structure": "{\"height\":5,\"width\":4,\"x\":8,\"y\":17}" + }, + { + "key": "panel2439E90A96110842", + "structure": "{\"height\":5,\"width\":4,\"x\":20,\"y\":17}" + }, + { + "key": "panelB9A9D10FBAA24946", + "structure": "{\"height\":5,\"width\":4,\"x\":0,\"y\":17}" + }, + { + "key": "panel8855326E87766846", + "structure": "{\"height\":5,\"width\":4,\"x\":16,\"y\":12}" + }, + { + "key": "panel5C5F34089624DB45", + "structure": "{\"height\":5,\"width\":4,\"x\":20,\"y\":12}" + }, + { + "key": "panelDFA21075A50A1943", + "structure": "{\"height\":5,\"width\":4,\"x\":16,\"y\":17}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelPANE-DAD554E4A6BCC843", + "title": "Current Connections", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Sum\",\"label\":\"Connections\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=CurrConnections statistic=Sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-3FF7DB0BB6188A4D", + "title": "Engine CPU Utilization", + "visualSettings": "{\"general\":{\"mode\":\"honeyComb\",\"type\":\"honeyComb\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"honeyComb\":{\"thresholds\":[{\"from\":0,\"to\":75,\"color\":\"#75bf00\"},{\"from\":75,\"to\":85,\"color\":\"#f6c851\"},{\"from\":85,\"to\":null,\"color\":\"#f36644\"}],\"shape\":\"hexagon\",\"groupBy\":[],\"aggregationType\":\"avg\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=EngineCPUUtilization statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg by account, region, namespace, CacheClusterId, CacheNodeId", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-1C688241A2863A4E", + "title": "Database Memory Usage Percentage", + "visualSettings": "{\"general\":{\"mode\":\"honeyComb\",\"type\":\"honeyComb\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"honeyComb\":{\"thresholds\":[{\"from\":0,\"to\":85,\"color\":\"#75bf00\"},{\"from\":85,\"to\":95,\"color\":\"#f6c851\"},{\"from\":95,\"to\":null,\"color\":\"#f36644\"}],\"shape\":\"hexagon\",\"groupBy\":[],\"aggregationType\":\"avg\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=DatabaseMemoryUsagePercentage statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg by account, region, namespace, CacheClusterId, CacheNodeId", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-801680AAAF52094B", + "title": "Replica Lag (seconds)", + "visualSettings": "{\"general\":{\"mode\":\"honeyComb\",\"type\":\"honeyComb\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"honeyComb\":{\"thresholds\":[{\"from\":0,\"to\":3,\"color\":\"#75bf00\"},{\"from\":3,\"to\":5,\"color\":\"#f6c851\"},{\"from\":5,\"to\":null,\"color\":\"#f36644\"}],\"shape\":\"hexagon\",\"groupBy\":[],\"aggregationType\":\"avg\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=ReplicationLag statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg by CacheClusterId, CacheNodeId, account, region, namespace", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-AD09413E82EF994D", + "title": "CPU Utilization", + "visualSettings": "{\"general\":{\"mode\":\"honeyComb\",\"type\":\"honeyComb\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"honeyComb\":{\"thresholds\":[{\"from\":0,\"to\":75,\"color\":\"#75bf00\"},{\"from\":75,\"to\":85,\"color\":\"#f6c851\"},{\"from\":85,\"to\":null,\"color\":\"#f36644\"}],\"shape\":\"hexagon\",\"groupBy\":[],\"aggregationType\":\"avg\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=CPUUtilization statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg by CacheClusterId, CacheNodeId, account, region, namespace", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-396C9FA3B219CB46", + "title": "Cache Hit Rate", + "visualSettings": "{\"general\":{\"mode\":\"honeyComb\",\"type\":\"honeyComb\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"honeyComb\":{\"thresholds\":[{\"from\":85,\"to\":100,\"color\":\"#75bf00\"},{\"from\":80,\"to\":85,\"color\":\"#f6c851\"},{\"from\":0,\"to\":80,\"color\":\"#f36644\"}],\"shape\":\"hexagon\",\"groupBy\":[],\"aggregationType\":\"avg\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=CacheHitRate statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg by account, region, namespace, CacheClusterId, CacheNodeId", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-6CF530B1B7B1384B", + "title": "CPU Utilization", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"mode\":\"singleValueMetrics\"},\"svp\":{\"option\":\"Average\",\"label\":\"%\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"No data\",\"hideData\":false,\"rounding\":2,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":0,\"to\":75,\"color\":\"#16943E\"},{\"from\":75,\"to\":85,\"color\":\"#DFBE2E\"},{\"from\":85,\"to\":101,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":false},\"gauge\":{\"show\":true}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=CPUUtilization statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-80FE1A5C8372F84F", + "title": "Authentication Failures", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Sum\",\"label\":\"Failures\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":0,\"to\":5,\"color\":\"#16943E\"},{\"from\":5,\"to\":10,\"color\":\"#DFBE2E\"},{\"from\":10,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=AuthenticationFailures statistic=Sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-EDD9E06BB32AEA42", + "title": "Engine CPU Utilization ", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Average\",\"label\":\"%\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"No data\",\"hideData\":false,\"rounding\":2,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":0,\"to\":75,\"color\":\"#16943E\"},{\"from\":75,\"to\":85,\"color\":\"#DFBE2E\"},{\"from\":85,\"to\":101,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":false},\"gauge\":{\"show\":true,\"min\":0,\"max\":100}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=EngineCPUUtilization statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-99CD4FA5B28B0B4C", + "title": "Database Memory Usage", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Average\",\"label\":\"%\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"No data\",\"hideData\":false,\"rounding\":2,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":0,\"to\":75,\"color\":\"#16943E\"},{\"from\":75,\"to\":85,\"color\":\"#DFBE2E\"},{\"from\":85,\"to\":101,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":false},\"gauge\":{\"show\":true,\"min\":0,\"max\":100}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=DatabaseMemoryUsagePercentage statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel344E0AB5B863A84E", + "title": "Cache Hit Rate", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Average\",\"label\":\"%\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"No data\",\"hideData\":false,\"rounding\":2,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":85,\"to\":101,\"color\":\"#16943E\"},{\"from\":75,\"to\":85,\"color\":\"#DFBE2E\"},{\"from\":0,\"to\":75,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":false},\"gauge\":{\"show\":true}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=CacheHitRate statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel989CF605A88D3844", + "title": "Key Authorization Failures", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Sum\",\"label\":\"Failures\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":0,\"to\":5,\"color\":\"#16943E\"},{\"from\":5,\"to\":10,\"color\":\"#DFBE2E\"},{\"from\":10,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=KeyAuthorizationFailures statistic=Sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | Sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel2439E90A96110842", + "title": "Evictions", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Sum\",\"label\":\"Evictions\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=Evictions statistic=Sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelB9A9D10FBAA24946", + "title": "New Connections", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Sum\",\"label\":\"Connections\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=NewConnections statistic=Sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel8855326E87766846", + "title": "Memory Fragmentation Ratio", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Average\",\"label\":\"Ratio\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":2,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":1,\"to\":1.5,\"color\":\"#16943E\"},{\"from\":0,\"to\":1,\"color\":\"#DFBE2E\"},{\"from\":1.5,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=MemoryFragmentationRatio statistic=Average CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | avg", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel5C5F34089624DB45", + "title": "Bytes Used For Cache", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Sum\",\"label\":\"GB\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":2,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":1,\"to\":null,\"color\":\"#16943E\"},{\"from\":0.5,\"to\":1,\"color\":\"#DFBE2E\"},{\"from\":0,\"to\":0.5,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=BytesUsedForCache statistic=Sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum | eval _value / (1024*1024*1024)", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelDFA21075A50A1943", + "title": "Command Authorization Failures", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Sum\",\"label\":\"Failures\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":0,\"to\":5,\"color\":\"#16943E\"},{\"from\":5,\"to\":10,\"color\":\"#DFBE2E\"},{\"from\":10,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=CommandAuthorizationFailures statistic=Sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/elasticache", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "CacheClusterId", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "cacheclusterid" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "CacheNodeId", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}} CacheClusterId={{CacheClusterId}}", + "key": "cachenodeid" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "4. Amazon ElastiCache - Audit Event Details", + "description": "The Amazon ElastiCache - Audit Event Details dashboard provides detailed insights into key operations made on your ElastiCache clusters.", + "title": "4. Amazon ElastiCache - Audit Event Details", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "namespace": [ + "aws/elasticache" + ], + "region": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelPANE-4C321E5190BBC948", + "structure": "{\"height\":6,\"width\":24,\"x\":0,\"y\":0}" + }, + { + "key": "panelE8A325FDA251DB4E", + "structure": "{\"height\":6,\"width\":24,\"x\":0,\"y\":0,\"minHeight\":3,\"minWidth\":3}" + }, + { + "key": "panel8DB1C189BCAC284A", + "structure": "{\"height\":6,\"width\":24,\"x\":0,\"y\":0,\"minHeight\":3,\"minWidth\":3}" + }, + { + "key": "panelD63592089E8E5A4A", + "structure": "{\"height\":6,\"width\":24,\"x\":0,\"y\":0,\"minHeight\":3,\"minWidth\":3}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelPANE-4C321E5190BBC948", + "title": "Create, Add, Increase ElastiCache Events", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"distribution\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"elasticache.amazonaws.com\\\"\" (Create* or CreateCacheCluster or CacheClusterProvisioningComplete or AddCacheNodeComplete or IncreaseReplicaCount)\n| json \"userIdentity\", \"eventSource\", \"eventName\", \"awsRegion\", \"sourceIPAddress\", \"userAgent\", \"eventType\", \"recipientAccountId\", \"requestParameters\", \"responseElements\", \"requestID\", \"errorCode\", \"errorMessage\" as userIdentity, event_source, event_name, region, src_ip, user_agent, event_type, recipient_account_id, requestParameters, responseElements, request_id, error_code, error_message nodrop\n| where event_source = \"elasticache.amazonaws.com\" and (event_name matches \"Create*\" or event_name in (\"CreateCacheCluster\", \"CacheClusterProvisioningComplete\", \"AddCacheNodeComplete\", \"IncreaseReplicaCount\"))\n| json field=userIdentity \"type\", \"principalId\", \"arn\", \"userName\", \"accountId\" nodrop\n| json field=userIdentity \"sessionContext.attributes.mfaAuthenticated\" as mfaAuthenticated nodrop\n| json field=requestParameters \"replicationGroupId\", \"engine\", \"engineVersion\", \"cacheClusterId\" as req_replicationGroupId, req_engine, req_engineVersion, req_cacheClusterId nodrop\n| json field=responseElements \"replicationGroupId\", \"engine\", \"engineVersion\", \"status\", \"cacheClusterId\", \"cacheSubnetGroupName\", \"vpcId\", \"snapshotRetentionLimit\" as res_replicationGroupId, res_engine, res_engineVersion, res_status, res_cacheClusterId, cachesubnetgroupname, vpcid, snapshotretentionlimit nodrop\n| json field=responseElements \"autoMinorVersionUpgrade\", \"cacheNodeType\", \"numCacheNodes\" as auto_minorversion_upgrade, cachenodetype, numcachenodes nodrop\n| parse field=arn \":assumed-role/*\" as user nodrop \n| parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| if (isEmpty(error_code), \"Success\", \"Failure\") as event_status\n| if (isEmpty(userName), user, userName) as user\n| if (isEmpty(req_replicationGroupId), res_replicationGroupId, req_replicationGroupId) as replicationgroupid\n| if (isEmpty(req_engine), res_engine, req_engine) as engine\n| if (isEmpty(req_engineVersion), res_engineVersion, req_engineVersion) as engine_version\n| if (isEmpty(req_cacheClusterId), res_cacheClusterId, req_cacheClusterId) as cacheclusterid\n| res_status as Status\n| timeslice 1s\n| count as Count by _timeslice, event_name, src_ip, user, type, request_id, user_agent, cacheclusterid, replicationgroupid // , engine, engine_version, cachesubnetgroupname, vpcid, snapshotretentionlimit, status, auto_minorversion_upgrade, cachenodetype, numcachenodes\n| fields _timeslice, event_name, src_ip, user, type, request_id, user_agent, cacheclusterid, replicationgroupid // , engine, engine_version, cachesubnetgroupname, vpcid, snapshotretentionlimit, status, auto_minorversion_upgrade, cachenodetype, numcachenodes, Count\n| sort by _timeslice", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelE8A325FDA251DB4E", + "title": "Modify ElastiCache Events", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"distribution\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"elasticache.amazonaws.com\\\"\" (Modify* or ModifyCacheCluster or CacheClusterParametersChanged or CacheClusterScalingComplete or CacheClusterSecurityGroupModified or IncreaseReplicaCount or DecreaseReplicaCount)\n| json \"userIdentity\", \"eventSource\", \"eventName\", \"awsRegion\", \"sourceIPAddress\", \"userAgent\", \"eventType\", \"recipientAccountId\", \"requestParameters\", \"responseElements\", \"requestID\", \"errorCode\", \"errorMessage\" as userIdentity, event_source, event_name, region, src_ip, user_agent, event_type, recipient_account_id, requestParameters, responseElements, request_id, error_code, error_message nodrop\n| where event_source = \"elasticache.amazonaws.com\" and (event_name matches \"Modify*\" or event_name in (\"ModifyCacheCluster\", \"CacheClusterParametersChanged\", \"CacheClusterScalingComplete\", \"CacheClusterSecurityGroupModified\", \"IncreaseReplicaCount\", \"DecreaseReplicaCount\"))\n| json field=userIdentity \"type\", \"principalId\", \"arn\", \"userName\", \"accountId\" nodrop\n| json field=userIdentity \"sessionContext.attributes.mfaAuthenticated\" as mfaAuthenticated nodrop\n| json field=requestParameters \"replicationGroupId\", \"engine\", \"engineVersion\", \"cacheClusterId\" as req_replicationGroupId, req_engine, req_engineVersion, req_cacheClusterId nodrop\n| json field=responseElements \"replicationGroupId\", \"engine\", \"engineVersion\", \"status\", \"cacheClusterId\", \"snapshotRetentionLimit\" as res_replicationGroupId, res_engine, res_engineVersion, res_status, res_cacheClusterId, snapshotretentionlimit nodrop\n| json field=responseElements \"autoMinorVersionUpgrade\", \"cacheNodeType\", \"numCacheNodes\" as auto_minorversion_upgrade, cachenodetype, numcachenodes nodrop\n| parse field=arn \":assumed-role/*\" as user nodrop \n| parse field=arn \"arn:aws:iam::*:*\" as accountid, user nodrop\n| if (isEmpty(error_code), \"Success\", \"Failure\") as event_status\n| if (isEmpty(userName), user, userName) as user\n| if (isEmpty(req_replicationGroupId), res_replicationGroupId, req_replicationGroupId) as replicationgroupid\n| if (isEmpty(req_engine), res_engine, req_engine) as engine\n| if (isEmpty(req_engineVersion), res_engineVersion, req_engineVersion) as engine_version\n| if (isEmpty(req_cacheClusterId), res_cacheClusterId, req_cacheClusterId) as cacheclusterid\n| res_status as Status\n| timeslice 1s\n| count as Count by _timeslice, event_name, src_ip, user, type, request_id, user_agent, cacheclusterid, replicationgroupid // , engine, engine_version, snapshotretentionlimit, status, auto_minorversion_upgrade, cachenodetype, numcachenodes\n| fields _timeslice, event_name, src_ip, user, type, request_id, user_agent, cacheclusterid, replicationgroupid // , engine, engine_version, snapshotretentionlimit, status, auto_minorversion_upgrade, cachenodetype, numcachenodes, Count\n| sort by _timeslice", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel8DB1C189BCAC284A", + "title": "Delete, Remove, Decrease, Revoke, Reset ElastiCache Events", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"distribution\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"elasticache.amazonaws.com\\\"\" (Delete* or Remove* or Decrease* or RemoveCacheNodeComplete or DeleteCacheClusterComplete or DecreaseReplicaCount or Revoke* or Reset*)\n| json \"userIdentity\", \"eventSource\", \"eventName\", \"awsRegion\", \"sourceIPAddress\", \"userAgent\", \"eventType\", \"recipientAccountId\", \"requestParameters\", \"responseElements\", \"requestID\", \"errorCode\", \"errorMessage\" as userIdentity, event_source, event_name, region, src_ip, user_agent, event_type, recipient_account_id, requestParameters, responseElements, request_id, error_code, error_message nodrop\n| where event_source = \"elasticache.amazonaws.com\" and (event_name matches \"Delete*\" or event_name matches \"Remove*\" or event_name matches \"Decrease*\" or event_name matches \"Revoke*\" or event_name matches \"Reset*\" or event_name in (\"RemoveCacheNodeComplete\", \"DeleteCacheClusterComplete\", \"DecreaseReplicaCount\"))\n| json field=userIdentity \"type\", \"principalId\", \"arn\", \"userName\", \"accountId\" nodrop\n| json field=userIdentity \"sessionContext.attributes.mfaAuthenticated\" as mfaAuthenticated nodrop\n| json field=requestParameters \"replicationGroupId\", \"engine\", \"engineVersion\", \"cacheClusterId\" as req_replicationGroupId, req_engine, req_engineVersion, req_cacheClusterId nodrop\n| json field=responseElements \"replicationGroupId\", \"engine\", \"engineVersion\", \"status\", \"cacheClusterId\", \"snapshotRetentionLimit\" as res_replicationGroupId, res_engine, res_engineVersion, res_status, res_cacheClusterId, snapshotretentionlimit nodrop\n| json field=responseElements \"autoMinorVersionUpgrade\", \"cacheNodeType\", \"numCacheNodes\" as auto_minorversion_upgrade, cachenodetype, numcachenodes nodrop\n| parse field=arn \":assumed-role/*\" as user nodrop \n| parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| if (isEmpty(error_code), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| if (isEmpty(req_replicationGroupId), res_replicationGroupId, req_replicationGroupId) as replicationgroupid\n| if (isEmpty(req_engine), res_engine, req_engine) as engine\n| if (isEmpty(req_engineVersion), res_engineVersion, req_engineVersion) as engine_version\n| if (isEmpty(req_cacheClusterId), res_cacheClusterId, req_cacheClusterId) as cacheclusterid\n| res_status as Status\n| timeslice 1s\n| count as Count by _timeslice, event_name, src_ip, user, type, request_id, user_agent, cacheclusterid, replicationgroupid //, engine, engine_version, snapshotretentionlimit, status, auto_minorversion_upgrade, cachenodetype, numcachenodes\n| fields _timeslice, event_name, src_ip, user, type, request_id, user_agent, cacheclusterid, replicationgroupid //, engine, engine_version, snapshotretentionlimit, status, auto_minorversion_upgrade, cachenodetype, numcachenodes, Count\n| sort by _timeslice", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelD63592089E8E5A4A", + "title": "Node Reboot ElastiCache Events", + "visualSettings": "{\"title\":{\"fontSize\":16},\"general\":{\"type\":\"table\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"paginationPageSize\":100,\"fontSize\":12,\"mode\":\"distribution\"},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} \"\\\"eventSource\\\":\\\"elasticache.amazonaws.com\\\"\" (Reboot* or CacheNodesRebooted)\n| json \"userIdentity\", \"eventSource\", \"eventName\", \"awsRegion\", \"sourceIPAddress\", \"userAgent\", \"eventType\", \"recipientAccountId\", \"requestParameters\", \"responseElements\", \"requestID\", \"errorCode\", \"errorMessage\" as userIdentity, event_source, event_name, region, src_ip, user_agent, event_type, recipient_account_id, requestParameters, responseElements, request_id, error_code, error_message nodrop\n| where event_source = \"elasticache.amazonaws.com\" and (event_name matches \"Reboot*\" or event_name=\"CacheNodesRebooted\")\n| json field=userIdentity \"type\", \"principalId\", \"arn\", \"userName\", \"accountId\" nodrop\n| json field=userIdentity \"sessionContext.attributes.mfaAuthenticated\" as mfaAuthenticated nodrop\n| json field=requestParameters \"replicationGroupId\", \"engine\", \"engineVersion\", \"cacheClusterId\" as req_replicationGroupId, req_engine, req_engineVersion, req_cacheClusterId nodrop\n| json field=responseElements \"replicationGroupId\", \"engine\", \"engineVersion\", \"status\", \"cacheClusterId\", \"res_cacheClusterStatus\", \"snapshotRetentionLimit\" as res_replicationGroupId, res_engine, res_engineVersion, res_status, res_cacheClusterId, res_cacheClusterStatus, snapshotretentionlimit nodrop\n| json field=responseElements \"autoMinorVersionUpgrade\", \"cacheNodeType\", \"numCacheNodes\" as auto_minorversion_upgrade, cachenodetype, numcachenodes nodrop\n| parse field=arn \":assumed-role/*\" as user nodrop \n| parse field=arn \"arn:aws:iam::*:*\" as accountId, user nodrop\n| if (isEmpty(error_code), \"Success\", \"Failure\") as eventStatus\n| if (isEmpty(userName), user, userName) as user\n| if (isEmpty(req_replicationGroupId), res_replicationGroupId, req_replicationGroupId) as replicationgroupid\n| if (isEmpty(req_engine), res_engine, req_engine) as engine\n| if (isEmpty(req_engineVersion), res_engineVersion, req_engineVersion) as engine_version\n| if (isEmpty(req_cacheClusterId), res_cacheClusterId, req_cacheClusterId) as cacheclusterid\n| eventStatus as status\n| where tolowercase(cacheclusterid) matches tolowercase(\"{{CacheClusterId}}\")\n| timeslice 1s\n| count as Count by _timeslice, event_name, src_ip, user, type, request_id, user_agent, cacheclusterid, replicationgroupid // , engine, engine_version, snapshotretentionlimit, status, auto_minorversion_upgrade, cachenodetype, numcachenodes\n| fields _timeslice, event_name, src_ip, user, type, request_id, user_agent, cacheclusterid, replicationgroupid // , engine, engine_version, snapshotretentionlimit, status, auto_minorversion_upgrade, cachenodetype, numcachenodes, Count\n| sort by _timeslice", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/elasticache", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "CacheClusterId", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "cacheclusterid" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "CacheNodeId", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}} CacheClusterId={{CacheClusterId}}", + "key": "cachenodeid" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + } + ], + "coloringRules": [] + }, + { + "type": "DashboardV2SyncDefinition", + "name": "4. Amazon ElastiCache - Redis Command Stats", + "description": "The Amazon ElastiCache - Redis Command Stats dashboard provides detailed insights into the number of commands being performed.", + "title": "4. Amazon ElastiCache - Redis Command Stats", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "namespace": [ + "aws/elasticache" + ], + "region": [ + "*" + ], + "cacheclusterid": [ + "*" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelPANE-DAD554E4A6BCC843", + "structure": "{\"height\":5,\"width\":4,\"x\":0,\"y\":10}" + }, + { + "key": "panelPANE-80FE1A5C8372F84F", + "structure": "{\"height\":5,\"width\":4,\"x\":12,\"y\":10}" + }, + { + "key": "panel989CF605A88D3844", + "structure": "{\"height\":5,\"width\":4,\"x\":0,\"y\":20}" + }, + { + "key": "panel2439E90A96110842", + "structure": "{\"height\":5,\"width\":4,\"x\":12,\"y\":5}" + }, + { + "key": "panelB9A9D10FBAA24946", + "structure": "{\"height\":5,\"width\":4,\"x\":0,\"y\":5}" + }, + { + "key": "panel8855326E87766846", + "structure": "{\"height\":5,\"width\":4,\"x\":12,\"y\":20}" + }, + { + "key": "panel5C5F34089624DB45", + "structure": "{\"height\":5,\"width\":4,\"x\":12,\"y\":0}" + }, + { + "key": "panel213A8089AD47DB49", + "structure": "{\"height\":5,\"width\":4,\"x\":0,\"y\":25}" + }, + { + "key": "panel68FD6E1FADC27840", + "structure": "{\"height\":5,\"width\":4,\"x\":12,\"y\":15}" + }, + { + "key": "panel0A8F5410B2A40A47", + "structure": "{\"height\":5,\"width\":4,\"x\":12,\"y\":25}" + }, + { + "key": "panel99529F87A22CD940", + "structure": "{\"height\":5,\"width\":4,\"x\":0,\"y\":0}" + }, + { + "key": "panel509CEF36B7C8AB4B", + "structure": "{\"height\":5,\"width\":4,\"x\":0,\"y\":30}" + }, + { + "key": "panel63CB5EBC9B50D943", + "structure": "{\"height\":5,\"width\":4,\"x\":0,\"y\":15}" + }, + { + "key": "panelPANE-3A698F8A9F87D943", + "structure": "{\"height\":5,\"width\":8,\"x\":4,\"y\":0}" + }, + { + "key": "panel4B06F578B4BFEA4B", + "structure": "{\"height\":5,\"width\":8,\"x\":16,\"y\":0}" + }, + { + "key": "panel85BF423289A9A849", + "structure": "{\"height\":5,\"width\":8,\"x\":4,\"y\":5}" + }, + { + "key": "panelD3510977A9100B4C", + "structure": "{\"height\":5,\"width\":8,\"x\":16,\"y\":5}" + }, + { + "key": "panel26A5E8FFADB40B43", + "structure": "{\"height\":5,\"width\":8,\"x\":4,\"y\":10}" + }, + { + "key": "panel45FB62658515F940", + "structure": "{\"height\":5,\"width\":8,\"x\":16,\"y\":10}" + }, + { + "key": "panel8B618144B3D12B4F", + "structure": "{\"height\":5,\"width\":8,\"x\":4,\"y\":15}" + }, + { + "key": "panelF21A4871A2A5EA43", + "structure": "{\"height\":5,\"width\":8,\"x\":4,\"y\":15,\"minHeight\":3,\"minWidth\":3}" + }, + { + "key": "panel27C8934BB5EF8B4F", + "structure": "{\"height\":5,\"width\":8,\"x\":4,\"y\":15,\"minHeight\":3,\"minWidth\":3}" + }, + { + "key": "panel4C36770FB66C0A41", + "structure": "{\"height\":5,\"width\":8,\"x\":4,\"y\":15,\"minHeight\":3,\"minWidth\":3}" + }, + { + "key": "panel2F33FBF99B938942", + "structure": "{\"height\":5,\"width\":8,\"x\":16,\"y\":10,\"minHeight\":3,\"minWidth\":3}" + }, + { + "key": "panelA7D4B21DAC6ECA4C", + "structure": "{\"height\":5,\"width\":8,\"x\":16,\"y\":10,\"minHeight\":3,\"minWidth\":3}" + }, + { + "key": "panel531765FA95966846", + "structure": "{\"height\":5,\"width\":8,\"x\":16,\"y\":10,\"minHeight\":3,\"minWidth\":3}" + }, + { + "key": "panelF914B054A0E02B48", + "structure": "{\"height\":5,\"width\":4,\"x\":12,\"y\":25,\"minHeight\":3,\"minWidth\":3}" + }, + { + "key": "panel4900BEC9B252BB4C", + "structure": "{\"height\":5,\"width\":8,\"x\":16,\"y\":10,\"minHeight\":3,\"minWidth\":3}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelPANE-DAD554E4A6BCC843", + "title": "Key Based Cmds", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Sum\",\"label\":\"Commands\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=KeyBasedCmds statistic=Sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-80FE1A5C8372F84F", + "title": "String Based Cmds", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Sum\",\"label\":\"Commands\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=StringBasedCmds statistic=sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel989CF605A88D3844", + "title": "Set Based Cmds", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Sum\",\"label\":\"Commands\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=SetBasedCmds statistic=sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel2439E90A96110842", + "title": "Set Type Cmds", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Sum\",\"label\":\"Commands\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=SetTypeCmds statistic=Sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelB9A9D10FBAA24946", + "title": "Get Type Cmds", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Sum\",\"label\":\"Commands\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=GetTypeCmds statistic=Sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel8855326E87766846", + "title": "List Based Cmds", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Sum\",\"label\":\"Commands\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=ListBasedCmds statistic=sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel5C5F34089624DB45", + "title": "Hash Based Cmds", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Sum\",\"label\":\"Commands\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=HashBasedCmds statistic=Sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel213A8089AD47DB49", + "title": "Sorted Set Based Cmds", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Sum\",\"label\":\"Commands\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=SortedSetBasedCmds statistic=sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel68FD6E1FADC27840", + "title": "HyperLogLog Based Cmds", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Sum\",\"label\":\"Commands\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=HyperLogLogBasedCmds statistic=sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel0A8F5410B2A40A47", + "title": "Stream Based Cmds", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Sum\",\"label\":\"Commands\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=StreamBasedCmds statistic=sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel99529F87A22CD940", + "title": "Eval Based Cmds", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Sum\",\"label\":\"Commands\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=EvalBasedCmds statistic=sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel509CEF36B7C8AB4B", + "title": "Geospatial Based Cmds", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Sum\",\"label\":\"Commands\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=GeoSpatialBasedCmds statistic=Sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel63CB5EBC9B50D943", + "title": "PubSub Based Cmds", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Sum\",\"label\":\"Commands\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"#222D3B\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=PubSubBasedCmds statistic=sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelPANE-3A698F8A9F87D943", + "title": "Eval Based Cmds", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Commands\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=EvalBasedCmds statistic=sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel4B06F578B4BFEA4B", + "title": "Hash Based Cmds", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Commands\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=HashBasedCmds statistic=sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel85BF423289A9A849", + "title": "Get Type Cmds", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Commands\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=GetTypeCmds statistic=sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelD3510977A9100B4C", + "title": "Set Type Cmds", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Commands\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=SetTypeCmds statistic=sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel26A5E8FFADB40B43", + "title": "Key Based Cmds", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Commands\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=KeyBasedCmds statistic=sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel45FB62658515F940", + "title": "String Based Cmds", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Commands\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=StringBasedCmds statistic=sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel8B618144B3D12B4F", + "title": "PubSub Based Cmds", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Commands\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=PubSubBasedCmds statistic=sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelF21A4871A2A5EA43", + "title": "Set Based Cmds", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Commands\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=SetBasedCmds statistic=sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel27C8934BB5EF8B4F", + "title": "Sorted Set Based Cmds", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Commands\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=SortedSetBasedCmds statistic=sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel4C36770FB66C0A41", + "title": "Geospatial Based Cmds", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Commands\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=GeoSpatialBasedCmds statistic=sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel2F33FBF99B938942", + "title": "HyperLogLog Based Cmds", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Commands\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=HyperLogLogBasedCmds statistic=sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelA7D4B21DAC6ECA4C", + "title": "List Based Cmds", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Commands\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=ListBasedCmds statistic=sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel531765FA95966846", + "title": "Stream Based Cmds", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Commands\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=StreamBasedCmds statistic=sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelF914B054A0E02B48", + "title": "All *Cmds", + "visualSettings": "{\"general\":{\"mode\":\"singleValueMetrics\",\"type\":\"svp\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\"},\"title\":{\"fontSize\":16},\"svp\":{\"option\":\"Sum\",\"label\":\"Commands\",\"useBackgroundColor\":false,\"useNoData\":false,\"noDataString\":\"0\",\"hideData\":false,\"rounding\":0,\"valueFontSize\":24,\"labelFontSize\":14,\"thresholds\":[{\"from\":null,\"to\":null,\"color\":\"#16943E\"},{\"from\":null,\"to\":null,\"color\":\"#DFBE2E\"},{\"from\":null,\"to\":null,\"color\":\"#BF2121\"}],\"sparkline\":{\"show\":true,\"color\":\"\"},\"gauge\":{\"show\":false}},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=*Cmds statistic=sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panel4900BEC9B252BB4C", + "title": "All *Cmds", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\",\"type\":\"line\",\"displayType\":\"default\",\"outlierBandColor\":\"#FDECF5\",\"outlierBandMarkerColor\":\"#F032A9\",\"outlierBandFillOpacity\":0.5,\"outlierBandLineThickness\":2,\"outlierBandMarkerSize\":10,\"outlierBandMarkerType\":\"triangle\",\"outlierBandLineDashType\":\"solid\",\"outlierBandDisplayType\":\"default\",\"markerSize\":0,\"lineDashType\":\"solid\",\"markerType\":\"none\",\"lineThickness\":2},\"title\":{\"fontSize\":16},\"axes\":{\"axisX\":{\"title\":\"\",\"titleFontSize\":11,\"labelFontSize\":10},\"axisY\":{\"titleFontSize\":11,\"labelFontSize\":12,\"logarithmic\":false,\"gridColor\":\"#dde4e9\",\"title\":\"Commands\"}},\"legend\":{\"enabled\":true,\"verticalAlign\":\"bottom\",\"fontSize\":12,\"maxHeight\":50,\"showAsTable\":false,\"wrap\":true},\"color\":{\"family\":\"scheme9\"},\"series\":{},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"properties\":{\"name\":\"{{CacheClusterId}}, {{CacheNodeId}}\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} namespace={{namespace}} metric=*Cmds statistic=sum CacheClusterId={{CacheClusterId}} CacheNodeId={{CacheNodeId}} | sum by CacheClusterId, CacheNodeId, account, region", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + } + ], + "variables": [ + { + "id": null, + "name": "account", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "", + "key": "account" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "region", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}}", + "key": "region" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "namespace", + "displayName": null, + "defaultValue": "aws/elasticache", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}}", + "key": "namespace" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "CacheClusterId", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}}", + "key": "cacheclusterid" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + }, + { + "id": null, + "name": "CacheNodeId", + "displayName": null, + "defaultValue": "*", + "sourceDefinition": { + "variableSourceType": "MetadataVariableSourceDefinition", + "filter": "account={{account}} region={{region}} namespace={{namespace}} CacheClusterId={{CacheClusterId}}", + "key": "cachenodeid" + }, + "allowMultiSelect": false, + "includeAllOption": true, + "hideFromUI": false + } + ], + "coloringRules": [] + } + ] +} \ No newline at end of file diff --git a/aws-observability-terraform/examples/aws-observability/json/Lambda-App.json b/aws-observability-terraform/examples/aws-observability/json/Lambda-App.json new file mode 100644 index 00000000..7ca3d211 --- /dev/null +++ b/aws-observability-terraform/examples/aws-observability/json/Lambda-App.json @@ -0,0 +1,3195 @@ +{ + "type": "FolderSyncDefinition", + "name": "AWS Lambda", + "description": "The Sumo Logic AWS Lambda App uses the Lambda logs via CloudWatch, CloudWatch Metrics and the CloudTrail Lambda Data Events to visualize the operational and performance trends in all the Lambda functions in your account. The preconfigured dashboards provide insights into executions such as memory and duration usage by function versions or aliases, errors, billed duration, function callers, IAM users, and threat details.", + "children": [ + { + "type": "DashboardV2SyncDefinition", + "name": "1. AWS Lambda - Overview", + "description": "The AWS Lambda - Overview dashboard provides intuitive insights with CloudWatch Lambda metrics, CloudTrail audit logs for Lambda, as well as Lambda logs to give you an at-a-glance view of actions, performance, and health of your AWS Lambda functions.", + "title": "1. AWS Lambda - Overview", + "rootPanel": null, + "theme": "Light", + "topologyLabelMap": { + "data": { + "namespace": [ + "aws/lambda" + ], + "region": [ + "*" + ], + "_sumo_domain_name": [ + "aws" + ], + "account": [ + "*" + ] + } + }, + "refreshInterval": 0, + "timeRange": { + "type": "BeginBoundedTimeRange", + "from": { + "type": "RelativeTimeRangeBoundary", + "relativeTime": "-1d" + }, + "to": null + }, + "layout": { + "layoutType": "Grid", + "layoutStructures": [ + { + "key": "panelpane-003c8b8f895dbb44", + "structure": "{\"height\":7,\"width\":6,\"x\":6,\"y\":8}" + }, + { + "key": "panelpane-8e03665b8cdca84a", + "structure": "{\"height\":7,\"width\":6,\"x\":12,\"y\":1}" + }, + { + "key": "panelpane-ca5a7c80a6581847", + "structure": "{\"height\":7,\"width\":6,\"x\":12,\"y\":8}" + }, + { + "key": "panelpane-3607a1da9980c849", + "structure": "{\"height\":7,\"width\":6,\"x\":18,\"y\":1}" + }, + { + "key": "panelpane-3aa7297fa4a29944", + "structure": "{\"height\":7,\"width\":6,\"x\":18,\"y\":8}" + }, + { + "key": "panelpane-bae35066b5b60848", + "structure": "{\"height\":7,\"width\":12,\"x\":0,\"y\":15}" + }, + { + "key": "panelpane-f03235ddbab6fa4b", + "structure": "{\"height\":6,\"width\":12,\"x\":0,\"y\":22}" + }, + { + "key": "panelpane-02614a9cbadabb4e", + "structure": "{\"height\":6,\"width\":3,\"x\":12,\"y\":16}" + }, + { + "key": "panelpane-58fe78d0978b6843", + "structure": "{\"height\":7,\"width\":12,\"x\":0,\"y\":28}" + }, + { + "key": "panelpane-9661a24080cb7a43", + "structure": "{\"height\":1,\"width\":12,\"x\":12,\"y\":0}" + }, + { + "key": "panelpane-d4d18b06ac340b4d", + "structure": "{\"height\":1,\"width\":12,\"x\":0,\"y\":0}" + }, + { + "key": "panelpane-2c1355a7927f8946", + "structure": "{\"height\":7,\"width\":6,\"x\":0,\"y\":8}" + }, + { + "key": "panelpane-d9f052d8a3216943", + "structure": "{\"height\":6,\"width\":9,\"x\":15,\"y\":16}" + }, + { + "key": "panelpane-10f4e6b2b578c949", + "structure": "{\"height\":7,\"width\":12,\"x\":0,\"y\":43}" + }, + { + "key": "panelpane-d93f12b480302940", + "structure": "{\"height\":7,\"width\":12,\"x\":0,\"y\":50}" + }, + { + "key": "panelpane-6a76b586aaa6eb44", + "structure": "{\"height\":7,\"width\":12,\"x\":12,\"y\":50}" + }, + { + "key": "panelpane-6dcf5bbf91746849", + "structure": "{\"height\":7,\"width\":12,\"x\":12,\"y\":43}" + }, + { + "key": "panelPANE-2E7EA641BAAB3A42", + "structure": "{\"height\":7,\"width\":12,\"x\":0,\"y\":1}" + }, + { + "key": "panelPANE-32972729B258184D", + "structure": "{\"height\":6,\"width\":12,\"x\":12,\"y\":22}" + }, + { + "key": "panelPANE-F3CF4036807F6A48", + "structure": "{\"height\":7,\"width\":12,\"x\":0,\"y\":35}" + }, + { + "key": "panelPANE-7CDE0CEA8CE70A4E", + "structure": "{\"height\":1,\"width\":12,\"x\":12,\"y\":15}" + }, + { + "key": "panelPANE-E8769C639BAF1947", + "structure": "{\"height\":1,\"width\":24,\"x\":0,\"y\":42}" + }, + { + "key": "panelPANE-646319CAA0B03A4E", + "structure": "{\"height\":7,\"width\":12,\"x\":12,\"y\":28}" + }, + { + "key": "panelA75FF450AE9AAB4D", + "structure": "{\"height\":7,\"width\":12,\"x\":12,\"y\":35}" + } + ] + }, + "panels": [ + { + "id": null, + "key": "panelpane-003c8b8f895dbb44", + "title": "Top IAM Users Using Lambda Functions", + "visualSettings": "{\"general\":{\"mode\":\"distribution\",\"type\":\"bar\"},\"legend\":{\"enabled\":false},\"series\":{},\"overrides\":[]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "\"lambda.amazonaws.com\" \"\\\"eventName\\\":\\\"Invoke\\\"\" IAMUser account={{account}} Namespace={{namespace}} region={{region}}\n| json \"eventName\", \"eventSource\", \"awsRegion\", \"userAgent\", \"sourceIPAddress\", \"recipientAccountId\", \"userIdentity\", \"requestParameters\", \"additionalEventData\" as event_name, event_source, Region, user_agent, src_ip, accountId, userIdentity, requestParameters, additionalEventData nodrop\n| json field=userIdentity \"type\", \"userName\", \"invokedBy\", \"arn\" as caller_type, user_name, invoked_by, arn nodrop | json field=requestParameters \"functionName\", \"resource\" as functionname, resource nodrop | json field=additionalEventData \"functionVersion\" as func_version nodrop \n| where event_name = \"Invoke\" and caller_type = \"IAMUser\"\n| parse regex field=functionname \"\\w+:\\w+:\\S+:[\\w-]+:\\S+:\\S+:(?[\\S]+)$\" nodrop\n| parse field=resource \"arn:aws:lambda:*:function:*\" as f1, functionname2 nodrop\n| if (isEmpty(functionname), functionname2, functionname) as functionname\n| where tolowercase(functionname) matches tolowercase(\"{{functionname}}\")\n| parse regex field=func_version \"\\w+:\\w+:\\S+:[\\w-]+:\\S+:\\S+:(?[\\S]+:[\\S ]+)$\" nodrop\n| parse field=arn \"arn:aws:*::*:*\" as f1, f2, assumedroleuser nodrop\n| if (isNull(user_name), invoked_by, user_name) as caller\n| if (isNull(invoked_by), user_name, invoked_by) as caller\n| if (isNull(caller), assumedroleuser, caller) as caller\n| count as Invocations by caller\n| top 10 caller by Invocations", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-8e03665b8cdca84a", + "title": "Invocations - Today vs Yesterday vs Last Week", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"axes\":{\"axisY\":{\"title\":\"Invocations\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"Today\"}},{\"series\":[],\"queries\":[\"B\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"Yesterday\"}},{\"series\":[],\"queries\":[\"C\"],\"userProvidedChartType\":false,\"properties\":{\"type\":\"line\",\"name\":\"Last Week\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Namespace={{namespace}} metric=Invocations statistic=Sum account={{account}} region={{region}} functionname={{functionname}} Resource=* | sum by account, region, namespace", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "Namespace={{namespace}} metric=Invocations statistic=Sum account={{account}} region={{region}} functionname={{functionname}} Resource=* | sum by account, region, namespace | timeshift -1d", + "queryType": "Metrics", + "queryKey": "B", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "Namespace={{namespace}} metric=Invocations statistic=Sum account={{account}} region={{region}} functionname={{functionname}} Resource=* | sum by account, region, namespace | timeshift -7d ", + "queryType": "Metrics", + "queryKey": "C", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-ca5a7c80a6581847", + "title": "Errors - Today vs Yesterday vs Last Week", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"axes\":{\"axisY\":{\"title\":\"Errors\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"Today\"}},{\"series\":[],\"queries\":[\"B\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"Yesterday\"}},{\"series\":[],\"queries\":[\"C\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"Last Week\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Namespace={{namespace}} metric=Errors statistic=Sum account={{account}} region={{region}} functionname={{functionname}} Resource=* | sum by account, region, namespace", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "Namespace={{namespace}} metric=Errors statistic=Sum account={{account}} region={{region}} functionname={{functionname}} Resource=* | sum by account, region, namespace | timeshift 1d", + "queryType": "Metrics", + "queryKey": "B", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "Namespace={{namespace}} metric=Errors statistic=Sum account={{account}} region={{region}} functionname={{functionname}} Resource=* | sum by account, region, namespace | timeshift 7d", + "queryType": "Metrics", + "queryKey": "C", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-3607a1da9980c849", + "title": "Duration - Today vs Yesterday vs Last Week", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"axes\":{\"axisY\":{\"title\":\"Milliseconds\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"Today\"}},{\"series\":[],\"queries\":[\"B\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"Yesterday\"}},{\"series\":[],\"queries\":[\"C\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"Last Week\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Namespace={{namespace}} metric=Duration statistic=average account={{account}} region={{region}} functionname={{functionname}} Resource=* | avg by account, region, namespace", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "Namespace={{namespace}} metric=Duration statistic=average account={{account}} region={{region}} functionname={{functionname}} Resource=* | avg by account, region, namespace | timeshift 1d", + "queryType": "Metrics", + "queryKey": "B", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "Namespace={{namespace}} metric=Duration statistic=average account={{account}} region={{region}} functionname={{functionname}} Resource=* | avg by account, region, namespace | timeshift 7d", + "queryType": "Metrics", + "queryKey": "C", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-3aa7297fa4a29944", + "title": "Throttling - Today vs Yesterday vs Last Week", + "visualSettings": "{\"general\":{\"mode\":\"timeSeries\"},\"axes\":{\"axisY\":{\"title\":\"Avg Throttling Events\"}},\"overrides\":[{\"series\":[],\"queries\":[\"A\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"Today\"}},{\"series\":[],\"queries\":[\"B\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"Yesterday\"}},{\"series\":[],\"queries\":[\"C\"],\"userProvidedChartType\":false,\"properties\":{\"name\":\"Last Week\"}}]}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "Namespace={{namespace}} metric=Throttles statistic=average account={{account}} region={{region}} functionname={{functionname}} Resource=* | avg by account, region, namespace", + "queryType": "Metrics", + "queryKey": "A", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "Namespace={{namespace}} metric=Throttles statistic=average account={{account}} region={{region}} functionname={{functionname}} Resource=* | avg by account, region, namespace | timeshift 1d", + "queryType": "Metrics", + "queryKey": "B", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + }, + { + "queryString": "Namespace={{namespace}} metric=Throttles statistic=average account={{account}} region={{region}} functionname={{functionname}} Resource=* | avg by account, region, namespace | timeshift 7d", + "queryType": "Metrics", + "queryKey": "C", + "metricsQueryMode": "Advanced", + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Manual", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-bae35066b5b60848", + "title": "Top Functions by Duration", + "visualSettings": "{\"general\":{\"mode\":\"distribution\",\"type\":\"table\",\"decimals\":2},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} Duration\n| json \"message\" nodrop | if (_raw matches \"{*\", message, _raw) as message\n// | json \"logStream\", \"logGroup\" nodrop\n| _sourceName as logStream | _sourceHost as logGroup\n| parse regex field=message \"REPORT\\s+RequestId:\\s+(?[^\\s]+)\\s+Duration:\\s+(?[^\\s]+)\\s+ms\\s+Billed Duration:\\s+(?[^\\s]+)\\s+ms\\s+Memory\\s+Size:\\s+(?[^\\s]+)\\s+MB\\s+Max\\s+Memory\\s+Used:\\s+(?[^\\s]+)\\s+MB\" \n| parse field=loggroup \"/aws/lambda/*\" as functionname\n| where tolowercase(functionname) matches tolowercase(\"{{functionname}}\")\n| sum(Duration) as %\"Total Duration\", avg(Duration) as %\"Avg Duration\", count as Invocations by functionname\n| top 10 functionname by %\"Avg Duration\", %\"Total Duration\", Invocations\n| format( \"%.2f\",%\"Avg Duration\") as %\"Avg Duration\"\n| format( \"%.2f\",%\"Total Duration\") as %\"Total Duration\"", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-f03235ddbab6fa4b", + "title": "Top Functions by Memory Used", + "visualSettings": "{\"general\":{\"mode\":\"distribution\",\"type\":\"table\",\"aggregationType\":\"max\",\"fontSize\":12,\"paginationPageSize\":100},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "account={{account}} region={{region}} Namespace={{namespace}} Memory Used Size\n| json \"message\" nodrop | if (_raw matches \"{*\", message, _raw) as message\n// | json \"logStream\", \"logGroup\" nodrop\n| _sourceName as logStream | _sourceHost as logGroup\n| parse regex field=message \"REPORT\\s+RequestId:\\s+(?[^\\s]+)\\s+Duration:\\s+(?[^\\s]+)\\s+ms\\s+Billed Duration:\\s+(?[^\\s]+)\\s+ms\\s+Memory\\s+Size:\\s+(?[^\\s]+)\\s+MB\\s+Max\\s+Memory\\s+Used:\\s+(?[^\\s]+)\\s+MB\" \n| parse field=loggroup \"/aws/lambda/*\" as functionname\n| where tolowercase(functionname) matches tolowercase(\"{{functionname}}\")\n| max(MaxMemoryUsed) as MaxMemoryUsed, avg(MemorySize) as AvgMemorySize by functionname\n| top 10 functionname by MaxMemoryUsed, functionname asc, AvgMemorySize", + "queryType": "Logs", + "queryKey": "A", + "metricsQueryMode": null, + "metricsQueryData": null, + "tracesQueryData": null, + "parseMode": "Auto", + "timeSource": "Message" + } + ], + "description": "", + "timeRange": null, + "coloringRules": null, + "linkedDashboards": [] + }, + { + "id": null, + "key": "panelpane-02614a9cbadabb4e", + "title": "Function Errors", + "visualSettings": "{\"general\":{\"type\":\"svp\"},\"svp\":{\"label\":\"Errors\",\"thresholds\":[{\"from\":null,\"to\":1,\"color\":\"#16943E\"},{\"from\":\"1\",\"to\":\"5\",\"color\":\"#DFBE2E\"},{\"from\":\"5\",\"to\":null,\"color\":\"#BF2121\"}],\"option\":\"Sum\",\"labelFontSize\":10,\"noDataString\":\"0\",\"rounding\":0},\"series\":{}}", + "keepVisualSettingsConsistentWithParent": true, + "panelType": "SumoSearchPanel", + "queries": [ + { + "queryString": "(errorMessage or ERROR or CRITICAL) account={{account}} region={{region}} Namespace={{namespace}}\n| json \"message\" nodrop | if (_raw matches \"{*\", message, _raw) as message\n// | json \"logStream\", \"logGroup\" nodrop\n| _sourceName as logStream | _sourceHost as logGroup\n| parse field=logstream \"*/[*]*\" as logstreamDate, version, logstreamID\n| parse field=loggroup \"/aws/lambda/*\" as functionname\n| where tolowercase(functionname) matches tolowercase(\"{{functionname}}\")\n| parse regex field=message \"^(?