669 lines
19 KiB
JSON
669 lines
19 KiB
JSON
{
|
|
"displayName": "Ruvector Burst Scaling Dashboard",
|
|
"dashboardFilters": [],
|
|
"mosaicLayout": {
|
|
"columns": 12,
|
|
"tiles": [
|
|
{
|
|
"width": 6,
|
|
"height": 4,
|
|
"widget": {
|
|
"title": "Total Connections (All Regions)",
|
|
"xyChart": {
|
|
"chartOptions": {
|
|
"mode": "COLOR"
|
|
},
|
|
"dataSets": [
|
|
{
|
|
"timeSeriesQuery": {
|
|
"timeSeriesFilter": {
|
|
"filter": "resource.type=\"cloud_run_revision\" AND metric.type=\"run.googleapis.com/request_count\"",
|
|
"aggregation": {
|
|
"alignmentPeriod": "60s",
|
|
"perSeriesAligner": "ALIGN_RATE",
|
|
"crossSeriesReducer": "REDUCE_SUM",
|
|
"groupByFields": []
|
|
}
|
|
}
|
|
},
|
|
"plotType": "LINE",
|
|
"targetAxis": "Y1"
|
|
}
|
|
],
|
|
"yAxis": {
|
|
"label": "Connections/sec",
|
|
"scale": "LINEAR"
|
|
},
|
|
"thresholds": [
|
|
{
|
|
"value": 500000000,
|
|
"label": "Normal Load (500M)",
|
|
"color": "YELLOW"
|
|
},
|
|
{
|
|
"value": 5000000000,
|
|
"label": "10x Burst",
|
|
"color": "RED"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"xPos": 6,
|
|
"width": 6,
|
|
"height": 4,
|
|
"widget": {
|
|
"title": "Connections by Region",
|
|
"xyChart": {
|
|
"chartOptions": {
|
|
"mode": "COLOR"
|
|
},
|
|
"dataSets": [
|
|
{
|
|
"timeSeriesQuery": {
|
|
"timeSeriesFilter": {
|
|
"filter": "resource.type=\"cloud_run_revision\" AND metric.type=\"run.googleapis.com/request_count\"",
|
|
"aggregation": {
|
|
"alignmentPeriod": "60s",
|
|
"perSeriesAligner": "ALIGN_RATE",
|
|
"crossSeriesReducer": "REDUCE_SUM",
|
|
"groupByFields": ["resource.region"]
|
|
}
|
|
}
|
|
},
|
|
"plotType": "STACKED_AREA",
|
|
"targetAxis": "Y1"
|
|
}
|
|
],
|
|
"yAxis": {
|
|
"label": "Connections/sec",
|
|
"scale": "LINEAR"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"yPos": 4,
|
|
"width": 4,
|
|
"height": 4,
|
|
"widget": {
|
|
"title": "P50 Latency",
|
|
"xyChart": {
|
|
"chartOptions": {
|
|
"mode": "COLOR"
|
|
},
|
|
"dataSets": [
|
|
{
|
|
"timeSeriesQuery": {
|
|
"timeSeriesFilter": {
|
|
"filter": "resource.type=\"cloud_run_revision\" AND metric.type=\"run.googleapis.com/request_latencies\"",
|
|
"aggregation": {
|
|
"alignmentPeriod": "60s",
|
|
"perSeriesAligner": "ALIGN_DELTA",
|
|
"crossSeriesReducer": "REDUCE_PERCENTILE_50",
|
|
"groupByFields": ["resource.region"]
|
|
}
|
|
}
|
|
},
|
|
"plotType": "LINE",
|
|
"targetAxis": "Y1"
|
|
}
|
|
],
|
|
"yAxis": {
|
|
"label": "Latency (ms)",
|
|
"scale": "LINEAR"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"xPos": 4,
|
|
"yPos": 4,
|
|
"width": 4,
|
|
"height": 4,
|
|
"widget": {
|
|
"title": "P95 Latency",
|
|
"xyChart": {
|
|
"chartOptions": {
|
|
"mode": "COLOR"
|
|
},
|
|
"dataSets": [
|
|
{
|
|
"timeSeriesQuery": {
|
|
"timeSeriesFilter": {
|
|
"filter": "resource.type=\"cloud_run_revision\" AND metric.type=\"run.googleapis.com/request_latencies\"",
|
|
"aggregation": {
|
|
"alignmentPeriod": "60s",
|
|
"perSeriesAligner": "ALIGN_DELTA",
|
|
"crossSeriesReducer": "REDUCE_PERCENTILE_95",
|
|
"groupByFields": ["resource.region"]
|
|
}
|
|
}
|
|
},
|
|
"plotType": "LINE",
|
|
"targetAxis": "Y1"
|
|
}
|
|
],
|
|
"yAxis": {
|
|
"label": "Latency (ms)",
|
|
"scale": "LINEAR"
|
|
},
|
|
"thresholds": [
|
|
{
|
|
"value": 50,
|
|
"label": "SLA Threshold (50ms)",
|
|
"color": "RED"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"xPos": 8,
|
|
"yPos": 4,
|
|
"width": 4,
|
|
"height": 4,
|
|
"widget": {
|
|
"title": "P99 Latency",
|
|
"xyChart": {
|
|
"chartOptions": {
|
|
"mode": "COLOR"
|
|
},
|
|
"dataSets": [
|
|
{
|
|
"timeSeriesQuery": {
|
|
"timeSeriesFilter": {
|
|
"filter": "resource.type=\"cloud_run_revision\" AND metric.type=\"run.googleapis.com/request_latencies\"",
|
|
"aggregation": {
|
|
"alignmentPeriod": "60s",
|
|
"perSeriesAligner": "ALIGN_DELTA",
|
|
"crossSeriesReducer": "REDUCE_PERCENTILE_99",
|
|
"groupByFields": ["resource.region"]
|
|
}
|
|
}
|
|
},
|
|
"plotType": "LINE",
|
|
"targetAxis": "Y1"
|
|
}
|
|
],
|
|
"yAxis": {
|
|
"label": "Latency (ms)",
|
|
"scale": "LINEAR"
|
|
},
|
|
"thresholds": [
|
|
{
|
|
"value": 50,
|
|
"label": "SLA Threshold (50ms)",
|
|
"color": "RED"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"yPos": 8,
|
|
"width": 6,
|
|
"height": 4,
|
|
"widget": {
|
|
"title": "Instance Count by Region",
|
|
"xyChart": {
|
|
"chartOptions": {
|
|
"mode": "COLOR"
|
|
},
|
|
"dataSets": [
|
|
{
|
|
"timeSeriesQuery": {
|
|
"timeSeriesFilter": {
|
|
"filter": "resource.type=\"cloud_run_revision\" AND metric.type=\"run.googleapis.com/container/instance_count\"",
|
|
"aggregation": {
|
|
"alignmentPeriod": "60s",
|
|
"perSeriesAligner": "ALIGN_MEAN",
|
|
"crossSeriesReducer": "REDUCE_SUM",
|
|
"groupByFields": ["resource.region"]
|
|
}
|
|
}
|
|
},
|
|
"plotType": "STACKED_AREA",
|
|
"targetAxis": "Y1"
|
|
}
|
|
],
|
|
"yAxis": {
|
|
"label": "Instances",
|
|
"scale": "LINEAR"
|
|
},
|
|
"thresholds": [
|
|
{
|
|
"value": 1000,
|
|
"label": "Max Instances per Region",
|
|
"color": "YELLOW"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"xPos": 6,
|
|
"yPos": 8,
|
|
"width": 6,
|
|
"height": 4,
|
|
"widget": {
|
|
"title": "CPU Utilization by Region",
|
|
"xyChart": {
|
|
"chartOptions": {
|
|
"mode": "COLOR"
|
|
},
|
|
"dataSets": [
|
|
{
|
|
"timeSeriesQuery": {
|
|
"timeSeriesFilter": {
|
|
"filter": "resource.type=\"cloud_run_revision\" AND metric.type=\"run.googleapis.com/container/cpu/utilizations\"",
|
|
"aggregation": {
|
|
"alignmentPeriod": "60s",
|
|
"perSeriesAligner": "ALIGN_MEAN",
|
|
"crossSeriesReducer": "REDUCE_MEAN",
|
|
"groupByFields": ["resource.region"]
|
|
}
|
|
}
|
|
},
|
|
"plotType": "LINE",
|
|
"targetAxis": "Y1"
|
|
}
|
|
],
|
|
"yAxis": {
|
|
"label": "CPU Utilization",
|
|
"scale": "LINEAR"
|
|
},
|
|
"thresholds": [
|
|
{
|
|
"value": 0.7,
|
|
"label": "Scale Out Threshold",
|
|
"color": "YELLOW"
|
|
},
|
|
{
|
|
"value": 0.9,
|
|
"label": "Critical Threshold",
|
|
"color": "RED"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"yPos": 12,
|
|
"width": 6,
|
|
"height": 4,
|
|
"widget": {
|
|
"title": "Memory Utilization by Region",
|
|
"xyChart": {
|
|
"chartOptions": {
|
|
"mode": "COLOR"
|
|
},
|
|
"dataSets": [
|
|
{
|
|
"timeSeriesQuery": {
|
|
"timeSeriesFilter": {
|
|
"filter": "resource.type=\"cloud_run_revision\" AND metric.type=\"run.googleapis.com/container/memory/utilizations\"",
|
|
"aggregation": {
|
|
"alignmentPeriod": "60s",
|
|
"perSeriesAligner": "ALIGN_MEAN",
|
|
"crossSeriesReducer": "REDUCE_MEAN",
|
|
"groupByFields": ["resource.region"]
|
|
}
|
|
}
|
|
},
|
|
"plotType": "LINE",
|
|
"targetAxis": "Y1"
|
|
}
|
|
],
|
|
"yAxis": {
|
|
"label": "Memory Utilization",
|
|
"scale": "LINEAR"
|
|
},
|
|
"thresholds": [
|
|
{
|
|
"value": 0.75,
|
|
"label": "Scale Out Threshold",
|
|
"color": "YELLOW"
|
|
},
|
|
{
|
|
"value": 0.9,
|
|
"label": "Critical Threshold",
|
|
"color": "RED"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"xPos": 6,
|
|
"yPos": 12,
|
|
"width": 6,
|
|
"height": 4,
|
|
"widget": {
|
|
"title": "Error Rate",
|
|
"xyChart": {
|
|
"chartOptions": {
|
|
"mode": "COLOR"
|
|
},
|
|
"dataSets": [
|
|
{
|
|
"timeSeriesQuery": {
|
|
"timeSeriesFilter": {
|
|
"filter": "resource.type=\"cloud_run_revision\" AND metric.type=\"run.googleapis.com/request_count\" AND metric.label.response_code_class=\"5xx\"",
|
|
"aggregation": {
|
|
"alignmentPeriod": "60s",
|
|
"perSeriesAligner": "ALIGN_RATE",
|
|
"crossSeriesReducer": "REDUCE_SUM",
|
|
"groupByFields": ["resource.region"]
|
|
}
|
|
}
|
|
},
|
|
"plotType": "LINE",
|
|
"targetAxis": "Y1"
|
|
}
|
|
],
|
|
"yAxis": {
|
|
"label": "Errors/sec",
|
|
"scale": "LINEAR"
|
|
},
|
|
"thresholds": [
|
|
{
|
|
"value": 100,
|
|
"label": "High Error Rate",
|
|
"color": "RED"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"yPos": 16,
|
|
"width": 6,
|
|
"height": 4,
|
|
"widget": {
|
|
"title": "Hourly Cost Estimate",
|
|
"xyChart": {
|
|
"chartOptions": {
|
|
"mode": "COLOR"
|
|
},
|
|
"dataSets": [
|
|
{
|
|
"timeSeriesQuery": {
|
|
"timeSeriesFilter": {
|
|
"filter": "resource.type=\"cloud_run_revision\" AND metric.type=\"run.googleapis.com/container/instance_count\"",
|
|
"aggregation": {
|
|
"alignmentPeriod": "3600s",
|
|
"perSeriesAligner": "ALIGN_MEAN",
|
|
"crossSeriesReducer": "REDUCE_SUM",
|
|
"groupByFields": []
|
|
}
|
|
}
|
|
},
|
|
"plotType": "LINE",
|
|
"targetAxis": "Y1"
|
|
}
|
|
],
|
|
"yAxis": {
|
|
"label": "Estimated Cost ($/hour)",
|
|
"scale": "LINEAR"
|
|
},
|
|
"thresholds": [
|
|
{
|
|
"value": 8000,
|
|
"label": "Budget Warning (80%)",
|
|
"color": "YELLOW"
|
|
},
|
|
{
|
|
"value": 10000,
|
|
"label": "Budget Limit",
|
|
"color": "RED"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"xPos": 6,
|
|
"yPos": 16,
|
|
"width": 6,
|
|
"height": 4,
|
|
"widget": {
|
|
"title": "Daily Cost Trend",
|
|
"xyChart": {
|
|
"chartOptions": {
|
|
"mode": "COLOR"
|
|
},
|
|
"dataSets": [
|
|
{
|
|
"timeSeriesQuery": {
|
|
"timeSeriesFilter": {
|
|
"filter": "resource.type=\"cloud_run_revision\" AND metric.type=\"run.googleapis.com/container/instance_count\"",
|
|
"aggregation": {
|
|
"alignmentPeriod": "86400s",
|
|
"perSeriesAligner": "ALIGN_MEAN",
|
|
"crossSeriesReducer": "REDUCE_SUM",
|
|
"groupByFields": []
|
|
}
|
|
}
|
|
},
|
|
"plotType": "LINE",
|
|
"targetAxis": "Y1"
|
|
}
|
|
],
|
|
"yAxis": {
|
|
"label": "Estimated Cost ($/day)",
|
|
"scale": "LINEAR"
|
|
},
|
|
"thresholds": [
|
|
{
|
|
"value": 160000,
|
|
"label": "Budget Warning (80%)",
|
|
"color": "YELLOW"
|
|
},
|
|
{
|
|
"value": 200000,
|
|
"label": "Budget Limit",
|
|
"color": "RED"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"yPos": 20,
|
|
"width": 12,
|
|
"height": 4,
|
|
"widget": {
|
|
"title": "Burst Event Timeline",
|
|
"xyChart": {
|
|
"chartOptions": {
|
|
"mode": "COLOR"
|
|
},
|
|
"dataSets": [
|
|
{
|
|
"timeSeriesQuery": {
|
|
"timeSeriesFilter": {
|
|
"filter": "resource.type=\"cloud_run_revision\" AND metric.type=\"run.googleapis.com/request_count\"",
|
|
"aggregation": {
|
|
"alignmentPeriod": "300s",
|
|
"perSeriesAligner": "ALIGN_RATE",
|
|
"crossSeriesReducer": "REDUCE_SUM",
|
|
"groupByFields": []
|
|
}
|
|
}
|
|
},
|
|
"plotType": "LINE",
|
|
"targetAxis": "Y1"
|
|
},
|
|
{
|
|
"timeSeriesQuery": {
|
|
"timeSeriesFilter": {
|
|
"filter": "resource.type=\"cloud_run_revision\" AND metric.type=\"run.googleapis.com/container/instance_count\"",
|
|
"aggregation": {
|
|
"alignmentPeriod": "300s",
|
|
"perSeriesAligner": "ALIGN_MEAN",
|
|
"crossSeriesReducer": "REDUCE_SUM",
|
|
"groupByFields": []
|
|
}
|
|
}
|
|
},
|
|
"plotType": "LINE",
|
|
"targetAxis": "Y2"
|
|
}
|
|
],
|
|
"yAxis": {
|
|
"label": "Load (connections/sec)",
|
|
"scale": "LINEAR"
|
|
},
|
|
"y2Axis": {
|
|
"label": "Instances",
|
|
"scale": "LINEAR"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"yPos": 24,
|
|
"width": 3,
|
|
"height": 3,
|
|
"widget": {
|
|
"title": "Total Instances",
|
|
"scorecard": {
|
|
"timeSeriesQuery": {
|
|
"timeSeriesFilter": {
|
|
"filter": "resource.type=\"cloud_run_revision\" AND metric.type=\"run.googleapis.com/container/instance_count\"",
|
|
"aggregation": {
|
|
"alignmentPeriod": "60s",
|
|
"perSeriesAligner": "ALIGN_MEAN",
|
|
"crossSeriesReducer": "REDUCE_SUM",
|
|
"groupByFields": []
|
|
}
|
|
}
|
|
},
|
|
"sparkChartView": {
|
|
"sparkChartType": "SPARK_LINE"
|
|
},
|
|
"thresholds": [
|
|
{
|
|
"value": 500,
|
|
"color": "YELLOW"
|
|
},
|
|
{
|
|
"value": 2000,
|
|
"color": "RED"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"xPos": 3,
|
|
"yPos": 24,
|
|
"width": 3,
|
|
"height": 3,
|
|
"widget": {
|
|
"title": "Active Connections",
|
|
"scorecard": {
|
|
"timeSeriesQuery": {
|
|
"timeSeriesFilter": {
|
|
"filter": "resource.type=\"cloud_run_revision\" AND metric.type=\"run.googleapis.com/request_count\"",
|
|
"aggregation": {
|
|
"alignmentPeriod": "60s",
|
|
"perSeriesAligner": "ALIGN_RATE",
|
|
"crossSeriesReducer": "REDUCE_SUM",
|
|
"groupByFields": []
|
|
}
|
|
}
|
|
},
|
|
"sparkChartView": {
|
|
"sparkChartType": "SPARK_LINE"
|
|
},
|
|
"thresholds": [
|
|
{
|
|
"value": 500000000,
|
|
"color": "YELLOW",
|
|
"label": "Normal Load"
|
|
},
|
|
{
|
|
"value": 5000000000,
|
|
"color": "RED",
|
|
"label": "10x Burst"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"xPos": 6,
|
|
"yPos": 24,
|
|
"width": 3,
|
|
"height": 3,
|
|
"widget": {
|
|
"title": "P99 Latency",
|
|
"scorecard": {
|
|
"timeSeriesQuery": {
|
|
"timeSeriesFilter": {
|
|
"filter": "resource.type=\"cloud_run_revision\" AND metric.type=\"run.googleapis.com/request_latencies\"",
|
|
"aggregation": {
|
|
"alignmentPeriod": "60s",
|
|
"perSeriesAligner": "ALIGN_DELTA",
|
|
"crossSeriesReducer": "REDUCE_PERCENTILE_99",
|
|
"groupByFields": []
|
|
}
|
|
}
|
|
},
|
|
"sparkChartView": {
|
|
"sparkChartType": "SPARK_LINE"
|
|
},
|
|
"thresholds": [
|
|
{
|
|
"value": 50,
|
|
"color": "RED",
|
|
"label": "SLA Breach"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"xPos": 9,
|
|
"yPos": 24,
|
|
"width": 3,
|
|
"height": 3,
|
|
"widget": {
|
|
"title": "Hourly Cost",
|
|
"scorecard": {
|
|
"timeSeriesQuery": {
|
|
"timeSeriesFilter": {
|
|
"filter": "resource.type=\"cloud_run_revision\" AND metric.type=\"run.googleapis.com/container/instance_count\"",
|
|
"aggregation": {
|
|
"alignmentPeriod": "3600s",
|
|
"perSeriesAligner": "ALIGN_MEAN",
|
|
"crossSeriesReducer": "REDUCE_SUM",
|
|
"groupByFields": []
|
|
}
|
|
}
|
|
},
|
|
"sparkChartView": {
|
|
"sparkChartType": "SPARK_LINE"
|
|
},
|
|
"thresholds": [
|
|
{
|
|
"value": 8000,
|
|
"color": "YELLOW",
|
|
"label": "80% Budget"
|
|
},
|
|
{
|
|
"value": 10000,
|
|
"color": "RED",
|
|
"label": "Budget Limit"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|