diff --git a/intern/docker_fridgeserver/templates/htaccess b/intern/docker_fridgeserver/templates/htaccess new file mode 100644 index 0000000000000000000000000000000000000000..48c2f41eb7f5bd2d802d59080abefd6a2ddbde09 --- /dev/null +++ b/intern/docker_fridgeserver/templates/htaccess @@ -0,0 +1,2 @@ +<Files *.php> +deny from all diff --git a/intern/docker_grafana/templates/provisioning/dashboards/dashboards.yml b/intern/docker_grafana/templates/provisioning/dashboards/dashboards.yml new file mode 100644 index 0000000000000000000000000000000000000000..45bfb06d0dd4bcfe6e17b08a33a5d1cc1477c6ac --- /dev/null +++ b/intern/docker_grafana/templates/provisioning/dashboards/dashboards.yml @@ -0,0 +1,25 @@ +apiVersion: 1 + +providers: + # <string> an unique provider name +- name: 'Pixelflut' + # <int> org id. will default to orgId 1 if not specified + # orgId: 1 + # <string, required> name of the dashboard folder. Required + folder: 'Pixelflut' + # <string> folder UID. will be automatically generated if not specified + # folderUid: '' + # <string, required> provider type. Required + type: file + # <bool> disable dashboard deletion + # disableDeletion: false + # <bool> enable dashboard editing + editable: true + # <int> how often Grafana will scan for changed dashboards + updateIntervalSeconds: 10 + # <bool> allow updating provisioned dashboards from the UI + allowUiUpdates: true + options: + # <string, required> path to dashboard files on disk. Required + path: /etc/grafana/provisioning/dashboards/pixelflut + diff --git a/intern/docker_grafana/templates/provisioning/dashboards/pixelflut/breakwater.json b/intern/docker_grafana/templates/provisioning/dashboards/pixelflut/breakwater.json new file mode 100644 index 0000000000000000000000000000000000000000..5eebc771ff054207d86b699f7dc08ea4a5bab2c9 --- /dev/null +++ b/intern/docker_grafana/templates/provisioning/dashboards/pixelflut/breakwater.json @@ -0,0 +1,1055 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": 6, + "links": [], + "liveNow": false, + "panels": [ + { + "datasource": { + "type": "prometheus", + "uid": "P0FAC05DE14135586" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 3, + "x": 0, + "y": 0 + }, + "id": 6, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "8.4.6", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "P0FAC05DE14135586" + }, + "exemplar": true, + "expr": "breakwater_ips", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Connected IPs", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "P0FAC05DE14135586" + }, + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "green", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 3, + "x": 3, + "y": 0 + }, + "id": 7, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "8.4.6", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "P0FAC05DE14135586" + }, + "exemplar": true, + "expr": "sum(breakwater_connections) or vector(0)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Connections", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "P0FAC05DE14135586" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "green", + "value": 25 + } + ] + }, + "unit": "FPS" + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 3, + "x": 9, + "y": 0 + }, + "id": 15, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "8.4.6", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "P0FAC05DE14135586" + }, + "exemplar": true, + "expr": "breakwater_fps", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "FPS", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "P0FAC05DE14135586" + }, + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "green", + "mode": "fixed" + }, + "mappings": [], + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "binbps" + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 3, + "x": 12, + "y": 0 + }, + "id": 19, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "8.4.6", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "P0FAC05DE14135586" + }, + "exemplar": true, + "expr": "sum(rate(breakwater_bytes[1m])) * 8 or vector(0)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Throughput", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "P0FAC05DE14135586" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 3, + "x": 15, + "y": 0 + }, + "id": 9, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "8.4.6", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "P0FAC05DE14135586" + }, + "exemplar": true, + "expr": "sum(breakwater_bytes) or vector(0)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Total Traffic", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "P0FAC05DE14135586" + }, + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "green", + "mode": "fixed" + }, + "mappings": [], + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "reqps" + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 3, + "x": 18, + "y": 0 + }, + "id": 16, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "8.4.6", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "P0FAC05DE14135586" + }, + "exemplar": true, + "expr": "sum(rate(breakwater_pixels[1m])) * 8 or vector(0)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Pixels / s", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "P0FAC05DE14135586" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 5, + "w": 3, + "x": 21, + "y": 0 + }, + "id": 17, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "8.4.6", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "P0FAC05DE14135586" + }, + "exemplar": true, + "expr": "sum(breakwater_pixels) or vector(0)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Total Pixels", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "P0FAC05DE14135586" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "IPv4" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "yellow", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "All" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "green", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 5 + }, + "id": 13, + "options": { + "legend": { + "calcs": [ + "last", + "max" + ], + "displayMode": "table", + "placement": "right" + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "P0FAC05DE14135586" + }, + "exemplar": true, + "expr": "breakwater_ips", + "interval": "", + "legendFormat": "All", + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "P0FAC05DE14135586" + }, + "exemplar": true, + "expr": "breakwater_legacy_ips", + "hide": false, + "interval": "", + "legendFormat": "IPv4", + "refId": "B" + } + ], + "title": "Connected IPs", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "P0FAC05DE14135586" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bps" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 5 + }, + "id": 14, + "interval": "1m", + "options": { + "legend": { + "calcs": [ + "last", + "max" + ], + "displayMode": "table", + "placement": "right", + "sortBy": "Last", + "sortDesc": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "P0FAC05DE14135586" + }, + "exemplar": true, + "expr": "rate(breakwater_bytes[$__interval]) * 8", + "interval": "", + "legendFormat": "pixelflut.warpzone.lan", + "refId": "A" + } + ], + "title": "Traffic / IP", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "P0FAC05DE14135586" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 13 + }, + "id": 11, + "options": { + "legend": { + "calcs": [ + "last", + "max" + ], + "displayMode": "table", + "placement": "right", + "sortBy": "Last", + "sortDesc": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "P0FAC05DE14135586" + }, + "exemplar": true, + "expr": "breakwater_connections", + "interval": "", + "legendFormat": "pixelflut.warpzone.lan", + "refId": "A" + } + ], + "title": "Connections / IP", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "P0FAC05DE14135586" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "reqps" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 13 + }, + "id": 18, + "interval": "1m", + "options": { + "legend": { + "calcs": [ + "last", + "max" + ], + "displayMode": "table", + "placement": "right", + "sortBy": "Last", + "sortDesc": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "P0FAC05DE14135586" + }, + "exemplar": true, + "expr": "rate(breakwater_pixels[$__interval]) * 8", + "interval": "", + "legendFormat": "pixelflut.warpzone.lan", + "refId": "A" + } + ], + "title": "Pixels / s / IP", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "P0FAC05DE14135586" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "green", + "mode": "thresholds" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "green", + "value": 25 + } + ] + }, + "unit": "FPS" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "30 FPS" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "dark-green", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 6, + "w": 12, + "x": 12, + "y": 21 + }, + "id": 21, + "options": { + "legend": { + "calcs": [], + "displayMode": "hidden", + "placement": "bottom" + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "8.4.6", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "P0FAC05DE14135586" + }, + "exemplar": true, + "expr": "breakwater_fps{}", + "interval": "", + "legendFormat": "Measured", + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "P0FAC05DE14135586" + }, + "exemplar": true, + "expr": "30", + "hide": false, + "interval": "", + "legendFormat": "30 FPS", + "refId": "B" + } + ], + "title": "FPS", + "type": "timeseries" + } + ], + "refresh": false, + "schemaVersion": 35, + "style": "dark", + "tags": [ + "pixelflut", + "breakwater" + ], + "templating": { + "list": [] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "Pixelflut overview", + "uid": "bfgb09843", + "weekStart": "" +} diff --git a/intern/docker_grafana/templates/provisioning/datasources/datasources.yml b/intern/docker_grafana/templates/provisioning/datasources/datasources.yml new file mode 100644 index 0000000000000000000000000000000000000000..8e9cb3f4717e00fa8cd63179a593193f462cdb66 --- /dev/null +++ b/intern/docker_grafana/templates/provisioning/datasources/datasources.yml @@ -0,0 +1,47 @@ + +apiVersion: 1 + +datasources: + + - name: MQTT_Flux + type: influxdb + access: proxy + url: http://{{ int_ip4 }}:{{ mqtt_influxdb_port }} + jsonData: + version: Flux + organization: mqtt + defaultBucket: mqtt + tlsSkipVerify: true + secureJsonData: + token: {{ influxdb_token }} + + - name: MQTT_InfluxQL + type: influxdb + access: proxy + url: http://{{ int_ip4 }}:{{ mqtt_influxdb_port }} + # This database should be mapped to a bucket + database: mqtt + jsonData: + httpMode: GET + httpHeaderName1: 'Authorization' + secureJsonData: + httpHeaderValue1: 'Token {{ influxdb_token }}' + +{% if inventory_hostname == 'hix' %} + + - name: Prometheus + type: prometheus + access: proxy + url: http://{{ int_ip4 }}:9090 + +{% endif %} + +{% if inventory_hostname == 'ogg' %} + + - name: Pixelflut + type: prometheus + access: proxy + url: http://pixelflut.warpzone.lan:9090 + uuid: P0FAC05DE14135586 + +{% endif %}