zabbix_export: version: '7.2' template_groups: - uuid: 2ce6df1168bd4797aa5374fd19438746 name: Templates/FlowerCore templates: - uuid: 5b20d8f9d3c346f7b1c7fe6922e9d4d1 template: FlowerCore RemoteDesktop name: FlowerCore RemoteDesktop description: Optional RemoteDesktop observability import. This template reads the Prometheus exposition from FlowerCore.RemoteDesktop and extracts launch/connect/disconnect/recording counters plus warm-pool gauges. Adjust the metrics URL if the Zabbix host should scrape a different endpoint than the public desktop host. groups: - name: Templates/FlowerCore items: - uuid: 357ab8ec721a4d31a5488bdd60a6679d name: RemoteDesktop metrics snapshot type: HTTP_AGENT key: flowercore.remotedesktop.metrics delay: 30s history: 7d trends: '0' value_type: TEXT url: https://desktop.iamworkin.lan/metrics timeout: 10s description: Raw Prometheus exposition from FlowerCore.RemoteDesktop. - uuid: 59af4d77fbb54dc6a733f8dc86d73c3d name: RemoteDesktop launch events total type: DEPENDENT key: flowercore.remotedesktop.launch.total delay: '0' history: 30d trends: 365d value_type: FLOAT preprocessing: - type: JAVASCRIPT parameters: - | var lines = String(value || '').split(/\r?\n/); var sum = 0; for (var i = 0; i < lines.length; i += 1) { var line = lines[i]; if (line.indexOf('fc_desktop_session_events_total{') !== 0 || line.indexOf('event="launch"') === -1) { continue; } var parts = line.trim().split(/\s+/); var metricValue = Number(parts[parts.length - 1]); if (!isNaN(metricValue)) { sum += metricValue; } } return sum; master_item: key: flowercore.remotedesktop.metrics - uuid: 479e5d87f8e14e9cb4c45f1832723a34 name: RemoteDesktop connect events total (json datasource) type: DEPENDENT key: flowercore.remotedesktop.connect.json.total delay: '0' history: 30d trends: 365d value_type: FLOAT preprocessing: - type: JAVASCRIPT parameters: - | var lines = String(value || '').split(/\r?\n/); var sum = 0; for (var i = 0; i < lines.length; i += 1) { var line = lines[i]; if (line.indexOf('fc_desktop_session_events_total{') !== 0 || line.indexOf('event="connect"') === -1 || line.indexOf('browser_datasource="json"') === -1) { continue; } var parts = line.trim().split(/\s+/); var metricValue = Number(parts[parts.length - 1]); if (!isNaN(metricValue)) { sum += metricValue; } } return sum; master_item: key: flowercore.remotedesktop.metrics - uuid: 8ad073699ca74a99ab36ef1e4a4b06b8 name: RemoteDesktop disconnect events total type: DEPENDENT key: flowercore.remotedesktop.disconnect.total delay: '0' history: 30d trends: 365d value_type: FLOAT preprocessing: - type: JAVASCRIPT parameters: - | var lines = String(value || '').split(/\r?\n/); var sum = 0; for (var i = 0; i < lines.length; i += 1) { var line = lines[i]; if (line.indexOf('fc_desktop_session_events_total{') !== 0 || line.indexOf('event="disconnect"') === -1) { continue; } var parts = line.trim().split(/\s+/); var metricValue = Number(parts[parts.length - 1]); if (!isNaN(metricValue)) { sum += metricValue; } } return sum; master_item: key: flowercore.remotedesktop.metrics - uuid: 0a50ab8cd4ab4c97ac52f3d94b02ff8f name: RemoteDesktop recording events total type: DEPENDENT key: flowercore.remotedesktop.recording.total delay: '0' history: 30d trends: 365d value_type: FLOAT preprocessing: - type: JAVASCRIPT parameters: - | var lines = String(value || '').split(/\r?\n/); var sum = 0; for (var i = 0; i < lines.length; i += 1) { var line = lines[i]; if (line.indexOf('fc_desktop_session_events_total{') !== 0 || line.indexOf('event="recording"') === -1) { continue; } var parts = line.trim().split(/\s+/); var metricValue = Number(parts[parts.length - 1]); if (!isNaN(metricValue)) { sum += metricValue; } } return sum; master_item: key: flowercore.remotedesktop.metrics - uuid: 5d4d5e7b38d14c68a72877e37d7f1bde name: RemoteDesktop warm pools ready type: DEPENDENT key: flowercore.remotedesktop.pool.ready delay: '0' history: 30d trends: 365d value_type: FLOAT preprocessing: - type: JAVASCRIPT parameters: - | var lines = String(value || '').split(/\r?\n/); var sum = 0; for (var i = 0; i < lines.length; i += 1) { var line = lines[i]; if (line.indexOf('fc_desktop_pool_ready{') !== 0) { continue; } var parts = line.trim().split(/\s+/); var metricValue = Number(parts[parts.length - 1]); if (!isNaN(metricValue)) { sum += metricValue; } } return sum; master_item: key: flowercore.remotedesktop.metrics valuemaps: [] triggers: - uuid: 5ef71c752fa94d2e8ce3ced79fcfe0f4 expression: nodata(/FlowerCore RemoteDesktop/flowercore.remotedesktop.metrics,10m)=1 name: FlowerCore RemoteDesktop metrics unavailable priority: WARNING description: FlowerCore.RemoteDesktop /metrics has not returned data for 10 minutes. Check the web deployment, ingress, or the scrape URL configured in this template. manual_close: 'YES'