From 9bef24811cd1ddf9050af40b82e5812386ecb0d1 Mon Sep 17 00:00:00 2001 From: Neeraj Sharma Date: Fri, 19 Nov 2021 13:34:58 +0530 Subject: [PATCH 1/2] dir structure change added for alb and elb --- modules/aws/alb/1.0/alb_cloudwatch.hcl | 1144 ++++++++++++++++++++++++ modules/aws/elb/1.0/elb_cloudwatch.hcl | 851 ++++++++++++++++++ 2 files changed, 1995 insertions(+) create mode 100644 modules/aws/alb/1.0/alb_cloudwatch.hcl create mode 100644 modules/aws/elb/1.0/elb_cloudwatch.hcl diff --git a/modules/aws/alb/1.0/alb_cloudwatch.hcl b/modules/aws/alb/1.0/alb_cloudwatch.hcl new file mode 100644 index 0000000..429f6ea --- /dev/null +++ b/modules/aws/alb/1.0/alb_cloudwatch.hcl @@ -0,0 +1,1144 @@ +ingester aws_alb_cloudwatch module { + frequency = 60 + lookback = 600 + timeout = 30 + resolution = 60 + lag = 60 + + inputs = "$input{inputs}" + + input_query = <<-EOF + label_set( + label_replace( + elasticloadbalancing_loadbalancer{id=~"^app/.*",$input{tag_filter}}, 'id=LoadBalancer' + ), "service", "$input{service}", "namespace", "$input{namespace}" + ) + EOF + + label { + type = "service" + name = "$input{service}" + } + + label { + type = "namespace" + name = "$input{namespace}" + } + + physical_component { + type = "alb" + name = "$input{LoadBalancer}" + } + + data_for_graph_node { + type = "alb" + name = "$input{LoadBalancer}" + } + + using = { + "default" : "$input{using}" + } + + gauge "throughput" { + unit = "count" + aggregator = "SUM" + source cloudwatch "throughput" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "RequestCount" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + } + gauge "new_connections" { + unit = "count" + aggregator = "SUM" + source cloudwatch "new_connections" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "NewConnectionCount" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + } + gauge "rejected_connections" { + unit = "count" + aggregator = "SUM" + source cloudwatch "rejected_connections" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "RejectedConnectionCount" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + } + gauge "processed_bytes" { + unit = "bytes" + aggregator = "SUM" + source cloudwatch "processed_bytes" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "ProcessedBytes" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + } + gauge "lcu" { + unit = "count" + aggregator = "SUM" + source cloudwatch "lcu" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "ConsumedLCUs" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + } + + status_histo status_5xx { + unit = "count" + aggregator = "SUM" + + source cloudwatch "status_500" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "HTTPCode_Target_5XX_Count" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + } + status_histo status_4xx { + unit = "count" + aggregator = "SUM" + + source cloudwatch "status_400" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "HTTPCode_Target_4XX_Count" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + } + + gauge lb_5xx { + unit = "count" + aggregator = "SUM" + source cloudwatch "lb_500" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "HTTPCode_ELB_5XX_Count" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + } + gauge lb_4xx { + unit = "count" + aggregator = "SUM" + source cloudwatch "lb_400" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "HTTPCode_ELB_4XX_Count" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + } + + latency "latency_histo" { + unit = "s" + aggregator = "PERCENTILE" + error_margin = 0.05 + source cloudwatch "throughput" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "RequestCount" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + + source cloudwatch "p50" { + query { + aggregator = "p50" + namespace = "AWS/ApplicationELB" + metric_name = "TargetResponseTime" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + + source cloudwatch "p75" { + query { + aggregator = "p75" + namespace = "AWS/ApplicationELB" + metric_name = "TargetResponseTime" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + + source cloudwatch "p90" { + query { + aggregator = "p90" + namespace = "AWS/ApplicationELB" + metric_name = "TargetResponseTime" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + + source cloudwatch "p99" { + query { + aggregator = "p99" + namespace = "AWS/ApplicationELB" + metric_name = "TargetResponseTime" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + + source cloudwatch "p100" { + query { + aggregator = "p100" + namespace = "AWS/ApplicationELB" + metric_name = "TargetResponseTime" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + } +} + +ingester aws_alb_endpoint_cloudwatch module { + frequency = 60 + lookback = 600 + timeout = 30 + resolution = 60 + lag = 60 + + using = { + "default" : "$input{using}" + } + + inputs = "$input{inputs}" + + input_query = <<-EOF + label_set( + label_replace( + elasticloadbalancing_loadbalancer{id=~"^app/.*",$input{tag_filter}}, 'id=LoadBalancer' + ), "service", "$input{service}", "namespace", "$input{namespace}" + ) + EOF + + label { + type = "service" + name = "$input{service}" + } + + label { + type = "namespace" + name = "$input{namespace}" + } + + physical_component { + type = "alb" + name = "$input{LoadBalancer}" + } + + data_for_graph_node { + type = "endpoint" + name = "$input{endpoint}" + } + + gauge "throughput" { + unit = "count" + aggregator = "SUM" + source cloudwatch "throughput" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "RequestCount" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + } + latency "latency_histo" { + unit = "s" + aggregator = "PERCENTILE" + error_margin = 0.05 + source cloudwatch "throughput" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "RequestCount" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + + source cloudwatch "p50" { + query { + aggregator = "p50" + namespace = "AWS/ApplicationELB" + metric_name = "TargetResponseTime" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + + source cloudwatch "p75" { + query { + aggregator = "p75" + namespace = "AWS/ApplicationELB" + metric_name = "TargetResponseTime" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + + source cloudwatch "p90" { + query { + aggregator = "p90" + namespace = "AWS/ApplicationELB" + metric_name = "TargetResponseTime" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + + source cloudwatch "p99" { + query { + aggregator = "p99" + namespace = "AWS/ApplicationELB" + metric_name = "TargetResponseTime" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + + source cloudwatch "p100" { + query { + aggregator = "p100" + namespace = "AWS/ApplicationELB" + metric_name = "TargetResponseTime" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + } + status_histo status_5xx { + unit = "count" + aggregator = "SUM" + + source cloudwatch "status_500" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "HTTPCode_Target_5XX_Count" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + } + status_histo status_4xx { + unit = "count" + aggregator = "SUM" + + source cloudwatch "status_400" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "HTTPCode_Target_4XX_Count" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + } + + status_histo status_3xx { + unit = "count" + aggregator = "SUM" + source cloudwatch "status_300" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "HTTPCode_ELB_3XX_Count" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + source cloudwatch "status_301" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "HTTPCode_Target_3XX_Count" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + } + status_histo status_2xx { + unit = "count" + aggregator = "SUM" + source cloudwatch "status_200" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "HTTPCode_Target_2XX_Count" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + } +} + +ingester aws_alb_tg_cloudwatch module { + frequency = 60 + lookback = 600 + timeout = 30 + resolution = 60 + lag = 60 + + using = { + "default" : "$input{using}" + } + + inputs = "$input{inputs}" + + input_query = <<-EOF + label_set( + label_replace( + elasticloadbalancing_loadbalancer{id=~"^app/.*",$input{tag_filter}}, 'id=LoadBalancer' + ), "service", "$input{service}", "namespace", "$input{namespace}" + ) + EOF + + label { + type = "service" + name = "$input{service}" + } + + label { + type = "namespace" + name = "$input{namespace}" + } + + physical_component { + type = "alb" + name = "$input{LoadBalancer}" + } + + physical_address { + type = "alb_target_group" + name = "$input{TargetGroup}" + } + + data_for_graph_node { + type = "alb_logical" + name = "lb: $input{LoadBalancer}" + } + + gauge "throughput" { + unit = "count" + aggregator = "SUM" + source cloudwatch "throughput" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "RequestCount" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}", + "TargetGroup" = "$input{TargetGroup}" + } + } + } + } + latency "latency_histo" { + unit = "s" + aggregator = "PERCENTILE" + error_margin = 0.05 + source cloudwatch "throughput" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "RequestCount" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + "TargetGroup" = "$input{TargetGroup}" + } + } + } + + source cloudwatch "p50" { + query { + aggregator = "p50" + namespace = "AWS/ApplicationELB" + metric_name = "TargetResponseTime" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}", + "TargetGroup" = "$input{TargetGroup}" + } + } + } + + source cloudwatch "p75" { + query { + aggregator = "p75" + namespace = "AWS/ApplicationELB" + metric_name = "TargetResponseTime" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}", + "TargetGroup" = "$input{TargetGroup}" + } + } + } + + source cloudwatch "p90" { + query { + aggregator = "p90" + namespace = "AWS/ApplicationELB" + metric_name = "TargetResponseTime" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}", + "TargetGroup" = "$input{TargetGroup}" + } + } + } + + source cloudwatch "p99" { + query { + aggregator = "p99" + namespace = "AWS/ApplicationELB" + metric_name = "TargetResponseTime" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}", + "TargetGroup" = "$input{TargetGroup}" + } + } + } + + source cloudwatch "p100" { + query { + aggregator = "p100" + namespace = "AWS/ApplicationELB" + metric_name = "TargetResponseTime" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}", + "TargetGroup" = "$input{TargetGroup}" + } + } + } + } + status_histo status_5xx { + unit = "count" + aggregator = "SUM" + + source cloudwatch "status_500" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "HTTPCode_Target_5XX_Count" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}", + "TargetGroup" = "$input{TargetGroup}" + } + } + } + } + status_histo status_4xx { + unit = "count" + aggregator = "SUM" + + source cloudwatch "status_400" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "HTTPCode_Target_4XX_Count" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}", + "TargetGroup" = "$input{TargetGroup}" + } + } + } + } + + status_histo status_3xx { + unit = "count" + aggregator = "SUM" + source cloudwatch "status_300" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "HTTPCode_Target_3XX_Count" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}", + "TargetGroup" = "$input{TargetGroup}" + } + } + } + } + status_histo status_2xx { + unit = "count" + aggregator = "SUM" + source cloudwatch "status_200" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "HTTPCode_Target_2XX_Count" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}", + "TargetGroup" = "$input{TargetGroup}" + } + } + } + } +} + +ingester aws_alb_internal_cloudwatch module { + frequency = 60 + lookback = 600 + timeout = 30 + resolution = 60 + lag = 60 + + inputs = "$input{inputs}" + + input_query = <<-EOF + label_set( + label_replace( + elasticloadbalancing_loadbalancer{id=~"^app/.*",$input{tag_filter}}, 'id=LoadBalancer' + ), "service", "$input{service}", "namespace", "$input{namespace}" + ) + EOF + + label { + type = "service" + name = "$input{service}" + } + + label { + type = "namespace" + name = "$input{namespace}" + } + + physical_component { + type = "internalAlb" + name = "$input{LoadBalancer}" + } + + data_for_graph_node { + type = "internalAlb" + name = "$input{LoadBalancer}" + } + + using = { + "default" : "$input{using}" + } + + gauge "throughput" { + unit = "count" + aggregator = "SUM" + source cloudwatch "throughput" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "RequestCount" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + } + gauge "new_connections" { + unit = "count" + aggregator = "SUM" + source cloudwatch "new_connections" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "NewConnectionCount" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + } + gauge "rejected_connections" { + unit = "count" + aggregator = "SUM" + source cloudwatch "rejected_connections" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "RejectedConnectionCount" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + } + gauge "processed_bytes" { + unit = "bytes" + aggregator = "SUM" + source cloudwatch "processed_bytes" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "ProcessedBytes" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + } + gauge "lcu" { + unit = "count" + aggregator = "SUM" + source cloudwatch "lcu" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "ConsumedLCUs" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + } + status_histo status_5xx { + unit = "count" + aggregator = "SUM" + + source cloudwatch "status_500" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "HTTPCode_Target_5XX_Count" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + } + status_histo status_4xx { + unit = "count" + aggregator = "SUM" + + source cloudwatch "status_400" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "HTTPCode_Target_4XX_Count" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + } + + gauge lb_5xx { + unit = "count" + aggregator = "SUM" + source cloudwatch "lb_500" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "HTTPCode_ELB_5XX_Count" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + } + gauge lb_4xx { + unit = "count" + aggregator = "SUM" + source cloudwatch "lb_400" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "HTTPCode_ELB_4XX_Count" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + } + latency "latency_histo" { + unit = "s" + aggregator = "PERCENTILE" + error_margin = 0.05 + source cloudwatch "throughput" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "RequestCount" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + + source cloudwatch "p50" { + query { + aggregator = "p50" + namespace = "AWS/ApplicationELB" + metric_name = "TargetResponseTime" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + + source cloudwatch "p75" { + query { + aggregator = "p75" + namespace = "AWS/ApplicationELB" + metric_name = "TargetResponseTime" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + + source cloudwatch "p90" { + query { + aggregator = "p90" + namespace = "AWS/ApplicationELB" + metric_name = "TargetResponseTime" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + + source cloudwatch "p99" { + query { + aggregator = "p99" + namespace = "AWS/ApplicationELB" + metric_name = "TargetResponseTime" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + + source cloudwatch "p100" { + query { + aggregator = "p100" + namespace = "AWS/ApplicationELB" + metric_name = "TargetResponseTime" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + } +} + +ingester aws_alb_internal_endpoint_cloudwatch module { + frequency = 60 + lookback = 600 + timeout = 30 + resolution = 60 + lag = 60 + + using = { + "default" : "$input{using}" + } + + inputs = "$input{inputs}" + + input_query = <<-EOF + label_set( + label_replace( + elasticloadbalancing_loadbalancer{id=~"^app/.*",$input{tag_filter}}, 'id=LoadBalancer' + ), "service", "$input{service}", "namespace", "$input{namespace}" + ) + EOF + + label { + type = "service" + name = "$input{service}" + } + + label { + type = "namespace" + name = "$input{namespace}" + } + + physical_component { + type = "internalAlb" + name = "$input{LoadBalancer}" + } + + data_for_graph_node { + type = "endpoint" + name = "$input{namespace}$input{endpoint}" + } + + gauge "throughput" { + unit = "count" + aggregator = "SUM" + source cloudwatch "throughput" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "RequestCount" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + } + latency "latency_histo" { + error_margin = 0.05 + unit = "ms" + aggregator = "PERCENTILE" + source cloudwatch "throughput" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "RequestCount" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + + source cloudwatch "p50" { + query { + aggregator = "p50" + namespace = "AWS/ApplicationELB" + metric_name = "TargetResponseTime" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + + source cloudwatch "p75" { + query { + aggregator = "p75" + namespace = "AWS/ApplicationELB" + metric_name = "TargetResponseTime" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + + source cloudwatch "p90" { + query { + aggregator = "p90" + namespace = "AWS/ApplicationELB" + metric_name = "TargetResponseTime" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + + source cloudwatch "p99" { + query { + aggregator = "p99" + namespace = "AWS/ApplicationELB" + metric_name = "TargetResponseTime" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + + source cloudwatch "p100" { + query { + aggregator = "p100" + namespace = "AWS/ApplicationELB" + metric_name = "TargetResponseTime" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + } + status_histo status_5xx { + unit = "count" + aggregator = "SUM" + + source cloudwatch "status_500" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "HTTPCode_Target_5XX_Count" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + } + status_histo status_4xx { + unit = "count" + aggregator = "SUM" + + source cloudwatch "status_400" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "HTTPCode_Target_4XX_Count" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + } + + status_histo status_3xx { + unit = "count" + aggregator = "SUM" + source cloudwatch "status_300" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "HTTPCode_ELB_3XX_Count" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + source cloudwatch "status_301" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "HTTPCode_Target_3XX_Count" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + } + status_histo status_2xx { + unit = "count" + aggregator = "SUM" + source cloudwatch "status_200" { + query { + aggregator = "Sum" + namespace = "AWS/ApplicationELB" + metric_name = "HTTPCode_Target_2XX_Count" + + dimensions = { + "LoadBalancer" = "$input{LoadBalancer}" + } + } + } + } +} diff --git a/modules/aws/elb/1.0/elb_cloudwatch.hcl b/modules/aws/elb/1.0/elb_cloudwatch.hcl new file mode 100644 index 0000000..680bc35 --- /dev/null +++ b/modules/aws/elb/1.0/elb_cloudwatch.hcl @@ -0,0 +1,851 @@ +ingester aws_elb_cloudwatch module { + frequency = 60 + lookback = 600 + timeout = 30 + resolution = 60 + lag = 60 + + inputs = "$input{inputs}" + + input_query = <<-EOF + label_set( + label_replace( + elasticloadbalancing_loadbalancer{id!~".*/.*",$input{tag_filter}}, 'id=LoadBalancerName' + ), "service", "$input{service}", "namespace", "$input{namespace}" + ) + EOF + + label { + type = "service" + name = "$input{service}" + } + + label { + type = "namespace" + name = "$input{namespace}" + } + + physical_component { + type = "elb" + name = "$input{LoadBalancerName}" + } + + data_for_graph_node { + type = "elb" + name = "$input{LoadBalancerName}" + } + + using = { + "default" : "$input{using}" + } + + gauge "throughput" { + unit = "count" + aggregator = "SUM" + source cloudwatch "throughput" { + query { + aggregator = "Sum" + namespace = "AWS/ELB" + metric_name = "RequestCount" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + } + gauge "surge_queue_length" { + unit = "count" + aggregator = "MAX" + source cloudwatch "surge_queue_length" { + query { + aggregator = "Maximum" + namespace = "AWS/ELB" + metric_name = "SurgeQueueLength" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + } + gauge "connection_errors" { + unit = "count" + aggregator = "SUM" + source cloudwatch "connection_errors" { + query { + aggregator = "Sum" + namespace = "AWS/ELB" + metric_name = "BackendConnectionErrors" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + } + gauge "unhealthy_hosts" { + unit = "count" + aggregator = "MAX" + source cloudwatch "unhealthy_hosts" { + query { + aggregator = "Maximum" + namespace = "AWS/ELB" + metric_name = "UnHealthyHostCount" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + } + status_histo status_5xx { + source cloudwatch "status_500" { + query { + aggregator = "Sum" + namespace = "AWS/ELB" + metric_name = "HTTPCode_Backend_5XX" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + } + status_histo status_4xx { + source cloudwatch "status_400" { + query { + aggregator = "Sum" + namespace = "AWS/ELB" + metric_name = "HTTPCode_Backend_4XX" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + } + + gauge lb_5xx { + source cloudwatch "lb_500" { + query { + aggregator = "Sum" + namespace = "AWS/ELB" + metric_name = "HTTPCode_ELB_5XX" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + } + gauge lb_4xx { + source cloudwatch "lb_400" { + query { + aggregator = "Sum" + namespace = "AWS/ELB" + metric_name = "HTTPCode_ELB_4XX" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + } + latency "latency_histo" { + unit = "s" + aggregator = "percentile" + error_margin = 0.05 + source cloudwatch "throughput" { + query { + aggregator = "Sum" + namespace = "AWS/ELB" + metric_name = "RequestCount" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + + source cloudwatch "p50" { + query { + aggregator = "p50" + namespace = "AWS/ELB" + metric_name = "Latency" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + + source cloudwatch "p75" { + query { + aggregator = "p75" + namespace = "AWS/ELB" + metric_name = "Latency" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + + source cloudwatch "p90" { + query { + aggregator = "p90" + namespace = "AWS/ELB" + metric_name = "Latency" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + + source cloudwatch "p99" { + query { + aggregator = "p99" + namespace = "AWS/ELB" + metric_name = "Latency" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + + source cloudwatch "p100" { + query { + aggregator = "Maximum" + namespace = "AWS/ELB" + metric_name = "Latency" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + } +} + +ingester aws_elb_internal_cloudwatch module { + frequency = 60 + lookback = 600 + timeout = 30 + resolution = 60 + lag = 60 + + inputs = "$input{inputs}" + + input_query = <<-EOF + label_set( + label_replace( + elasticloadbalancing_loadbalancer{id!~".*/.*",$input{tag_filter}}, 'id=LoadBalancerName' + ), "service", "$input{service}", "namespace", "$input{namespace}" + ) + EOF + + label { + type = "service" + name = "$input{service}" + } + + label { + type = "namespace" + name = "$input{namespace}" + } + + physical_component { + type = "internalElb" + name = "$input{LoadBalancerName}" + } + + data_for_graph_node { + type = "internalElb" + name = "$input{LoadBalancerName}" + } + + using = { + "default" : "$input{using}" + } + + gauge "throughput" { + unit = "count" + aggregator = "SUM" + source cloudwatch "throughput" { + query { + aggregator = "Sum" + namespace = "AWS/ELB" + metric_name = "RequestCount" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + } + gauge "surge_queue_length" { + unit = "count" + aggregator = "MAX" + source cloudwatch "surge_queue_length" { + query { + aggregator = "Maximum" + namespace = "AWS/ELB" + metric_name = "SurgeQueueLength" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + } + gauge "connection_errors" { + unit = "count" + aggregator = "SUM" + source cloudwatch "connection_errors" { + query { + aggregator = "Sum" + namespace = "AWS/ELB" + metric_name = "BackendConnectionErrors" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + } + gauge "unhealthy_hosts" { + unit = "count" + aggregator = "MAX" + source cloudwatch "unhealthy_hosts" { + query { + aggregator = "Maximum" + namespace = "AWS/ELB" + metric_name = "UnHealthyHostCount" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + } + status_histo status_5xx { + source cloudwatch "status_500" { + query { + aggregator = "Sum" + namespace = "AWS/ELB" + metric_name = "HTTPCode_Backend_5XX" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + } + status_histo status_4xx { + source cloudwatch "status_400" { + query { + aggregator = "Sum" + namespace = "AWS/ELB" + metric_name = "HTTPCode_Backend_4XX" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + } + + gauge lb_5xx { + source cloudwatch "lb_500" { + query { + aggregator = "Sum" + namespace = "AWS/ELB" + metric_name = "HTTPCode_ELB_5XX" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + } + gauge lb_4xx { + source cloudwatch "lb_400" { + query { + aggregator = "Sum" + namespace = "AWS/ELB" + metric_name = "HTTPCode_ELB_4XX" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + } + latency "latency_histo" { + unit = "s" + aggregator = "percentile" + error_margin = 0.05 + source cloudwatch "throughput" { + query { + aggregator = "Sum" + namespace = "AWS/ELB" + metric_name = "RequestCount" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + + source cloudwatch "p50" { + query { + aggregator = "p50" + namespace = "AWS/ELB" + metric_name = "Latency" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + + source cloudwatch "p75" { + query { + aggregator = "p75" + namespace = "AWS/ELB" + metric_name = "Latency" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + + source cloudwatch "p90" { + query { + aggregator = "p90" + namespace = "AWS/ELB" + metric_name = "Latency" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + + source cloudwatch "p99" { + query { + aggregator = "p99" + namespace = "AWS/ELB" + metric_name = "Latency" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + + source cloudwatch "p100" { + query { + aggregator = "Maximum" + namespace = "AWS/ELB" + metric_name = "Latency" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + } +} + +ingester aws_elb_endpoint_cloudwatch module { + frequency = 60 + lookback = 600 + timeout = 30 + resolution = 60 + lag = 60 + + using = { + "default" : "$input{using}" + } + + label { + type = "service" + name = "$input{service}" + } + + label { + type = "namespace" + name = "$input{namespace}" + } + + physical_component { + type = "elb" + name = "$input{LoadBalancerName}" + } + + data_for_graph_node { + type = "endpoint" + name = "$input{namespace}/" + } + + inputs = "$input{inputs}" + + input_query = <<-EOF + label_set( + label_replace( + elasticloadbalancing_loadbalancer{id!~".*/.*",$input{tag_filter}}, 'id=LoadBalancerName' + ), "service", "$input{service}", "namespace", "$input{namespace}" + ) + EOF + + gauge "throughput" { + unit = "count" + aggregator = "SUM" + source cloudwatch "throughput" { + query { + aggregator = "Sum" + namespace = "AWS/ELB" + metric_name = "RequestCount" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + } + latency "latency_histo" { + unit = "s" + aggregator = "percentile" + error_margin = 0.05 + source cloudwatch "throughput" { + query { + aggregator = "Sum" + namespace = "AWS/ELB" + metric_name = "RequestCount" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + + source cloudwatch "p50" { + query { + aggregator = "p50" + namespace = "AWS/ELB" + metric_name = "Latency" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + + source cloudwatch "p75" { + query { + aggregator = "p75" + namespace = "AWS/ELB" + metric_name = "Latency" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + + source cloudwatch "p90" { + query { + aggregator = "p90" + namespace = "AWS/ELB" + metric_name = "Latency" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + + source cloudwatch "p99" { + query { + aggregator = "p99" + namespace = "AWS/ELB" + metric_name = "Latency" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + + source cloudwatch "p100" { + query { + aggregator = "Maximum" + namespace = "AWS/ELB" + metric_name = "Latency" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + } + status_histo status_5xx { + unit = "count" + aggregator = "SUM" + source cloudwatch "status_500" { + query { + aggregator = "Sum" + namespace = "AWS/ELB" + metric_name = "HTTPCode_Backend_5XX" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + } + status_histo status_4xx { + unit = "count" + aggregator = "SUM" + source cloudwatch "status_400" { + query { + aggregator = "Sum" + namespace = "AWS/ELB" + metric_name = "HTTPCode_Backend_4XX" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + } + status_histo status_3xx { + unit = "count" + aggregator = "SUM" + source cloudwatch "status_300" { + query { + aggregator = "Sum" + namespace = "AWS/ELB" + metric_name = "HTTPCode_Backend_3XX" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + } + status_histo status_2xx { + unit = "count" + aggregator = "SUM" + source cloudwatch "status_200" { + query { + aggregator = "Sum" + namespace = "AWS/ELB" + metric_name = "HTTPCode_Backend_2XX" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + } +} + +ingester aws_elb_internal_endpoint_cloudwatch module { + frequency = 60 + lookback = 600 + timeout = 30 + resolution = 60 + lag = 60 + + using = { + "default" : "$input{using}" + } + + label { + type = "service" + name = "$input{service}" + } + + label { + type = "namespace" + name = "$input{namespace}" + } + + physical_component { + type = "internalElb" + name = "$input{LoadBalancerName}" + } + + data_for_graph_node { + type = "endpoint" + name = "$input{endpoint}" + } + + inputs = "$input{inputs}" + + input_query = <<-EOF + label_set( + label_replace( + elasticloadbalancing_loadbalancer{id!~".*/.*",$input{tag_filter}}, 'id=LoadBalancerName' + ), "service", "$input{service}", "namespace", "$input{namespace}" + ) + EOF + + gauge "throughput" { + unit = "count" + aggregator = "SUM" + source cloudwatch "throughput" { + query { + aggregator = "Sum" + namespace = "AWS/ELB" + metric_name = "RequestCount" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + } + latency "latency_histo" { + unit = "s" + aggregator = "percentile" + error_margin = 0.05 + source cloudwatch "throughput" { + query { + aggregator = "Sum" + namespace = "AWS/ELB" + metric_name = "RequestCount" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + + source cloudwatch "p50" { + query { + aggregator = "p50" + namespace = "AWS/ELB" + metric_name = "Latency" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + + source cloudwatch "p75" { + query { + aggregator = "p75" + namespace = "AWS/ELB" + metric_name = "Latency" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + + source cloudwatch "p90" { + query { + aggregator = "p90" + namespace = "AWS/ELB" + metric_name = "Latency" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + + source cloudwatch "p99" { + query { + aggregator = "p99" + namespace = "AWS/ELB" + metric_name = "Latency" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + + source cloudwatch "p100" { + query { + aggregator = "Maximum" + namespace = "AWS/ELB" + metric_name = "Latency" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + } + status_histo status_5xx { + unit = "count" + aggregator = "SUM" + source cloudwatch "status_500" { + query { + aggregator = "Sum" + namespace = "AWS/ELB" + metric_name = "HTTPCode_Backend_5XX" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + } + status_histo status_4xx { + unit = "count" + aggregator = "SUM" + source cloudwatch "status_400" { + query { + aggregator = "Sum" + namespace = "AWS/ELB" + metric_name = "HTTPCode_Backend_4XX" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + } + status_histo status_3xx { + unit = "count" + aggregator = "SUM" + source cloudwatch "status_300" { + query { + aggregator = "Sum" + namespace = "AWS/ELB" + metric_name = "HTTPCode_Backend_3XX" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + } + status_histo status_2xx { + unit = "count" + aggregator = "SUM" + source cloudwatch "status_200" { + query { + aggregator = "Sum" + namespace = "AWS/ELB" + metric_name = "HTTPCode_Backend_2XX" + + dimensions = { + "LoadBalancerName" = "$input{LoadBalancerName}" + } + } + } + } +} From 4eada8358e9cebce1603c3a0ce63df5a45d17173 Mon Sep 17 00:00:00 2001 From: Neeraj Sharma Date: Wed, 24 Nov 2021 16:36:04 +0530 Subject: [PATCH 2/2] gcp cloudsql dir updated --- modules/gcp/cloudsql/1.0/cloudsql.hcl | 239 ++++++++++++++++++++++++++ 1 file changed, 239 insertions(+) create mode 100644 modules/gcp/cloudsql/1.0/cloudsql.hcl diff --git a/modules/gcp/cloudsql/1.0/cloudsql.hcl b/modules/gcp/cloudsql/1.0/cloudsql.hcl new file mode 100644 index 0000000..90d4efe --- /dev/null +++ b/modules/gcp/cloudsql/1.0/cloudsql.hcl @@ -0,0 +1,239 @@ +ingester gcp_cloudsql_logical module { + lookback = 600 + frequency = 60 + timeout = 30 + resolution = 60 + lag = 0 + + label { + type = "service" + name = "$input{service}" + } + + physical_component { + type = "cloudsql_cluster" + name = "$input{database_id}" + } + + data_for_graph_node { + type = "cloudsql_database" + name = "$input{database_id}-db" + } + + using = { + "default" : "$input{using}" + } + + inputs = "$input{inputs}" + + gauge "connections" { + unit = "count" + aggregator = "MAX" + + source stackdriver "connections" { + query { + resource {} + aggregation { + per_series_aligner = "" + cross_series_reducer = "" + group_by_fields = [] + } + metric { + type = "cloudsql.googleapis.com/database/network/connections" + } + } + join_on = { + "$output{database_id}" = "$input{database_id}" + } + } + } + + gauge "write_iops" { + unit = "iops" + aggregator = "AVG" + + source stackdriver "write_iops" { + query { + resource {} + aggregation { + per_series_aligner = "" + cross_series_reducer = "" + group_by_fields = [] + } + metric { + type = "cloudsql.googleapis.com/database/disk/write_ops_count" + } + } + join_on = { + "$output{database_id}" = "$input{database_id}" + } + } + } + + gauge "read_iops" { + unit = "iops" + aggregator = "AVG" + + source stackdriver "read_iops" { + query { + resource {} + aggregation { + per_series_aligner = "" + cross_series_reducer = "" + group_by_fields = [] + } + metric { + type = "cloudsql.googleapis.com/database/disk/read_ops_count" + } + } + join_on = { + "$output{database_id}" = "$input{database_id}" + } + } + } +} + +ingester gcp_cloudsql_physical module { + lookback = 600 + frequency = 60 + timeout = 30 + resolution = 60 + lag = 0 + + label { + type = "service" + name = "$input{service}" + } + + physical_component { + type = "cloudsql_cluster" + name = "$input{database_id}" + } + + data_for_graph_node { + type = "cloudsql_cluster" + name = "$input{database_id}" + } + + using = { + "default" : "$input{using}" + } + + inputs = "$input{inputs}" + + gauge "cpu" { + unit = "percent" + aggregator = "AVG" + + source stackdriver "cpu" { + query { + resource {} + aggregation {} + metric { + type = "cloudsql.googleapis.com/database/cpu/utilization" + } + } + join_on = { + "$output{database_id}" = "$input{database_id}" + } + } + } + + gauge "network_in" { + unit = "bps" + aggregator = "AVG" + + source stackdriver "network_in" { + query { + resource {} + aggregation {} + metric { + type = "cloudsql.googleapis.com/database/network/received_bytes_count" + } + } + join_on = { + "$output{database_id}" = "$input{database_id}" + } + } + } + + gauge "network_out" { + unit = "bps" + aggregator = "AVG" + + source stackdriver "network_out" { + query { + resource {} + aggregation {} + metric { + type = "cloudsql.googleapis.com/database/network/sent_bytes_count" + } + } + join_on = { + "$output{database_id}" = "$input{database_id}" + } + } + } + + gauge "replica_lag" { + unit = "s" + aggregator = "AVG" + + source stackdriver "replica_lag" { + query { + resource {} + aggregation {} + metric { + type = "cloudsql.googleapis.com/database/replication/replica_lag" + } + } + join_on = { + "$output{database_id}" = "$input{database_id}" + } + } + } + + # gauge "memory_utilization" { + # unit = "percent" + # aggregator = "AVG" + # + # source stackdriver "memory_utilization" { + # query { + # resource {} + # aggregation { + # per_series_aligner = "" + # cross_series_reducer = "" + # group_by_fields = [] + # } + # metric { + # type = "cloudsql.googleapis.com/database/memory/utilization" + # } + # } + # join_on = { + # "$output{database_id}" = "$input{database_id}" + # } + # } + # } + # + # gauge "disk_utilization" { + # unit = "percent" + # aggregator = "AVG" + # + # source stackdriver "disk_utilization" { + # query { + # resource {} + # aggregation { + # per_series_aligner = "" + # cross_series_reducer = "" + # group_by_fields = [] + # } + # metric { + # type = "cloudsql.googleapis.com/database/disk/utilization" + # } + # } + # join_on = { + # "$output{database_id}" = "$input{database_id}" + # } + # } + # } +}