diff --git a/k8s/monitoring/templates/session-telemetry-dashboard.yaml b/k8s/monitoring/templates/session-telemetry-dashboard.yaml new file mode 100644 index 0000000..9453fe2 --- /dev/null +++ b/k8s/monitoring/templates/session-telemetry-dashboard.yaml @@ -0,0 +1,245 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: session-telemetry-dashboard + labels: + grafana_dashboard: "1" +data: + session-telemetry.json: | + { + "annotations": { + "list": [] + }, + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "hideControls": false, + "id": null, + "iteration": 1583185057230, + "links": [], + "panels": [ + { + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { "color": "red", "value": null }, + { "color": "green", "value": 95 } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 6, + "x": 0, + "y": 0 + }, + "id": 1, + "options": { + "orientation": "auto", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true + }, + "pluginVersion": "8.0.0", + "targets": [ + { + "expr": "sum(session_peer_telemetry_total{video_seen=\"true\"}) / sum(session_peer_telemetry_total) * 100", + "refId": "A" + } + ], + "title": "Overall Video Success Rate", + "type": "stat" + }, + { + "datasource": "Prometheus", + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 4 + }, + "id": 2, + "options": { + "legend": { + "displayMode": "list", + "placement": "right" + }, + "pieType": "pie", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + } + }, + "targets": [ + { + "expr": "sum(session_peer_telemetry_total) by (p2p)", + "legendFormat": "P2P: {{p2p}}", + "refId": "A" + } + ], + "title": "P2P vs non-P2P", + "type": "piechart" + }, + { + "datasource": "Prometheus", + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 4 + }, + "id": 3, + "options": { + "legend": { + "displayMode": "list", + "placement": "right" + }, + "pieType": "pie", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + } + }, + "targets": [ + { + "expr": "sum(session_peer_telemetry_total) by (protocol)", + "legendFormat": "{{protocol}}", + "refId": "A" + } + ], + "title": "Protocol Breakdown (UDP/TCP)", + "type": "piechart" + }, + { + "datasource": "Prometheus", + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 4 + }, + "id": 4, + "options": { + "legend": { + "displayMode": "list", + "placement": "right" + }, + "pieType": "pie", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + } + }, + "targets": [ + { + "expr": "sum(session_summary_telemetry_total{type=\"join\"}) by (how_many_seen)", + "legendFormat": "{{how_many_seen}}", + "refId": "A" + } + ], + "title": "Join Success Summary", + "type": "piechart" + }, + { + "datasource": "Prometheus", + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 12 + }, + "id": 7, + "options": { + "legend": { + "displayMode": "list", + "placement": "right" + }, + "pieType": "pie", + "reduceOptions": { + "calcs": ["lastNotNull"], + "fields": "", + "values": false + } + }, + "targets": [ + { + "expr": "sum(session_summary_telemetry_total{type=\"leave\"}) by (how_many_seen)", + "legendFormat": "{{how_many_seen}}", + "refId": "A" + } + ], + "title": "Leave Success Summary (Full Session)", + "type": "piechart" + }, + { + "datasource": "Prometheus", + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 12 + }, + "id": 5, + "targets": [ + { + "expr": "sum(rate(session_join_telemetry_others_bucket[5m])) by (le)", + "format": "heatmap", + "refId": "A" + } + ], + "title": "Participants on Join (Distribution)", + "type": "heatmap" + }, + { + "datasource": "Prometheus", + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 12 + }, + "id": 6, + "targets": [ + { + "expr": "sum(rate(session_join_telemetry_age_bucket[5m])) by (le)", + "format": "heatmap", + "refId": "A" + } + ], + "title": "Session Age on Join (Distribution)", + "type": "heatmap" + } + ], + "refresh": "10s", + "schemaVersion": 30, + "style": "dark", + "tags": ["webrtc", "telemetry"], + "templating": { + "list": [] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "WebRTC Session Telemetry", + "uid": "webrtc-session-telemetry" + }