# Grafana dashboard ConfigMap for FlowerCore.RemoteDesktop. # # Inlines the JSON from flowercore-remotedesktop-grafana-dashboard.json. # Kept as a standalone file (not inlined in noc-monitoring.yaml) so the # CRLF-dirty state of noc-monitoring.yaml doesn't have to be normalized # in the same pass. To actually load the dashboard, the Grafana Deployment # in noc-monitoring.yaml needs a matching 'volumes:' entry: # # - name: dashboard-remotedesktop # configMap: # name: grafana-dashboard-remotedesktop # # ArgoCD will sync this ConfigMap automatically through the bluejay-infra # ApplicationSet (infra-monitoring App). The dashboard just won't load # until the Grafana Deployment mount is wired. --- apiVersion: v1 kind: ConfigMap metadata: name: grafana-dashboard-remotedesktop namespace: monitoring data: remotedesktop.json: | { "annotations": { "list": [] }, "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 0, "id": null, "links": [], "panels": [ { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "unit": "short" }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 0 }, "id": 1, "options": { "legend": { "displayMode": "table", "placement": "bottom" }, "tooltip": { "mode": "single" } }, "targets": [ { "editorMode": "code", "expr": "sum by (event) (increase(fc_desktop_session_events_total[$__rate_interval]))", "legendFormat": "{{event}}", "range": true, "refId": "A" } ], "title": "RemoteDesktop Session Events", "type": "timeseries" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "unit": "short" }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 0 }, "id": 2, "options": { "orientation": "auto", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showUnfilled": true }, "targets": [ { "editorMode": "code", "expr": "sum by (template, event) (increase(fc_desktop_session_events_total[24h]))", "legendFormat": "{{template}} {{event}}", "range": true, "refId": "A" } ], "title": "24h Session Events By Template", "type": "bargauge" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "unit": "short" }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 8 }, "id": 3, "options": { "legend": { "displayMode": "table", "placement": "bottom" }, "tooltip": { "mode": "single" } }, "targets": [ { "editorMode": "code", "expr": "fc_desktop_pool_ready", "legendFormat": "{{template}} ready", "range": true, "refId": "A" }, { "editorMode": "code", "expr": "fc_desktop_pool_desired", "legendFormat": "{{template}} desired", "range": true, "refId": "B" } ], "title": "Warm Pool Ready vs Desired", "type": "timeseries" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "orange", "value": 1 } ] }, "unit": "short" }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 8 }, "id": 4, "options": { "colorMode": "value", "graphMode": "none", "justifyMode": "auto", "orientation": "auto", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "textMode": "auto" }, "targets": [ { "editorMode": "code", "expr": "sum(increase(fc_desktop_session_events_total{event=\"connect\",browser_datasource=\"json\"}[24h])) - sum(increase(fc_desktop_session_events_total{event=\"disconnect\"}[24h]))", "range": true, "refId": "A" } ], "title": "24h Connect Minus Disconnect", "type": "stat" } ], "refresh": "30s", "schemaVersion": 39, "style": "dark", "tags": [ "flowercore", "remotedesktop", "guacamole" ], "templating": { "list": [] }, "time": { "from": "now-24h", "to": "now" }, "timezone": "browser", "title": "FlowerCore RemoteDesktop", "uid": "flowercore-remotedesktop", "version": 1 }