{ "uid": "docx-editor-collaboration", "title": "Collaboration", "description": "Collaboration servers and the editors that join rooms: availability, rooms and people, server work, and refusals. Server filters apply to server panels; Client app applies to client panels.", "tags": ["docx-editor"], "timezone": "browser", "schemaVersion": 39, "version": 1, "editable": true, "refresh": "30s", "time": { "from": "now-1h", "to": "now" }, "graphTooltip": 1, "templating": { "list": [ { "name": "datasource", "label": "Data source", "type": "datasource", "query": "prometheus", "refresh": 1, "includeAll": false, "multi": false, "current": {} }, { "name": "server_job", "label": "Server", "type": "query", "datasource": { "type": "prometheus", "uid": "${datasource}" }, "query": { "query": "query_result(count by (job) (up{docx_editor=\"collaboration\"}))", "refId": "server_job" }, "definition": "query_result(count by (job) (up{docx_editor=\"collaboration\"}))", "refresh": 2, "includeAll": true, "multi": true, "sort": 1, "current": { "selected": true, "text": ["All"], "value": ["$__all"] }, "regex": "/job=\"([^\"]+)\"/" }, { "name": "instance", "label": "Server instance", "type": "query", "datasource": { "type": "prometheus", "uid": "${datasource}" }, "query": { "query": "label_values(up{job=~\"$server_job\",docx_editor=\"collaboration\"}, instance)", "refId": "instance" }, "definition": "label_values(up{job=~\"$server_job\",docx_editor=\"collaboration\"}, instance)", "refresh": 2, "includeAll": true, "multi": true, "sort": 1, "current": { "selected": true, "text": ["All"], "value": ["$__all"] }, "allValue": ".*" }, { "name": "job", "label": "Client app", "type": "query", "datasource": { "type": "prometheus", "uid": "${datasource}" }, "query": { "query": "label_values(docx_editor_collab_client_status_transitions_total, job)", "refId": "job" }, "definition": "label_values(docx_editor_collab_client_status_transitions_total, job)", "refresh": 2, "includeAll": true, "multi": true, "sort": 1, "current": { "selected": true, "text": ["All"], "value": ["$__all"] }, "allValue": ".*" } ] }, "annotations": { "list": [ { "builtIn": 1, "datasource": { "type": "grafana", "uid": "-- Grafana --" }, "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", "name": "Annotations & Alerts", "type": "dashboard" } ] }, "links": [ { "title": "Docs", "url": "https://docx-editor.dev/docs/2.x/telemetry/servers", "type": "link", "targetBlank": true, "icon": "doc" }, { "title": "Report an issue", "url": "https://github.com/eigenpal/docx-editor/issues/new/choose", "type": "link", "targetBlank": true, "icon": "doc" } ], "panels": [ { "type": "row", "title": "At a glance", "id": 1, "collapsed": false, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 0 }, "panels": [] }, { "type": "stat", "title": "Server", "description": "Whether Prometheus can scrape the collaboration server.", "targets": [ { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "min(up{job=~\"$server_job\",instance=~\"$instance\",docx_editor=\"collaboration\"})", "legendFormat": "", "refId": "A", "instant": true, "range": false } ], "links": [], "fieldConfig": { "defaults": { "unit": "none", "noValue": "Not scraped", "color": { "mode": "fixed", "fixedColor": "text" }, "mappings": [ { "type": "value", "options": { "0": { "text": "Down" }, "1": { "text": "Up" } } } ] }, "overrides": [] }, "options": { "reduceOptions": { "calcs": ["lastNotNull"], "values": false }, "colorMode": "value", "graphMode": "none", "textMode": "value", "justifyMode": "center" }, "id": 2, "gridPos": { "h": 4, "w": 4, "x": 0, "y": 1 }, "datasource": { "type": "prometheus", "uid": "${datasource}" } }, { "type": "stat", "title": "Stores succeeding", "description": "Share of room stores that succeeded. A failed store can lose edits on restart.", "targets": [ { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "(sum(increase(docx_editor_collab_room_store_duration_seconds_count{job=~\"$server_job\",instance=~\"$instance\",docx_editor=\"collaboration\",outcome=\"success\"}[$__range])) or sum(increase(docx_editor_collab_room_store_duration_seconds_count{job=~\"$server_job\",instance=~\"$instance\",docx_editor=\"collaboration\"}[$__range])) * 0) / sum(increase(docx_editor_collab_room_store_duration_seconds_count{job=~\"$server_job\",instance=~\"$instance\",docx_editor=\"collaboration\"}[$__range]))", "legendFormat": "", "refId": "A", "instant": true, "range": false } ], "links": [], "fieldConfig": { "defaults": { "unit": "percentunit", "noValue": "No stores yet", "color": { "mode": "fixed", "fixedColor": "text" }, "decimals": 2 }, "overrides": [] }, "options": { "reduceOptions": { "calcs": ["lastNotNull"], "values": false }, "colorMode": "value", "graphMode": "none", "textMode": "value", "justifyMode": "center" }, "id": 3, "gridPos": { "h": 4, "w": 5, "x": 4, "y": 1 }, "datasource": { "type": "prometheus", "uid": "${datasource}" } }, { "type": "stat", "title": "Refused connections", "description": "Connections the server refused at admission, as recorded in the selected range. For whether the server is scraped now, see Server.", "targets": [ { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "round(sum(increase(docx_editor_collab_admission_rejections_total{job=~\"$server_job\",instance=~\"$instance\",docx_editor=\"collaboration\"}[$__range]))) or ((min(up{job=~\"$server_job\",instance=~\"$instance\",docx_editor=\"collaboration\"}) == 1) * 0)", "legendFormat": "", "refId": "A", "instant": true, "range": false } ], "links": [], "fieldConfig": { "defaults": { "unit": "short", "noValue": "No data", "color": { "mode": "fixed", "fixedColor": "text" } }, "overrides": [] }, "options": { "reduceOptions": { "calcs": ["lastNotNull"], "values": false }, "colorMode": "value", "graphMode": "none", "textMode": "value", "justifyMode": "center" }, "id": 4, "gridPos": { "h": 4, "w": 5, "x": 9, "y": 1 }, "datasource": { "type": "prometheus", "uid": "${datasource}" } }, { "type": "stat", "title": "Client errors", "description": "Times an editor reported an error status in the selected range. No data means no editor reported a status. The Client app filter selects these editors; the Server filters do not apply to them.", "targets": [ { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "round(sum(increase(docx_editor_collab_client_status_transitions_total{job=~\"$job\",status=\"error\"}[$__range]))) or (sum(increase(docx_editor_collab_client_status_transitions_total{job=~\"$job\"}[$__range])) * 0)", "legendFormat": "", "refId": "A", "instant": true, "range": false } ], "links": [], "fieldConfig": { "defaults": { "unit": "short", "noValue": "No client data", "color": { "mode": "fixed", "fixedColor": "text" } }, "overrides": [] }, "options": { "reduceOptions": { "calcs": ["lastNotNull"], "values": false }, "colorMode": "value", "graphMode": "none", "textMode": "value", "justifyMode": "center" }, "id": 5, "gridPos": { "h": 4, "w": 5, "x": 14, "y": 1 }, "datasource": { "type": "prometheus", "uid": "${datasource}" } }, { "type": "stat", "title": "Room limit p95, last 5 min", "description": "The highest 95th percentile of any one room limit (nodes, relationships, parts, blob bytes) over the last 5 minutes. At 100%, a room refuses edits that need more of that resource.", "targets": [ { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "max(histogram_quantile(0.95, sum by (le, resource) (rate(docx_editor_collab_room_resource_usage_bucket{job=~\"$server_job\",instance=~\"$instance\",docx_editor=\"collaboration\"}[5m]))))", "legendFormat": "", "refId": "A", "instant": true, "range": false } ], "links": [], "fieldConfig": { "defaults": { "unit": "percentunit", "noValue": "No data", "color": { "mode": "fixed", "fixedColor": "text" }, "decimals": 0 }, "overrides": [] }, "options": { "reduceOptions": { "calcs": ["lastNotNull"], "values": false }, "colorMode": "value", "graphMode": "none", "textMode": "value", "justifyMode": "center" }, "id": 6, "gridPos": { "h": 4, "w": 5, "x": 19, "y": 1 }, "datasource": { "type": "prometheus", "uid": "${datasource}" } }, { "type": "row", "title": "Rooms now", "id": 7, "collapsed": false, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 5 }, "panels": [] }, { "type": "stat", "title": "Rooms", "description": "Rooms the server holds in memory.", "targets": [ { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "sum(docx_editor_collab_rooms_active{job=~\"$server_job\",instance=~\"$instance\",docx_editor=\"collaboration\"})", "legendFormat": "", "refId": "A", "instant": true, "range": false } ], "links": [], "fieldConfig": { "defaults": { "unit": "short", "noValue": "No data", "color": { "mode": "fixed", "fixedColor": "text" } }, "overrides": [] }, "options": { "reduceOptions": { "calcs": ["lastNotNull"], "values": false }, "colorMode": "value", "graphMode": "none", "textMode": "value", "justifyMode": "center" }, "id": 8, "gridPos": { "h": 4, "w": 6, "x": 0, "y": 6 }, "datasource": { "type": "prometheus", "uid": "${datasource}" } }, { "type": "stat", "title": "People", "description": "People present in all rooms, from presence, summed over the selected instances. A person in two rooms counts twice. Instances that share rooms through Redis each count the same people, so select one instance for those.", "targets": [ { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "sum(docx_editor_collab_participants_active{job=~\"$server_job\",instance=~\"$instance\",docx_editor=\"collaboration\"})", "legendFormat": "", "refId": "A", "instant": true, "range": false } ], "links": [], "fieldConfig": { "defaults": { "unit": "short", "noValue": "No data", "color": { "mode": "fixed", "fixedColor": "text" } }, "overrides": [] }, "options": { "reduceOptions": { "calcs": ["lastNotNull"], "values": false }, "colorMode": "value", "graphMode": "none", "textMode": "value", "justifyMode": "center" }, "id": 9, "gridPos": { "h": 4, "w": 6, "x": 6, "y": 6 }, "datasource": { "type": "prometheus", "uid": "${datasource}" } }, { "type": "stat", "title": "Connections", "description": "Open connections. One person with two tabs is two.", "targets": [ { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "sum(docx_editor_collab_connections_active{job=~\"$server_job\",instance=~\"$instance\",docx_editor=\"collaboration\"})", "legendFormat": "", "refId": "A", "instant": true, "range": false } ], "links": [], "fieldConfig": { "defaults": { "unit": "short", "noValue": "No data", "color": { "mode": "fixed", "fixedColor": "text" } }, "overrides": [] }, "options": { "reduceOptions": { "calcs": ["lastNotNull"], "values": false }, "colorMode": "value", "graphMode": "none", "textMode": "value", "justifyMode": "center" }, "id": 10, "gridPos": { "h": 4, "w": 6, "x": 12, "y": 6 }, "datasource": { "type": "prometheus", "uid": "${datasource}" } }, { "type": "stat", "title": "People in the fullest room", "description": "The largest room right now.", "targets": [ { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "max(docx_editor_collab_room_participants_max{job=~\"$server_job\",instance=~\"$instance\",docx_editor=\"collaboration\"})", "legendFormat": "", "refId": "A", "instant": true, "range": false } ], "links": [], "fieldConfig": { "defaults": { "unit": "short", "noValue": "No data", "color": { "mode": "fixed", "fixedColor": "text" } }, "overrides": [] }, "options": { "reduceOptions": { "calcs": ["lastNotNull"], "values": false }, "colorMode": "value", "graphMode": "none", "textMode": "value", "justifyMode": "center" }, "id": 11, "gridPos": { "h": 4, "w": 6, "x": 18, "y": 6 }, "datasource": { "type": "prometheus", "uid": "${datasource}" } }, { "type": "timeseries", "title": "Rooms, people, and connections", "description": "Live totals over time. Connections are dashed, so they stay visible when they equal people.", "targets": [ { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "sum(docx_editor_collab_rooms_active{job=~\"$server_job\",instance=~\"$instance\",docx_editor=\"collaboration\"})", "legendFormat": "rooms", "refId": "A" }, { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "sum(docx_editor_collab_participants_active{job=~\"$server_job\",instance=~\"$instance\",docx_editor=\"collaboration\"})", "legendFormat": "people", "refId": "B" }, { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "sum(docx_editor_collab_connections_active{job=~\"$server_job\",instance=~\"$instance\",docx_editor=\"collaboration\"})", "legendFormat": "connections", "refId": "C" } ], "links": [], "fieldConfig": { "defaults": { "unit": "short", "custom": { "drawStyle": "line", "lineWidth": 2, "fillOpacity": 10, "spanNulls": false, "showPoints": "never", "stacking": { "mode": "none" } }, "color": { "mode": "palette-classic" } }, "overrides": [ { "matcher": { "id": "byName", "options": "connections" }, "properties": [ { "id": "custom.lineStyle", "value": { "fill": "dash", "dash": [10, 6] } } ] } ] }, "options": { "legend": { "displayMode": "table", "placement": "bottom", "calcs": ["lastNotNull"] }, "tooltip": { "mode": "multi", "sort": "desc" } }, "id": 12, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 10 }, "datasource": { "type": "prometheus", "uid": "${datasource}" } }, { "type": "timeseries", "title": "Room memory", "description": "Bytes all rooms hold: encoded state, blobs, and updates not yet stored.", "targets": [ { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "sum by (kind) (docx_editor_collab_rooms_memory_bytes{job=~\"$server_job\",instance=~\"$instance\",docx_editor=\"collaboration\"})", "legendFormat": "{{kind}}", "refId": "A" } ], "links": [], "fieldConfig": { "defaults": { "unit": "bytes", "custom": { "drawStyle": "line", "lineWidth": 2, "fillOpacity": 10, "spanNulls": false, "showPoints": "never", "stacking": { "mode": "normal" } }, "color": { "mode": "palette-classic" } }, "overrides": [] }, "options": { "legend": { "displayMode": "list", "placement": "bottom", "calcs": [] }, "tooltip": { "mode": "multi", "sort": "desc" } }, "id": 13, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 10 }, "datasource": { "type": "prometheus", "uid": "${datasource}" } }, { "type": "timeseries", "title": "Room limit used by resource (95th percentile)", "description": "Share of each room limit in use.", "targets": [ { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "histogram_quantile(0.95, sum by (le, resource) (rate(docx_editor_collab_room_resource_usage_bucket{job=~\"$server_job\",instance=~\"$instance\",docx_editor=\"collaboration\"}[$__rate_interval])))", "legendFormat": "{{resource}}", "refId": "A" } ], "links": [], "fieldConfig": { "defaults": { "unit": "percentunit", "custom": { "drawStyle": "line", "lineWidth": 2, "fillOpacity": 10, "spanNulls": false, "showPoints": "never", "stacking": { "mode": "none" } }, "color": { "mode": "palette-classic" }, "min": 0, "max": 1 }, "overrides": [] }, "options": { "legend": { "displayMode": "list", "placement": "bottom", "calcs": [] }, "tooltip": { "mode": "multi", "sort": "desc" } }, "id": 14, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 18 }, "datasource": { "type": "prometheus", "uid": "${datasource}" } }, { "type": "timeseries", "title": "Room age and idle time (median)", "description": "How long rooms stay loaded, and the time since each room last changed.", "targets": [ { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "histogram_quantile(0.5, sum by (le) (rate(docx_editor_collab_room_age_seconds_bucket{job=~\"$server_job\",instance=~\"$instance\",docx_editor=\"collaboration\"}[$__rate_interval])))", "legendFormat": "age", "refId": "A" }, { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "histogram_quantile(0.5, sum by (le) (rate(docx_editor_collab_room_idle_seconds_bucket{job=~\"$server_job\",instance=~\"$instance\",docx_editor=\"collaboration\"}[$__rate_interval])))", "legendFormat": "idle", "refId": "B" } ], "links": [], "fieldConfig": { "defaults": { "unit": "s", "custom": { "drawStyle": "line", "lineWidth": 2, "fillOpacity": 10, "spanNulls": false, "showPoints": "never", "stacking": { "mode": "none" } }, "color": { "mode": "palette-classic" } }, "overrides": [] }, "options": { "legend": { "displayMode": "list", "placement": "bottom", "calcs": [] }, "tooltip": { "mode": "multi", "sort": "desc" } }, "id": 15, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 18 }, "datasource": { "type": "prometheus", "uid": "${datasource}" } }, { "type": "row", "title": "Server work", "id": 16, "collapsed": false, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 26 }, "panels": [] }, { "type": "timeseries", "title": "Room load and store time (95th percentile)", "description": "Time to load a room into memory and to store it.", "targets": [ { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "histogram_quantile(0.95, sum by (le, outcome) (rate(docx_editor_collab_room_load_duration_seconds_bucket{job=~\"$server_job\",instance=~\"$instance\",docx_editor=\"collaboration\"}[$__rate_interval])))", "legendFormat": "load {{outcome}}", "refId": "A" }, { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "histogram_quantile(0.95, sum by (le, outcome) (rate(docx_editor_collab_room_store_duration_seconds_bucket{job=~\"$server_job\",instance=~\"$instance\",docx_editor=\"collaboration\"}[$__rate_interval])))", "legendFormat": "store {{outcome}}", "refId": "B" } ], "links": [], "fieldConfig": { "defaults": { "unit": "s", "custom": { "drawStyle": "line", "lineWidth": 2, "fillOpacity": 10, "spanNulls": false, "showPoints": "never", "stacking": { "mode": "none" } }, "color": { "mode": "palette-classic" } }, "overrides": [] }, "options": { "legend": { "displayMode": "list", "placement": "bottom", "calcs": [] }, "tooltip": { "mode": "multi", "sort": "desc" } }, "id": 17, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 27 }, "datasource": { "type": "prometheus", "uid": "${datasource}" } }, { "type": "timeseries", "title": "Stores per minute by outcome", "description": "Room stores, by outcome. Any failure risks lost edits.", "targets": [ { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "60 * sum by (outcome) (rate(docx_editor_collab_room_store_duration_seconds_count{job=~\"$server_job\",instance=~\"$instance\",docx_editor=\"collaboration\"}[$__rate_interval]))", "legendFormat": "{{outcome}}", "refId": "A" } ], "links": [], "fieldConfig": { "defaults": { "unit": "short", "custom": { "drawStyle": "line", "lineWidth": 2, "fillOpacity": 10, "spanNulls": false, "showPoints": "never", "stacking": { "mode": "normal" } }, "color": { "mode": "palette-classic" } }, "overrides": [] }, "options": { "legend": { "displayMode": "list", "placement": "bottom", "calcs": [] }, "tooltip": { "mode": "multi", "sort": "desc" } }, "id": 18, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 27 }, "datasource": { "type": "prometheus", "uid": "${datasource}" } }, { "type": "timeseries", "title": "Updates applied", "description": "Document updates the server applied to rooms, per second.", "targets": [ { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "sum(rate(docx_editor_collab_updates_total{job=~\"$server_job\",instance=~\"$instance\",docx_editor=\"collaboration\"}[$__rate_interval]))", "legendFormat": "updates", "refId": "A" } ], "links": [], "fieldConfig": { "defaults": { "unit": "ops", "custom": { "drawStyle": "line", "lineWidth": 2, "fillOpacity": 10, "spanNulls": false, "showPoints": "never", "stacking": { "mode": "none" } }, "color": { "mode": "palette-classic" } }, "overrides": [] }, "options": { "legend": { "displayMode": "list", "placement": "bottom", "calcs": [] }, "tooltip": { "mode": "multi", "sort": "desc" } }, "id": 19, "gridPos": { "h": 7, "w": 8, "x": 0, "y": 35 }, "datasource": { "type": "prometheus", "uid": "${datasource}" } }, { "type": "timeseries", "title": "Update traffic", "description": "Bytes of document updates the server applied, per second.", "targets": [ { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "sum(rate(docx_editor_collab_update_bytes_total{job=~\"$server_job\",instance=~\"$instance\",docx_editor=\"collaboration\"}[$__rate_interval]))", "legendFormat": "bytes", "refId": "A" } ], "links": [], "fieldConfig": { "defaults": { "unit": "Bps", "custom": { "drawStyle": "line", "lineWidth": 2, "fillOpacity": 10, "spanNulls": false, "showPoints": "never", "stacking": { "mode": "none" } }, "color": { "mode": "palette-classic" } }, "overrides": [] }, "options": { "legend": { "displayMode": "list", "placement": "bottom", "calcs": [] }, "tooltip": { "mode": "multi", "sort": "desc" } }, "id": 20, "gridPos": { "h": 7, "w": 8, "x": 8, "y": 35 }, "datasource": { "type": "prometheus", "uid": "${datasource}" } }, { "type": "table", "title": "Room migrations by outcome", "description": "Rooms migrated to a newer collaboration format, by outcome.", "targets": [ { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "topk(10, sum by (outcome) (increase(docx_editor_collab_migrations_total{job=~\"$server_job\",instance=~\"$instance\",docx_editor=\"collaboration\"}[$__range])) > 0)", "legendFormat": "", "refId": "A", "instant": true, "range": false, "format": "table" } ], "transformations": [ { "id": "organize", "options": { "excludeByName": { "Time": true }, "indexByName": { "outcome": 0 } } }, { "id": "sortBy", "options": { "sort": [ { "field": "Value", "desc": true } ] } } ], "fieldConfig": { "defaults": { "noValue": "No migrations", "custom": { "align": "auto" } }, "overrides": [ { "matcher": { "id": "byName", "options": "Value" }, "properties": [ { "id": "displayName", "value": "Count" }, { "id": "decimals", "value": 0 }, { "id": "custom.cellOptions", "value": { "type": "gauge", "mode": "basic" } } ] }, { "matcher": { "id": "byName", "options": "code" }, "properties": [ { "id": "displayName", "value": "Code" } ] }, { "matcher": { "id": "byName", "options": "cause" }, "properties": [ { "id": "displayName", "value": "Engine cause" }, { "id": "mappings", "value": [ { "type": "value", "options": { "none": { "text": "Not supplied" } } } ] } ] }, { "matcher": { "id": "byName", "options": "part" }, "properties": [ { "id": "displayName", "value": "Part" } ] }, { "matcher": { "id": "byName", "options": "operation" }, "properties": [ { "id": "displayName", "value": "Operation" } ] }, { "matcher": { "id": "byName", "options": "change_kind" }, "properties": [ { "id": "displayName", "value": "Change kind" } ] }, { "matcher": { "id": "byName", "options": "reason" }, "properties": [ { "id": "displayName", "value": "Reason" } ] } ] }, "options": { "showHeader": true, "cellHeight": "sm", "footer": { "show": false } }, "id": 21, "gridPos": { "h": 7, "w": 8, "x": 16, "y": 35 }, "datasource": { "type": "prometheus", "uid": "${datasource}" } }, { "type": "row", "title": "Clients (filtered by Client app only)", "id": 22, "collapsed": false, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 42 }, "panels": [] }, { "type": "timeseries", "title": "Client status changes per minute", "description": "Ready, disconnected, and error statuses that editors reported, with the failure code. The Client app filter selects these editors; the Server filters do not apply to them.", "targets": [ { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "60 * sum by (status, code) (rate(docx_editor_collab_client_status_transitions_total{job=~\"$job\"}[$__rate_interval]))", "legendFormat": "{{status}} {{code}}", "refId": "A" } ], "links": [], "fieldConfig": { "defaults": { "unit": "short", "custom": { "drawStyle": "line", "lineWidth": 2, "fillOpacity": 10, "spanNulls": false, "showPoints": "never", "stacking": { "mode": "normal" } }, "color": { "mode": "palette-classic" } }, "overrides": [] }, "options": { "legend": { "displayMode": "list", "placement": "bottom", "calcs": [] }, "tooltip": { "mode": "multi", "sort": "desc" } }, "id": 23, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 43 }, "datasource": { "type": "prometheus", "uid": "${datasource}" } }, { "type": "timeseries", "title": "Room size as clients saw it", "description": "People in the room, sampled each time the count changed in an editor. For diagnosis; the server panels are the source of truth. The Client app filter selects these editors; the Server filters do not apply to them.", "targets": [ { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "sum(rate(docx_editor_collab_client_participants_sum{job=~\"$job\"}[$__rate_interval])) / sum(rate(docx_editor_collab_client_participants_count{job=~\"$job\"}[$__rate_interval]))", "legendFormat": "average", "refId": "A" } ], "links": [], "fieldConfig": { "defaults": { "unit": "short", "custom": { "drawStyle": "line", "lineWidth": 2, "fillOpacity": 10, "spanNulls": false, "showPoints": "never", "stacking": { "mode": "none" } }, "color": { "mode": "palette-classic" } }, "overrides": [] }, "options": { "legend": { "displayMode": "list", "placement": "bottom", "calcs": [] }, "tooltip": { "mode": "multi", "sort": "desc" } }, "id": 24, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 43 }, "datasource": { "type": "prometheus", "uid": "${datasource}" } }, { "type": "row", "title": "Refusals", "id": 25, "collapsed": false, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 51 }, "panels": [] }, { "type": "table", "title": "Refused connections by reason", "description": "Connections refused at admission, such as a failed sign-in, most frequent first.", "targets": [ { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "topk(10, sum by (reason) (increase(docx_editor_collab_admission_rejections_total{job=~\"$server_job\",instance=~\"$instance\",docx_editor=\"collaboration\"}[$__range])) > 0)", "legendFormat": "", "refId": "A", "instant": true, "range": false, "format": "table" } ], "transformations": [ { "id": "organize", "options": { "excludeByName": { "Time": true }, "indexByName": { "reason": 0 } } }, { "id": "sortBy", "options": { "sort": [ { "field": "Value", "desc": true } ] } } ], "fieldConfig": { "defaults": { "noValue": "No recorded events in this range", "custom": { "align": "auto" } }, "overrides": [ { "matcher": { "id": "byName", "options": "Value" }, "properties": [ { "id": "displayName", "value": "Count" }, { "id": "decimals", "value": 0 }, { "id": "custom.cellOptions", "value": { "type": "gauge", "mode": "basic" } } ] }, { "matcher": { "id": "byName", "options": "code" }, "properties": [ { "id": "displayName", "value": "Code" } ] }, { "matcher": { "id": "byName", "options": "cause" }, "properties": [ { "id": "displayName", "value": "Engine cause" }, { "id": "mappings", "value": [ { "type": "value", "options": { "none": { "text": "Not supplied" } } } ] } ] }, { "matcher": { "id": "byName", "options": "part" }, "properties": [ { "id": "displayName", "value": "Part" } ] }, { "matcher": { "id": "byName", "options": "operation" }, "properties": [ { "id": "displayName", "value": "Operation" } ] }, { "matcher": { "id": "byName", "options": "change_kind" }, "properties": [ { "id": "displayName", "value": "Change kind" } ] }, { "matcher": { "id": "byName", "options": "reason" }, "properties": [ { "id": "displayName", "value": "Reason" } ] } ] }, "options": { "showHeader": true, "cellHeight": "sm", "footer": { "show": false } }, "id": 26, "gridPos": { "h": 6, "w": 12, "x": 0, "y": 52 }, "datasource": { "type": "prometheus", "uid": "${datasource}" } }, { "type": "table", "title": "Refused messages by reason", "description": "Messages refused before they applied, such as a room that changed generation.", "targets": [ { "datasource": { "type": "prometheus", "uid": "${datasource}" }, "expr": "topk(10, sum by (reason) (increase(docx_editor_collab_message_refusals_total{job=~\"$server_job\",instance=~\"$instance\",docx_editor=\"collaboration\"}[$__range])) > 0)", "legendFormat": "", "refId": "A", "instant": true, "range": false, "format": "table" } ], "transformations": [ { "id": "organize", "options": { "excludeByName": { "Time": true }, "indexByName": { "reason": 0 } } }, { "id": "sortBy", "options": { "sort": [ { "field": "Value", "desc": true } ] } } ], "fieldConfig": { "defaults": { "noValue": "No recorded events in this range", "custom": { "align": "auto" } }, "overrides": [ { "matcher": { "id": "byName", "options": "Value" }, "properties": [ { "id": "displayName", "value": "Count" }, { "id": "decimals", "value": 0 }, { "id": "custom.cellOptions", "value": { "type": "gauge", "mode": "basic" } } ] }, { "matcher": { "id": "byName", "options": "code" }, "properties": [ { "id": "displayName", "value": "Code" } ] }, { "matcher": { "id": "byName", "options": "cause" }, "properties": [ { "id": "displayName", "value": "Engine cause" }, { "id": "mappings", "value": [ { "type": "value", "options": { "none": { "text": "Not supplied" } } } ] } ] }, { "matcher": { "id": "byName", "options": "part" }, "properties": [ { "id": "displayName", "value": "Part" } ] }, { "matcher": { "id": "byName", "options": "operation" }, "properties": [ { "id": "displayName", "value": "Operation" } ] }, { "matcher": { "id": "byName", "options": "change_kind" }, "properties": [ { "id": "displayName", "value": "Change kind" } ] }, { "matcher": { "id": "byName", "options": "reason" }, "properties": [ { "id": "displayName", "value": "Reason" } ] } ] }, "options": { "showHeader": true, "cellHeight": "sm", "footer": { "show": false } }, "id": 27, "gridPos": { "h": 6, "w": 12, "x": 12, "y": 52 }, "datasource": { "type": "prometheus", "uid": "${datasource}" } } ] }