{ "dashboard": { "title": "ML Trading Monitoring", "uid": "ml-trading", "description": "Real-time monitoring of ML trading models, ensemble decisions, and order execution", "timezone": "browser", "editable": true, "graphTooltip": 1, "time": { "from": "now-1h", "to": "now" }, "refresh": "10s", "schemaVersion": 39, "tags": ["ml", "trading", "production"], "templating": { "list": [ { "name": "model_filter", "label": "Model", "type": "custom", "multi": true, "includeAll": true, "allValue": ".*", "query": "DQN,MAMBA2,PPO,TFT,TLOB,Liquid", "options": [ { "text": "All", "value": "$__all" }, { "text": "DQN", "value": "DQN" }, { "text": "MAMBA2", "value": "MAMBA2" }, { "text": "PPO", "value": "PPO" }, { "text": "TFT", "value": "TFT" }, { "text": "TLOB", "value": "TLOB" }, { "text": "Liquid", "value": "Liquid" } ], "current": { "text": "All", "value": "$__all" } }, { "name": "symbol_filter", "label": "Symbol", "type": "custom", "multi": true, "includeAll": true, "allValue": ".*", "query": "ES.FUT,NQ.FUT,ZN.FUT,6E.FUT,CL.FUT", "options": [ { "text": "All", "value": "$__all" }, { "text": "ES.FUT", "value": "ES.FUT" }, { "text": "NQ.FUT", "value": "NQ.FUT" }, { "text": "ZN.FUT", "value": "ZN.FUT" }, { "text": "6E.FUT", "value": "6E.FUT" }, { "text": "CL.FUT", "value": "CL.FUT" } ], "current": { "text": "All", "value": "$__all" } }, { "name": "datasource", "label": "Data Source", "type": "datasource", "query": "prometheus", "current": { "text": "Prometheus", "value": "prometheus" } } ] }, "annotations": { "list": [ { "name": "ML Alerts", "datasource": "prometheus", "enable": true, "iconColor": "red", "expr": "ALERTS{component=\"ml\",alertstate=\"firing\"}", "titleFormat": "{{ alertname }}", "textFormat": "{{ annotations.description }}", "tagKeys": "severity,model" }, { "name": "Model Deployments", "datasource": "prometheus", "enable": true, "iconColor": "green", "expr": "ml_model_deployment_timestamp", "titleFormat": "Model Deployed", "textFormat": "{{ model }} version {{ version }}" } ] }, "panels": [ { "id": 1, "type": "row", "title": "Model Performance Overview", "gridPos": { "x": 0, "y": 0, "w": 24, "h": 1 }, "collapsed": false }, { "id": 2, "type": "gauge", "title": "ML Model Win Rate", "datasource": "${datasource}", "gridPos": { "x": 0, "y": 1, "w": 6, "h": 6 }, "targets": [ { "expr": "100 * ml_model_win_rate{model=~\"$model_filter\",symbol=~\"$symbol_filter\"}", "legendFormat": "{{ model }} - {{ symbol }}", "refId": "A" } ], "fieldConfig": { "defaults": { "unit": "percent", "min": 0, "max": 100, "thresholds": { "mode": "absolute", "steps": [ { "value": 0, "color": "red" }, { "value": 55, "color": "yellow" }, { "value": 65, "color": "green" } ] } } }, "options": { "orientation": "auto", "showThresholdLabels": true, "showThresholdMarkers": true, "text": { "titleSize": 14, "valueSize": 28 } }, "description": "Win rate threshold: <55% (red), 55-65% (yellow), >65% (green)" }, { "id": 3, "type": "barchart", "title": "Sharpe Ratios by Model", "datasource": "${datasource}", "gridPos": { "x": 6, "y": 1, "w": 9, "h": 6 }, "targets": [ { "expr": "ml_model_sharpe_ratio{model=~\"$model_filter\",symbol=~\"$symbol_filter\"}", "legendFormat": "{{ model }} - {{ symbol }}", "refId": "A" } ], "fieldConfig": { "defaults": { "unit": "short", "decimals": 2, "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [ { "value": -999, "color": "red" }, { "value": 0, "color": "orange" }, { "value": 1.0, "color": "yellow" }, { "value": 1.5, "color": "green" }, { "value": 2.0, "color": "blue" } ] } }, "overrides": [ { "matcher": { "id": "byName", "options": "Target" }, "properties": [ { "id": "custom.lineStyle", "value": { "fill": "dash" } }, { "id": "color", "value": { "fixedColor": "white", "mode": "fixed" } } ] } ] }, "options": { "orientation": "horizontal", "showValue": "always", "groupWidth": 0.7, "barWidth": 0.8 }, "description": "Sharpe ratio measures risk-adjusted returns. Target: >1.0 (industry standard), >1.5 (excellent)" }, { "id": 4, "type": "histogram", "title": "Prediction Confidence Distribution", "datasource": "${datasource}", "gridPos": { "x": 15, "y": 1, "w": 9, "h": 6 }, "targets": [ { "expr": "ml_predictions_confidence{model=~\"$model_filter\",symbol=~\"$symbol_filter\"}", "legendFormat": "{{ model }}", "refId": "A", "format": "time_series" } ], "fieldConfig": { "defaults": { "unit": "short", "custom": { "fillOpacity": 70 } } }, "options": { "bucketOffset": 0, "bucketSize": 0.05 }, "description": "Distribution of model prediction confidence scores (0-1). Higher confidence = more certain predictions." }, { "id": 5, "type": "row", "title": "Order Activity", "gridPos": { "x": 0, "y": 7, "w": 24, "h": 1 }, "collapsed": false }, { "id": 6, "type": "timeseries", "title": "ML Orders by Model (5m rate)", "datasource": "${datasource}", "gridPos": { "x": 0, "y": 8, "w": 12, "h": 8 }, "targets": [ { "expr": "rate(ml_orders_submitted_total{model=~\"$model_filter\",symbol=~\"$symbol_filter\"}[5m]) * 60", "legendFormat": "{{ model }} - {{ symbol }}", "refId": "A" } ], "fieldConfig": { "defaults": { "unit": "ops", "custom": { "drawStyle": "line", "lineInterpolation": "smooth", "lineWidth": 2, "fillOpacity": 20, "gradientMode": "opacity", "spanNulls": false, "showPoints": "never", "pointSize": 5, "stacking": { "mode": "normal", "group": "A" }, "axisPlacement": "auto", "axisLabel": "Orders/min", "scaleDistribution": { "type": "linear" } } } }, "options": { "tooltip": { "mode": "multi", "sort": "desc" }, "legend": { "displayMode": "table", "placement": "bottom", "showLegend": true, "calcs": ["last", "mean", "max"] } }, "description": "Order submission rate by model (stacked). Shows trading activity intensity." }, { "id": 7, "type": "stat", "title": "Fill Rate by Model", "datasource": "${datasource}", "gridPos": { "x": 12, "y": 8, "w": 6, "h": 8 }, "targets": [ { "expr": "100 * sum by(model) (ml_orders_filled_total{model=~\"$model_filter\"}) / sum by(model) (ml_orders_submitted_total{model=~\"$model_filter\"})", "legendFormat": "{{ model }}", "refId": "A" } ], "fieldConfig": { "defaults": { "unit": "percent", "decimals": 1, "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [ { "value": 0, "color": "red" }, { "value": 70, "color": "orange" }, { "value": 85, "color": "yellow" }, { "value": 95, "color": "green" } ] } } }, "options": { "graphMode": "area", "colorMode": "background", "justifyMode": "center", "textMode": "value_and_name", "reduceOptions": { "values": false, "calcs": ["lastNotNull"] }, "orientation": "vertical" }, "description": "Percentage of submitted orders successfully filled. Low fill rate may indicate liquidity issues or aggressive pricing." }, { "id": 8, "type": "piechart", "title": "Order Rejection Reasons", "datasource": "${datasource}", "gridPos": { "x": 18, "y": 8, "w": 6, "h": 8 }, "targets": [ { "expr": "sum by(reason) (ml_orders_rejected_total{model=~\"$model_filter\"})", "legendFormat": "{{ reason }}", "refId": "A" } ], "fieldConfig": { "defaults": { "unit": "short" } }, "options": { "legend": { "displayMode": "table", "placement": "right", "showLegend": true, "values": ["value", "percent"] }, "pieType": "pie", "tooltip": { "mode": "single" }, "displayLabels": ["name", "percent"] }, "description": "Breakdown of why orders were rejected (e.g., risk limits, invalid price, insufficient margin)" }, { "id": 9, "type": "row", "title": "Ensemble Monitoring", "gridPos": { "x": 0, "y": 16, "w": 24, "h": 1 }, "collapsed": false }, { "id": 10, "type": "gauge", "title": "Ensemble Agreement Rate", "datasource": "${datasource}", "gridPos": { "x": 0, "y": 17, "w": 8, "h": 6 }, "targets": [ { "expr": "100 * ml_ensemble_agreement_rate{symbol=~\"$symbol_filter\"}", "legendFormat": "{{ symbol }}", "refId": "A" } ], "fieldConfig": { "defaults": { "unit": "percent", "min": 0, "max": 100, "thresholds": { "mode": "absolute", "steps": [ { "value": 0, "color": "red" }, { "value": 70, "color": "yellow" }, { "value": 85, "color": "green" } ] } } }, "options": { "orientation": "auto", "showThresholdLabels": true, "showThresholdMarkers": true, "text": { "titleSize": 14, "valueSize": 28 } }, "description": "Percentage of predictions where all models agree. <70% triggers alert (high disagreement = uncertain market conditions)" }, { "id": 11, "type": "timeseries", "title": "Model Disagreement Events", "datasource": "${datasource}", "gridPos": { "x": 8, "y": 17, "w": 8, "h": 6 }, "targets": [ { "expr": "rate(ml_ensemble_disagreement_events{symbol=~\"$symbol_filter\"}[1m]) * 60", "legendFormat": "{{ symbol }}", "refId": "A" } ], "fieldConfig": { "defaults": { "unit": "events/min", "custom": { "drawStyle": "line", "lineInterpolation": "smooth", "lineWidth": 2, "fillOpacity": 30, "gradientMode": "hue", "showPoints": "auto" } } }, "options": { "tooltip": { "mode": "multi" }, "legend": { "displayMode": "list", "placement": "bottom", "showLegend": true } }, "description": "Rate of significant model disagreements. Spikes indicate market regime changes or model divergence." }, { "id": 12, "type": "stat", "title": "Active Models (5m window)", "datasource": "${datasource}", "gridPos": { "x": 16, "y": 17, "w": 8, "h": 6 }, "targets": [ { "expr": "count(count_over_time(ml_predictions_total{model=~\"$model_filter\"}[5m]) > 0)", "legendFormat": "Active Models", "refId": "A" } ], "fieldConfig": { "defaults": { "unit": "short", "decimals": 0, "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [ { "value": 0, "color": "red" }, { "value": 1, "color": "orange" }, { "value": 3, "color": "yellow" }, { "value": 4, "color": "green" } ] } } }, "options": { "graphMode": "area", "colorMode": "background", "justifyMode": "center", "textMode": "value", "reduceOptions": { "values": false, "calcs": ["lastNotNull"] } }, "description": "Number of models generating predictions in the last 5 minutes. Expected: 4-6 models (DQN, MAMBA2, PPO, TFT, TLOB, Liquid)" }, { "id": 13, "type": "row", "title": "Performance Metrics", "gridPos": { "x": 0, "y": 23, "w": 24, "h": 1 }, "collapsed": false }, { "id": 14, "type": "table", "title": "Model Performance Summary", "datasource": "${datasource}", "gridPos": { "x": 0, "y": 24, "w": 12, "h": 8 }, "targets": [ { "expr": "100 * ml_model_accuracy{model=~\"$model_filter\"}", "legendFormat": "__auto", "refId": "Accuracy", "format": "table", "instant": true }, { "expr": "ml_model_sharpe_ratio{model=~\"$model_filter\"}", "legendFormat": "__auto", "refId": "Sharpe", "format": "table", "instant": true }, { "expr": "ml_model_avg_return_pct{model=~\"$model_filter\"}", "legendFormat": "__auto", "refId": "AvgReturn", "format": "table", "instant": true }, { "expr": "ml_model_max_drawdown_pct{model=~\"$model_filter\"}", "legendFormat": "__auto", "refId": "MaxDrawdown", "format": "table", "instant": true }, { "expr": "ml_model_total_trades{model=~\"$model_filter\"}", "legendFormat": "__auto", "refId": "TotalTrades", "format": "table", "instant": true } ], "transformations": [ { "id": "merge", "options": {} }, { "id": "organize", "options": { "excludeByName": { "Time": true, "__name__": true, "job": true, "instance": true }, "indexByName": { "model": 0, "symbol": 1, "Value #Accuracy": 2, "Value #Sharpe": 3, "Value #AvgReturn": 4, "Value #MaxDrawdown": 5, "Value #TotalTrades": 6 }, "renameByName": { "model": "Model", "symbol": "Symbol", "Value #Accuracy": "Accuracy (%)", "Value #Sharpe": "Sharpe Ratio", "Value #AvgReturn": "Avg Return (%)", "Value #MaxDrawdown": "Max Drawdown (%)", "Value #TotalTrades": "Total Trades" } } } ], "fieldConfig": { "defaults": { "custom": { "align": "center", "displayMode": "auto" } }, "overrides": [ { "matcher": { "id": "byName", "options": "Accuracy (%)" }, "properties": [ { "id": "custom.displayMode", "value": "gradient-gauge" }, { "id": "unit", "value": "percent" }, { "id": "decimals", "value": 1 }, { "id": "thresholds", "value": { "mode": "absolute", "steps": [ { "value": 0, "color": "red" }, { "value": 55, "color": "yellow" }, { "value": 65, "color": "green" } ] } } ] }, { "matcher": { "id": "byName", "options": "Sharpe Ratio" }, "properties": [ { "id": "custom.displayMode", "value": "gradient-gauge" }, { "id": "decimals", "value": 2 }, { "id": "thresholds", "value": { "mode": "absolute", "steps": [ { "value": -999, "color": "red" }, { "value": 0, "color": "orange" }, { "value": 1.0, "color": "yellow" }, { "value": 1.5, "color": "green" } ] } } ] }, { "matcher": { "id": "byName", "options": "Max Drawdown (%)" }, "properties": [ { "id": "custom.displayMode", "value": "gradient-gauge" }, { "id": "unit", "value": "percent" }, { "id": "decimals", "value": 2 }, { "id": "thresholds", "value": { "mode": "absolute", "steps": [ { "value": 0, "color": "green" }, { "value": 10, "color": "yellow" }, { "value": 20, "color": "red" } ] } } ] } ] }, "options": { "showHeader": true, "sortBy": [ { "displayName": "Sharpe Ratio", "desc": true } ] }, "description": "Comprehensive model performance metrics. Sorted by Sharpe ratio (risk-adjusted returns)." }, { "id": 15, "type": "timeseries", "title": "Inference Latency P99 (ms)", "datasource": "${datasource}", "gridPos": { "x": 12, "y": 24, "w": 12, "h": 8 }, "targets": [ { "expr": "histogram_quantile(0.99, rate(ml_model_inference_latency_bucket{model=~\"$model_filter\"}[1m]))", "legendFormat": "{{ model }}", "refId": "A" } ], "fieldConfig": { "defaults": { "unit": "ms", "custom": { "drawStyle": "line", "lineInterpolation": "smooth", "lineWidth": 2, "fillOpacity": 10, "showPoints": "auto" }, "thresholds": { "mode": "absolute", "steps": [ { "value": 0, "color": "green" }, { "value": 50, "color": "yellow" }, { "value": 100, "color": "red" } ] } }, "overrides": [ { "matcher": { "id": "byName", "options": "Target (100ms)" }, "properties": [ { "id": "custom.lineStyle", "value": { "fill": "dash", "dash": [10, 10] } }, { "id": "color", "value": { "fixedColor": "red", "mode": "fixed" } }, { "id": "custom.lineWidth", "value": 1 } ] } ] }, "options": { "tooltip": { "mode": "multi" }, "legend": { "displayMode": "table", "placement": "bottom", "showLegend": true, "calcs": ["last", "mean", "max"] } }, "description": "99th percentile inference latency by model. Target: <100ms. High latency degrades signal quality." }, { "id": 16, "type": "row", "title": "Trading Volume & Risk", "gridPos": { "x": 0, "y": 32, "w": 24, "h": 1 }, "collapsed": false }, { "id": 17, "type": "stat", "title": "Total Predictions (24h)", "datasource": "${datasource}", "gridPos": { "x": 0, "y": 33, "w": 6, "h": 4 }, "targets": [ { "expr": "sum(increase(ml_predictions_total{model=~\"$model_filter\"}[24h]))", "legendFormat": "24h Predictions", "refId": "A" } ], "fieldConfig": { "defaults": { "unit": "short", "decimals": 0, "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [ { "value": 0, "color": "red" }, { "value": 1000, "color": "yellow" }, { "value": 10000, "color": "green" } ] } } }, "options": { "graphMode": "area", "colorMode": "background", "justifyMode": "center", "textMode": "value", "reduceOptions": { "values": false, "calcs": ["lastNotNull"] } }, "description": "Total model predictions generated in the last 24 hours across all models" }, { "id": 18, "type": "timeseries", "title": "Prediction Volume by Model", "datasource": "${datasource}", "gridPos": { "x": 6, "y": 33, "w": 9, "h": 8 }, "targets": [ { "expr": "rate(ml_predictions_total{model=~\"$model_filter\",symbol=~\"$symbol_filter\"}[5m]) * 60", "legendFormat": "{{ model }} - {{ symbol }}", "refId": "A" } ], "fieldConfig": { "defaults": { "unit": "predictions/min", "custom": { "drawStyle": "line", "lineInterpolation": "smooth", "lineWidth": 2, "fillOpacity": 20, "gradientMode": "opacity", "showPoints": "never", "stacking": { "mode": "normal", "group": "A" } } } }, "options": { "tooltip": { "mode": "multi", "sort": "desc" }, "legend": { "displayMode": "table", "placement": "bottom", "showLegend": true, "calcs": ["last", "mean", "max"] } }, "description": "Real-time prediction generation rate (stacked by model)" }, { "id": 19, "type": "stat", "title": "ML Order Flow (5m)", "datasource": "${datasource}", "gridPos": { "x": 15, "y": 33, "w": 9, "h": 4 }, "targets": [ { "expr": "sum(rate(ml_orders_submitted_total{model=~\"$model_filter\"}[5m])) * 300", "legendFormat": "Submitted", "refId": "A" }, { "expr": "sum(rate(ml_orders_filled_total{model=~\"$model_filter\"}[5m])) * 300", "legendFormat": "Filled", "refId": "B" }, { "expr": "sum(rate(ml_orders_rejected_total{model=~\"$model_filter\"}[5m])) * 300", "legendFormat": "Rejected", "refId": "C" } ], "fieldConfig": { "defaults": { "unit": "short", "decimals": 0 }, "overrides": [ { "matcher": { "id": "byName", "options": "Submitted" }, "properties": [ { "id": "color", "value": { "fixedColor": "blue", "mode": "fixed" } } ] }, { "matcher": { "id": "byName", "options": "Filled" }, "properties": [ { "id": "color", "value": { "fixedColor": "green", "mode": "fixed" } } ] }, { "matcher": { "id": "byName", "options": "Rejected" }, "properties": [ { "id": "color", "value": { "fixedColor": "red", "mode": "fixed" } } ] } ] }, "options": { "graphMode": "area", "colorMode": "background", "justifyMode": "center", "textMode": "value_and_name", "reduceOptions": { "values": false, "calcs": ["lastNotNull"] }, "orientation": "horizontal" }, "description": "Order flow summary: submitted, filled, and rejected orders in the last 5 minutes" }, { "id": 20, "type": "timeseries", "title": "Model Error Rate", "datasource": "${datasource}", "gridPos": { "x": 15, "y": 37, "w": 9, "h": 4 }, "targets": [ { "expr": "100 * rate(ml_prediction_errors_total{model=~\"$model_filter\"}[5m]) / rate(ml_predictions_total{model=~\"$model_filter\"}[5m])", "legendFormat": "{{ model }}", "refId": "A" } ], "fieldConfig": { "defaults": { "unit": "percent", "decimals": 2, "custom": { "drawStyle": "line", "lineInterpolation": "smooth", "lineWidth": 2, "fillOpacity": 20, "showPoints": "auto" }, "thresholds": { "mode": "absolute", "steps": [ { "value": 0, "color": "green" }, { "value": 2, "color": "yellow" }, { "value": 5, "color": "red" } ] } } }, "options": { "tooltip": { "mode": "multi" }, "legend": { "displayMode": "list", "placement": "bottom", "showLegend": true } }, "description": "Percentage of predictions that resulted in errors. Target: <2%, Alert: >5%" }, { "id": 21, "type": "stat", "title": "Risk Rejections (1h)", "datasource": "${datasource}", "gridPos": { "x": 0, "y": 37, "w": 6, "h": 4 }, "targets": [ { "expr": "sum(increase(ml_orders_rejected_total{reason=\"risk_limit\",model=~\"$model_filter\"}[1h]))", "legendFormat": "Risk Rejections", "refId": "A" } ], "fieldConfig": { "defaults": { "unit": "short", "decimals": 0, "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [ { "value": 0, "color": "green" }, { "value": 10, "color": "yellow" }, { "value": 50, "color": "red" } ] } } }, "options": { "graphMode": "area", "colorMode": "background", "justifyMode": "center", "textMode": "value", "reduceOptions": { "values": false, "calcs": ["lastNotNull"] } }, "description": "Number of orders rejected due to risk limits in the last hour. High count indicates aggressive trading or insufficient risk limits." }, { "id": 22, "type": "row", "title": "System Health & Alerts", "gridPos": { "x": 0, "y": 41, "w": 24, "h": 1 }, "collapsed": false }, { "id": 23, "type": "alertlist", "title": "Active ML Alerts", "datasource": "${datasource}", "gridPos": { "x": 0, "y": 42, "w": 12, "h": 8 }, "options": { "showOptions": "current", "maxItems": 20, "sortOrder": 1, "dashboardAlerts": false, "alertName": "", "dashboardTitle": "", "tags": [], "stateFilter": { "firing": true, "pending": true, "noData": false, "normal": false }, "alertInstanceLabelFilter": "{component=\"ml\"}" }, "description": "Currently firing ML-related alerts from Prometheus. Linked to alerts defined in ml_training_alerts.yml" }, { "id": 24, "type": "table", "title": "Recent Model Deployments", "datasource": "${datasource}", "gridPos": { "x": 12, "y": 42, "w": 12, "h": 8 }, "targets": [ { "expr": "ml_model_deployment_timestamp{model=~\"$model_filter\"}", "legendFormat": "__auto", "refId": "A", "format": "table", "instant": true }, { "expr": "ml_model_deployment_version{model=~\"$model_filter\"}", "legendFormat": "__auto", "refId": "B", "format": "table", "instant": true } ], "transformations": [ { "id": "merge", "options": {} }, { "id": "organize", "options": { "excludeByName": { "__name__": true, "job": true, "instance": true }, "indexByName": { "model": 0, "Time": 1, "Value #B": 2 }, "renameByName": { "model": "Model", "Time": "Deployed At", "Value #B": "Version" } } } ], "fieldConfig": { "defaults": { "custom": { "align": "left" } }, "overrides": [ { "matcher": { "id": "byName", "options": "Deployed At" }, "properties": [ { "id": "unit", "value": "dateTimeFromNow" } ] } ] }, "options": { "showHeader": true, "sortBy": [ { "displayName": "Deployed At", "desc": true } ] }, "description": "Recent model deployments with timestamps and version information" }, { "id": 25, "type": "row", "title": "GPU & Infrastructure", "gridPos": { "x": 0, "y": 50, "w": 24, "h": 1 }, "collapsed": false }, { "id": 26, "type": "timeseries", "title": "GPU Utilization", "datasource": "${datasource}", "gridPos": { "x": 0, "y": 51, "w": 12, "h": 6 }, "targets": [ { "expr": "ml_gpu_utilization_percent{gpu_id=~\".*\"}", "legendFormat": "GPU {{ gpu_id }}", "refId": "A" } ], "fieldConfig": { "defaults": { "unit": "percent", "min": 0, "max": 100, "custom": { "drawStyle": "line", "lineInterpolation": "smooth", "lineWidth": 2, "fillOpacity": 30, "showPoints": "auto" }, "thresholds": { "mode": "absolute", "steps": [ { "value": 0, "color": "blue" }, { "value": 30, "color": "green" }, { "value": 80, "color": "yellow" }, { "value": 95, "color": "red" } ] } } }, "options": { "tooltip": { "mode": "multi" }, "legend": { "displayMode": "list", "placement": "bottom", "showLegend": true } }, "description": "GPU compute utilization. Target: 50-80% (efficient), <30% (underutilized), >95% (bottleneck)" }, { "id": 27, "type": "timeseries", "title": "GPU Memory Usage", "datasource": "${datasource}", "gridPos": { "x": 12, "y": 51, "w": 12, "h": 6 }, "targets": [ { "expr": "100 * ml_gpu_memory_used_bytes{gpu_id=~\".*\"} / ml_gpu_memory_total_bytes{gpu_id=~\".*\"}", "legendFormat": "GPU {{ gpu_id }}", "refId": "A" } ], "fieldConfig": { "defaults": { "unit": "percent", "min": 0, "max": 100, "custom": { "drawStyle": "line", "lineInterpolation": "smooth", "lineWidth": 2, "fillOpacity": 30, "showPoints": "auto" }, "thresholds": { "mode": "absolute", "steps": [ { "value": 0, "color": "green" }, { "value": 70, "color": "yellow" }, { "value": 90, "color": "red" } ] } } }, "options": { "tooltip": { "mode": "multi" }, "legend": { "displayMode": "list", "placement": "bottom", "showLegend": true } }, "description": "GPU memory utilization. Target: <70%, Warning: >90%, Critical: >95% (OOM risk)" }, { "id": 28, "type": "stat", "title": "ML Service Status", "datasource": "${datasource}", "gridPos": { "x": 0, "y": 57, "w": 6, "h": 4 }, "targets": [ { "expr": "up{job=\"ml_training_service\"}", "legendFormat": "ML Training Service", "refId": "A" } ], "fieldConfig": { "defaults": { "mappings": [ { "type": "value", "options": { "0": { "text": "DOWN", "color": "red" }, "1": { "text": "UP", "color": "green" } } } ], "thresholds": { "mode": "absolute", "steps": [ { "value": 0, "color": "red" }, { "value": 1, "color": "green" } ] } } }, "options": { "graphMode": "none", "colorMode": "background", "justifyMode": "center", "textMode": "value", "reduceOptions": { "values": false, "calcs": ["lastNotNull"] } }, "description": "ML Training Service health status from Prometheus scrape" }, { "id": 29, "type": "timeseries", "title": "Feature Extraction Latency P95", "datasource": "${datasource}", "gridPos": { "x": 6, "y": 57, "w": 9, "h": 4 }, "targets": [ { "expr": "histogram_quantile(0.95, rate(ml_feature_extraction_seconds_bucket[5m]))", "legendFormat": "p95", "refId": "A" } ], "fieldConfig": { "defaults": { "unit": "s", "custom": { "drawStyle": "line", "lineInterpolation": "smooth", "lineWidth": 2, "fillOpacity": 20 }, "thresholds": { "mode": "absolute", "steps": [ { "value": 0, "color": "green" }, { "value": 3, "color": "yellow" }, { "value": 5, "color": "red" } ] } } }, "description": "Feature extraction latency (p95). Target: <3s, Alert: >5s" }, { "id": 30, "type": "stat", "title": "Model Cache Hit Rate", "datasource": "${datasource}", "gridPos": { "x": 15, "y": 57, "w": 9, "h": 4 }, "targets": [ { "expr": "100 * rate(ml_model_cache_hits[5m]) / (rate(ml_model_cache_hits[5m]) + rate(ml_model_cache_misses[5m]))", "legendFormat": "Cache Hit Rate", "refId": "A" } ], "fieldConfig": { "defaults": { "unit": "percent", "decimals": 1, "color": { "mode": "thresholds" }, "thresholds": { "mode": "absolute", "steps": [ { "value": 0, "color": "red" }, { "value": 70, "color": "yellow" }, { "value": 85, "color": "green" } ] } } }, "options": { "graphMode": "area", "colorMode": "background", "justifyMode": "center", "textMode": "value", "reduceOptions": { "values": false, "calcs": ["lastNotNull"] } }, "description": "Model cache efficiency. Target: >85%, Low: <70% (increased loading latency)" } ] } }