mirror of
https://github.com/ruvnet/RuVector.git
synced 2026-05-26 16:04:02 +00:00
- Cloud Scheduler jobs: train (5m), drift (15m), transfer (30m), graph (1h), attractor (20m), full sweep (daily), cleanup (daily) - Pub/Sub setup: brain-inject, brain-events, brain-optimize topics with push/pull subscriptions - Cloud Monitoring dashboard: 10 tiles for latency, throughput, drift, memory, graph metrics - Full deploy script: Cloud Build → Cloud Run → Pub/Sub → Scheduler https://claude.ai/code/session_01UWE22wnsZRSHKhT4h4Axby
383 lines
13 KiB
JSON
383 lines
13 KiB
JSON
{
|
|
"displayName": "RuVector Brain Server Dashboard",
|
|
"mosaicLayout": {
|
|
"columns": 12,
|
|
"tiles": [
|
|
{
|
|
"xPos": 0,
|
|
"yPos": 0,
|
|
"width": 6,
|
|
"height": 4,
|
|
"widget": {
|
|
"title": "Request Latency (p50 / p95 / p99)",
|
|
"xyChart": {
|
|
"dataSets": [
|
|
{
|
|
"timeSeriesQuery": {
|
|
"timeSeriesFilter": {
|
|
"filter": "resource.type=\"cloud_run_revision\" AND resource.labels.service_name=\"ruvbrain\" AND metric.type=\"run.googleapis.com/request_latencies\"",
|
|
"aggregation": {
|
|
"alignmentPeriod": "60s",
|
|
"perSeriesAligner": "ALIGN_PERCENTILE_50",
|
|
"crossSeriesReducer": "REDUCE_MEAN"
|
|
}
|
|
}
|
|
},
|
|
"plotType": "LINE",
|
|
"legendTemplate": "p50"
|
|
},
|
|
{
|
|
"timeSeriesQuery": {
|
|
"timeSeriesFilter": {
|
|
"filter": "resource.type=\"cloud_run_revision\" AND resource.labels.service_name=\"ruvbrain\" AND metric.type=\"run.googleapis.com/request_latencies\"",
|
|
"aggregation": {
|
|
"alignmentPeriod": "60s",
|
|
"perSeriesAligner": "ALIGN_PERCENTILE_95",
|
|
"crossSeriesReducer": "REDUCE_MEAN"
|
|
}
|
|
}
|
|
},
|
|
"plotType": "LINE",
|
|
"legendTemplate": "p95"
|
|
},
|
|
{
|
|
"timeSeriesQuery": {
|
|
"timeSeriesFilter": {
|
|
"filter": "resource.type=\"cloud_run_revision\" AND resource.labels.service_name=\"ruvbrain\" AND metric.type=\"run.googleapis.com/request_latencies\"",
|
|
"aggregation": {
|
|
"alignmentPeriod": "60s",
|
|
"perSeriesAligner": "ALIGN_PERCENTILE_99",
|
|
"crossSeriesReducer": "REDUCE_MEAN"
|
|
}
|
|
}
|
|
},
|
|
"plotType": "LINE",
|
|
"legendTemplate": "p99"
|
|
}
|
|
],
|
|
"yAxis": {
|
|
"label": "Latency (ms)",
|
|
"scale": "LINEAR"
|
|
},
|
|
"timeshiftDuration": "0s"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"xPos": 6,
|
|
"yPos": 0,
|
|
"width": 6,
|
|
"height": 4,
|
|
"widget": {
|
|
"title": "Request Count & Error Rate",
|
|
"xyChart": {
|
|
"dataSets": [
|
|
{
|
|
"timeSeriesQuery": {
|
|
"timeSeriesFilter": {
|
|
"filter": "resource.type=\"cloud_run_revision\" AND resource.labels.service_name=\"ruvbrain\" AND metric.type=\"run.googleapis.com/request_count\"",
|
|
"aggregation": {
|
|
"alignmentPeriod": "60s",
|
|
"perSeriesAligner": "ALIGN_RATE",
|
|
"crossSeriesReducer": "REDUCE_SUM"
|
|
}
|
|
}
|
|
},
|
|
"plotType": "LINE",
|
|
"legendTemplate": "Total Requests"
|
|
},
|
|
{
|
|
"timeSeriesQuery": {
|
|
"timeSeriesFilter": {
|
|
"filter": "resource.type=\"cloud_run_revision\" AND resource.labels.service_name=\"ruvbrain\" AND metric.type=\"run.googleapis.com/request_count\" AND metric.labels.response_code_class!=\"2xx\"",
|
|
"aggregation": {
|
|
"alignmentPeriod": "60s",
|
|
"perSeriesAligner": "ALIGN_RATE",
|
|
"crossSeriesReducer": "REDUCE_SUM"
|
|
}
|
|
}
|
|
},
|
|
"plotType": "LINE",
|
|
"legendTemplate": "Errors (non-2xx)"
|
|
}
|
|
],
|
|
"yAxis": {
|
|
"label": "Requests/sec",
|
|
"scale": "LINEAR"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"xPos": 0,
|
|
"yPos": 4,
|
|
"width": 4,
|
|
"height": 4,
|
|
"widget": {
|
|
"title": "Memory Count Over Time",
|
|
"xyChart": {
|
|
"dataSets": [
|
|
{
|
|
"timeSeriesQuery": {
|
|
"timeSeriesFilter": {
|
|
"filter": "resource.type=\"cloud_run_revision\" AND resource.labels.service_name=\"ruvbrain\" AND metric.type=\"custom.googleapis.com/ruvbrain/memory_count\"",
|
|
"aggregation": {
|
|
"alignmentPeriod": "300s",
|
|
"perSeriesAligner": "ALIGN_MAX",
|
|
"crossSeriesReducer": "REDUCE_SUM"
|
|
}
|
|
}
|
|
},
|
|
"plotType": "LINE",
|
|
"legendTemplate": "Total Memories"
|
|
}
|
|
],
|
|
"yAxis": {
|
|
"label": "Count",
|
|
"scale": "LINEAR"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"xPos": 4,
|
|
"yPos": 4,
|
|
"width": 4,
|
|
"height": 4,
|
|
"widget": {
|
|
"title": "Graph Edges Over Time",
|
|
"xyChart": {
|
|
"dataSets": [
|
|
{
|
|
"timeSeriesQuery": {
|
|
"timeSeriesFilter": {
|
|
"filter": "resource.type=\"cloud_run_revision\" AND resource.labels.service_name=\"ruvbrain\" AND metric.type=\"custom.googleapis.com/ruvbrain/graph_edges\"",
|
|
"aggregation": {
|
|
"alignmentPeriod": "300s",
|
|
"perSeriesAligner": "ALIGN_MAX",
|
|
"crossSeriesReducer": "REDUCE_SUM"
|
|
}
|
|
}
|
|
},
|
|
"plotType": "LINE",
|
|
"legendTemplate": "Graph Edges"
|
|
}
|
|
],
|
|
"yAxis": {
|
|
"label": "Edges",
|
|
"scale": "LINEAR"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"xPos": 8,
|
|
"yPos": 4,
|
|
"width": 4,
|
|
"height": 4,
|
|
"widget": {
|
|
"title": "Training Cycle Frequency",
|
|
"xyChart": {
|
|
"dataSets": [
|
|
{
|
|
"timeSeriesQuery": {
|
|
"timeSeriesFilter": {
|
|
"filter": "resource.type=\"cloud_run_revision\" AND resource.labels.service_name=\"ruvbrain\" AND metric.type=\"custom.googleapis.com/ruvbrain/training_cycles\"",
|
|
"aggregation": {
|
|
"alignmentPeriod": "300s",
|
|
"perSeriesAligner": "ALIGN_RATE",
|
|
"crossSeriesReducer": "REDUCE_SUM"
|
|
}
|
|
}
|
|
},
|
|
"plotType": "LINE",
|
|
"legendTemplate": "Training Cycles/min"
|
|
}
|
|
],
|
|
"yAxis": {
|
|
"label": "Cycles/min",
|
|
"scale": "LINEAR"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"xPos": 0,
|
|
"yPos": 8,
|
|
"width": 4,
|
|
"height": 4,
|
|
"widget": {
|
|
"title": "Drift Coefficient",
|
|
"xyChart": {
|
|
"dataSets": [
|
|
{
|
|
"timeSeriesQuery": {
|
|
"timeSeriesFilter": {
|
|
"filter": "resource.type=\"cloud_run_revision\" AND resource.labels.service_name=\"ruvbrain\" AND metric.type=\"custom.googleapis.com/ruvbrain/drift_coefficient\"",
|
|
"aggregation": {
|
|
"alignmentPeriod": "300s",
|
|
"perSeriesAligner": "ALIGN_MEAN",
|
|
"crossSeriesReducer": "REDUCE_MEAN"
|
|
}
|
|
}
|
|
},
|
|
"plotType": "LINE",
|
|
"legendTemplate": "Drift Coefficient"
|
|
}
|
|
],
|
|
"yAxis": {
|
|
"label": "Drift",
|
|
"scale": "LINEAR"
|
|
},
|
|
"thresholds": [
|
|
{
|
|
"label": "Drift Threshold",
|
|
"value": 0.15,
|
|
"color": "RED",
|
|
"direction": "ABOVE"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"xPos": 4,
|
|
"yPos": 8,
|
|
"width": 4,
|
|
"height": 4,
|
|
"widget": {
|
|
"title": "Injection Throughput",
|
|
"xyChart": {
|
|
"dataSets": [
|
|
{
|
|
"timeSeriesQuery": {
|
|
"timeSeriesFilter": {
|
|
"filter": "resource.type=\"cloud_run_revision\" AND resource.labels.service_name=\"ruvbrain\" AND metric.type=\"custom.googleapis.com/ruvbrain/injection_count\"",
|
|
"aggregation": {
|
|
"alignmentPeriod": "60s",
|
|
"perSeriesAligner": "ALIGN_RATE",
|
|
"crossSeriesReducer": "REDUCE_SUM"
|
|
}
|
|
}
|
|
},
|
|
"plotType": "STACKED_BAR",
|
|
"legendTemplate": "Injections/sec"
|
|
}
|
|
],
|
|
"yAxis": {
|
|
"label": "Injections/sec",
|
|
"scale": "LINEAR"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"xPos": 8,
|
|
"yPos": 8,
|
|
"width": 4,
|
|
"height": 4,
|
|
"widget": {
|
|
"title": "Optimization Cycle Duration",
|
|
"xyChart": {
|
|
"dataSets": [
|
|
{
|
|
"timeSeriesQuery": {
|
|
"timeSeriesFilter": {
|
|
"filter": "resource.type=\"cloud_run_revision\" AND resource.labels.service_name=\"ruvbrain\" AND metric.type=\"custom.googleapis.com/ruvbrain/optimize_duration_ms\"",
|
|
"aggregation": {
|
|
"alignmentPeriod": "300s",
|
|
"perSeriesAligner": "ALIGN_PERCENTILE_95",
|
|
"crossSeriesReducer": "REDUCE_MEAN"
|
|
}
|
|
}
|
|
},
|
|
"plotType": "LINE",
|
|
"legendTemplate": "p95 Duration"
|
|
},
|
|
{
|
|
"timeSeriesQuery": {
|
|
"timeSeriesFilter": {
|
|
"filter": "resource.type=\"cloud_run_revision\" AND resource.labels.service_name=\"ruvbrain\" AND metric.type=\"custom.googleapis.com/ruvbrain/optimize_duration_ms\"",
|
|
"aggregation": {
|
|
"alignmentPeriod": "300s",
|
|
"perSeriesAligner": "ALIGN_MEAN",
|
|
"crossSeriesReducer": "REDUCE_MEAN"
|
|
}
|
|
}
|
|
},
|
|
"plotType": "LINE",
|
|
"legendTemplate": "Mean Duration"
|
|
}
|
|
],
|
|
"yAxis": {
|
|
"label": "Duration (ms)",
|
|
"scale": "LINEAR"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"xPos": 0,
|
|
"yPos": 12,
|
|
"width": 6,
|
|
"height": 4,
|
|
"widget": {
|
|
"title": "Container CPU Utilization",
|
|
"xyChart": {
|
|
"dataSets": [
|
|
{
|
|
"timeSeriesQuery": {
|
|
"timeSeriesFilter": {
|
|
"filter": "resource.type=\"cloud_run_revision\" AND resource.labels.service_name=\"ruvbrain\" AND metric.type=\"run.googleapis.com/container/cpu/utilizations\"",
|
|
"aggregation": {
|
|
"alignmentPeriod": "60s",
|
|
"perSeriesAligner": "ALIGN_PERCENTILE_95",
|
|
"crossSeriesReducer": "REDUCE_MEAN"
|
|
}
|
|
}
|
|
},
|
|
"plotType": "LINE",
|
|
"legendTemplate": "CPU p95"
|
|
}
|
|
],
|
|
"yAxis": {
|
|
"label": "Utilization",
|
|
"scale": "LINEAR"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"xPos": 6,
|
|
"yPos": 12,
|
|
"width": 6,
|
|
"height": 4,
|
|
"widget": {
|
|
"title": "Container Memory Utilization",
|
|
"xyChart": {
|
|
"dataSets": [
|
|
{
|
|
"timeSeriesQuery": {
|
|
"timeSeriesFilter": {
|
|
"filter": "resource.type=\"cloud_run_revision\" AND resource.labels.service_name=\"ruvbrain\" AND metric.type=\"run.googleapis.com/container/memory/utilizations\"",
|
|
"aggregation": {
|
|
"alignmentPeriod": "60s",
|
|
"perSeriesAligner": "ALIGN_PERCENTILE_95",
|
|
"crossSeriesReducer": "REDUCE_MEAN"
|
|
}
|
|
}
|
|
},
|
|
"plotType": "LINE",
|
|
"legendTemplate": "Memory p95"
|
|
}
|
|
],
|
|
"yAxis": {
|
|
"label": "Utilization",
|
|
"scale": "LINEAR"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|