diff --git a/scripts/dashboards_render_atlas.py b/scripts/dashboards_render_atlas.py index 7a15e271..7d46f1f6 100644 --- a/scripts/dashboards_render_atlas.py +++ b/scripts/dashboards_render_atlas.py @@ -1740,43 +1740,49 @@ def build_overview(): ], } panels.append( - canvas_metric_grid_panel( + stat_panel( 40, - "UPS Current Load", - {"h": 5, "w": 6, "x": 0, "y": 7}, + f"{ANANKE_UPS_DB_NAME} UPS Current", + None, + {"h": 2, "w": 6, "x": 0, "y": 7}, + unit="none", + decimals=1, + text_mode="name_and_value", + orientation="horizontal", + wide_layout=True, + graph_mode="none", targets=[ - {"refId": "A", "expr": ANANKE_UPS_DRAW_WATTS_DB, "legendFormat": f"{ANANKE_UPS_DB_NAME} Draw", "instant": True}, - {"refId": "B", "expr": ANANKE_UPS_RUNTIME_DB, "legendFormat": f"{ANANKE_UPS_DB_NAME} Runtime", "instant": True}, - {"refId": "C", "expr": ANANKE_UPS_DRAW_WATTS_TETHYS, "legendFormat": f"{ANANKE_UPS_TETHYS_NAME} Draw", "instant": True}, - {"refId": "D", "expr": ANANKE_UPS_RUNTIME_TETHYS, "legendFormat": f"{ANANKE_UPS_TETHYS_NAME} Runtime", "instant": True}, - {"refId": "E", "expr": ANANKE_UPS_DISCHARGE_RISK_DB, "legendFormat": f"{ANANKE_UPS_DB_NAME} Risk", "instant": True}, - {"refId": "F", "expr": ANANKE_UPS_DISCHARGE_RISK_TETHYS, "legendFormat": f"{ANANKE_UPS_TETHYS_NAME} Risk", "instant": True}, + {"refId": "A", "expr": ANANKE_UPS_DRAW_WATTS_DB, "legendFormat": "Draw", "instant": True}, + {"refId": "B", "expr": ANANKE_UPS_RUNTIME_DB, "legendFormat": "Runtime", "instant": True}, ], field_overrides=[ - {"matcher": {"id": "byRegexp", "options": ".*Draw$"}, "properties": [{"id": "unit", "value": "watt"}]}, - {"matcher": {"id": "byRegexp", "options": ".*Runtime$"}, "properties": [{"id": "unit", "value": "s"}]}, + {"matcher": {"id": "byName", "options": "Draw"}, "properties": [{"id": "unit", "value": "watt"}]}, + {"matcher": {"id": "byName", "options": "Runtime"}, "properties": [{"id": "unit", "value": "s"}]}, + ], + links=link_to("atlas-power"), + ) + ) + panels.append( + stat_panel( + 144, + f"{ANANKE_UPS_TETHYS_NAME} UPS Current", + None, + {"h": 2, "w": 6, "x": 0, "y": 9}, + unit="none", + decimals=1, + text_mode="name_and_value", + orientation="horizontal", + wide_layout=True, + graph_mode="none", + targets=[ + {"refId": "A", "expr": ANANKE_UPS_DRAW_WATTS_TETHYS, "legendFormat": "Draw", "instant": True}, + {"refId": "B", "expr": ANANKE_UPS_RUNTIME_TETHYS, "legendFormat": "Runtime", "instant": True}, + ], + field_overrides=[ + {"matcher": {"id": "byName", "options": "Draw"}, "properties": [{"id": "unit", "value": "watt"}]}, + {"matcher": {"id": "byName", "options": "Runtime"}, "properties": [{"id": "unit", "value": "s"}]}, ], - color_fields=[ - f"{ANANKE_UPS_DB_NAME} Risk", - f"{ANANKE_UPS_DB_NAME} Risk", - f"{ANANKE_UPS_TETHYS_NAME} Risk", - f"{ANANKE_UPS_TETHYS_NAME} Risk", - ], - thresholds={ - "mode": "absolute", - "steps": [ - {"color": "green", "value": None}, - {"color": "yellow", "value": 1}, - {"color": "orange", "value": 2}, - {"color": "red", "value": 3}, - ], - }, links=link_to("atlas-power"), - description=( - "Per-UPS live snapshot in a centered 2x2 layout. " - "Color turns yellow when discharging, orange below 3x graceful shutdown runtime, red below 2x." - ), - metric_size=26, ) ) panels.append( @@ -1797,29 +1803,50 @@ def build_overview(): ) ) panels.append( - canvas_metric_grid_panel( + stat_panel( 42, - "Current Enclosure Climate", - {"h": 6, "w": 6, "x": 0, "y": 12}, + "Current Enclosure Temperature", + None, + {"h": 3, "w": 6, "x": 0, "y": 12}, + unit="none", + text_mode="value", + orientation="horizontal", + wide_layout=True, + graph_mode="none", targets=[ - {"refId": "A", "expr": CLIMATE_TEMP_MAX, "legendFormat": "Temp °C", "instant": True}, - {"refId": "B", "expr": CLIMATE_TEMP_FAHRENHEIT_MAX, "legendFormat": "Temp °F", "instant": True}, - {"refId": "C", "expr": CLIMATE_HUMIDITY_MAX, "legendFormat": "Humidity", "instant": True}, - {"refId": "D", "expr": CLIMATE_PRESSURE_CURRENT, "legendFormat": "Pressure", "instant": True}, + {"refId": "A", "expr": CLIMATE_TEMP_MAX, "legendFormat": "C", "instant": True}, + {"refId": "B", "expr": CLIMATE_TEMP_FAHRENHEIT_MAX, "legendFormat": "F", "instant": True}, ], field_overrides=[ - {"matcher": {"id": "byName", "options": "Temp °C"}, "properties": [{"id": "unit", "value": "celsius"}]}, - {"matcher": {"id": "byName", "options": "Temp °F"}, "properties": [{"id": "unit", "value": "fahrenheit"}]}, - {"matcher": {"id": "byName", "options": "Humidity"}, "properties": [{"id": "unit", "value": "percent"}]}, - {"matcher": {"id": "byName", "options": "Pressure"}, "properties": [{"id": "unit", "value": "suffix:kPa"}]}, + {"matcher": {"id": "byName", "options": "C"}, "properties": [{"id": "unit", "value": "celsius"}]}, + {"matcher": {"id": "byName", "options": "F"}, "properties": [{"id": "unit", "value": "fahrenheit"}]}, ], links=link_to("atlas-power"), - description="Current tent values in a fixed 2x2 layout: Temp °C / Temp °F / Humidity / Pressure.", - metric_size=30, ) ) panels.append( - timeseries_panel( + stat_panel( + 143, + "Current Enclosure Climate", + None, + {"h": 3, "w": 6, "x": 0, "y": 15}, + unit="none", + text_mode="value", + orientation="horizontal", + wide_layout=True, + graph_mode="none", + targets=[ + {"refId": "A", "expr": CLIMATE_HUMIDITY_MAX, "legendFormat": "RH", "instant": True}, + {"refId": "B", "expr": CLIMATE_PRESSURE_CURRENT, "legendFormat": "P", "instant": True}, + ], + field_overrides=[ + {"matcher": {"id": "byName", "options": "RH"}, "properties": [{"id": "unit", "value": "suffix:%RH"}]}, + {"matcher": {"id": "byName", "options": "P"}, "properties": [{"id": "unit", "value": "suffix:kPa"}]}, + ], + links=link_to("atlas-power"), + ) + ) + climate_history_panel = timeseries_panel( 43, "Enclosure Climate History", None, @@ -1909,7 +1936,15 @@ def build_overview(): links=link_to("atlas-power"), description="Temperature on left axis, humidity and pressure on right axis with dynamic bound series so small swings remain visible.", ) - ) + climate_history_panel["fieldConfig"]["defaults"]["custom"] = { + "drawStyle": "line", + "lineInterpolation": "linear", + "lineWidth": 2, + "fillOpacity": 10, + "showPoints": "never", + "spanNulls": True, + } + panels.append(climate_history_panel) panels.append( stat_panel( 140, diff --git a/services/jenkins/configmap-jcasc.yaml b/services/jenkins/configmap-jcasc.yaml index f3ac7ff5..a25f0c9e 100644 --- a/services/jenkins/configmap-jcasc.yaml +++ b/services/jenkins/configmap-jcasc.yaml @@ -333,6 +333,32 @@ data: } } } + pipelineJob('typhon') { + properties { + pipelineTriggers { + triggers { + scmTrigger { + scmpoll_spec('H/5 * * * *') + ignorePostCommitHooks(false) + } + } + } + } + definition { + cpsScm { + scm { + git { + remote { + url('https://scm.bstein.dev/bstein/typhon.git') + credentials('gitea-pat') + } + branches('*/main') + } + } + scriptPath('Jenkinsfile') + } + } + } multibranchPipelineJob('titan-iac-quality-gate') { branchSources { branchSource { diff --git a/services/monitoring/dashboards/atlas-overview.json b/services/monitoring/dashboards/atlas-overview.json index b91ec265..096f5da0 100644 --- a/services/monitoring/dashboards/atlas-overview.json +++ b/services/monitoring/dashboards/atlas-overview.json @@ -1072,14 +1072,14 @@ }, { "id": 40, - "type": "canvas", - "title": "UPS Current Load", + "type": "stat", + "title": "Pyrphoros UPS Current", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 5, + "h": 2, "w": 6, "x": 0, "y": 7 @@ -1088,73 +1088,46 @@ { "refId": "A", "expr": "max((ananke_ups_load_percent{job=\"ananke-power\",source=\"Pyrphoros\"} * ananke_ups_power_nominal_watts{job=\"ananke-power\",source=\"Pyrphoros\"}) / 100) or on() vector(0)", - "legendFormat": "Pyrphoros Draw", + "legendFormat": "Draw", "instant": true }, { "refId": "B", "expr": "max(ananke_ups_runtime_seconds{job=\"ananke-power\",source=\"Pyrphoros\"}) or on() vector(0)", - "legendFormat": "Pyrphoros Runtime", - "instant": true - }, - { - "refId": "C", - "expr": "max((ananke_ups_load_percent{job=\"ananke-power\",source=\"Statera\"} * ananke_ups_power_nominal_watts{job=\"ananke-power\",source=\"Statera\"}) / 100) or on() vector(0)", - "legendFormat": "Statera Draw", - "instant": true - }, - { - "refId": "D", - "expr": "max(ananke_ups_runtime_seconds{job=\"ananke-power\",source=\"Statera\"}) or on() vector(0)", - "legendFormat": "Statera Runtime", - "instant": true - }, - { - "refId": "E", - "expr": "(((max(ananke_ups_on_battery{job=\"ananke-power\",source=\"Pyrphoros\"}) or on() vector(0)) > bool 0) * (1 + ((max(ananke_ups_runtime_seconds{job=\"ananke-power\",source=\"Pyrphoros\"}) or on() vector(0)) < bool (3 * (clamp_min(max(ananke_ups_threshold_seconds{job=\"ananke-power\",source=\"Pyrphoros\"}), 1)))) + ((max(ananke_ups_runtime_seconds{job=\"ananke-power\",source=\"Pyrphoros\"}) or on() vector(0)) < bool (2 * (clamp_min(max(ananke_ups_threshold_seconds{job=\"ananke-power\",source=\"Pyrphoros\"}), 1)))))) or on() vector(0)", - "legendFormat": "Pyrphoros Risk", - "instant": true - }, - { - "refId": "F", - "expr": "(((max(ananke_ups_on_battery{job=\"ananke-power\",source=\"Statera\"}) or on() vector(0)) > bool 0) * (1 + ((max(ananke_ups_runtime_seconds{job=\"ananke-power\",source=\"Statera\"}) or on() vector(0)) < bool (3 * (clamp_min(max(ananke_ups_threshold_seconds{job=\"ananke-power\",source=\"Statera\"}), 1)))) + ((max(ananke_ups_runtime_seconds{job=\"ananke-power\",source=\"Statera\"}) or on() vector(0)) < bool (2 * (clamp_min(max(ananke_ups_threshold_seconds{job=\"ananke-power\",source=\"Statera\"}), 1)))))) or on() vector(0)", - "legendFormat": "Statera Risk", + "legendFormat": "Runtime", "instant": true } ], "fieldConfig": { "defaults": { + "color": { + "mode": "thresholds" + }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { - "color": "green", + "color": "rgba(115, 115, 115, 1)", "value": null }, { - "color": "yellow", + "color": "green", "value": 1 - }, - { - "color": "orange", - "value": 2 - }, - { - "color": "red", - "value": 3 } ] }, - "color": { - "mode": "thresholds" - } + "unit": "none", + "custom": { + "displayMode": "auto" + }, + "decimals": 1 }, "overrides": [ { "matcher": { - "id": "byRegexp", - "options": ".*Draw$" + "id": "byName", + "options": "Draw" }, "properties": [ { @@ -1165,8 +1138,8 @@ }, { "matcher": { - "id": "byRegexp", - "options": ".*Runtime$" + "id": "byName", + "options": "Runtime" }, "properties": [ { @@ -1178,326 +1151,19 @@ ] }, "options": { - "inlineEditing": false, - "showAdvancedTypes": true, - "panZoom": false, - "infinitePan": false, - "root": { - "type": "frame", - "name": "UPS Current Load frame", - "elements": [ - { - "type": "text", - "name": "Cell 1 label", - "constraint": { - "horizontal": "left", - "vertical": "top" - }, - "placement": { - "left": 12, - "top": 18, - "width": 146, - "height": 14 - }, - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - }, - "config": { - "align": "center", - "valign": "middle", - "size": 12, - "color": { - "fixed": "text" - }, - "text": { - "fixed": "Pyrphoros Draw" - } - }, - "links": [] - }, - { - "type": "metric-value", - "name": "Cell 1", - "constraint": { - "horizontal": "left", - "vertical": "top" - }, - "placement": { - "left": 12, - "top": 32, - "width": 146, - "height": 42 - }, - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - }, - "config": { - "align": "center", - "valign": "middle", - "size": 26, - "color": { - "field": "Pyrphoros Risk", - "fixed": "text" - }, - "text": { - "mode": "field", - "field": "Pyrphoros Draw", - "fixed": "" - } - }, - "links": [] - }, - { - "type": "text", - "name": "Cell 2 label", - "constraint": { - "horizontal": "left", - "vertical": "top" - }, - "placement": { - "left": 168, - "top": 18, - "width": 146, - "height": 14 - }, - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - }, - "config": { - "align": "center", - "valign": "middle", - "size": 12, - "color": { - "fixed": "text" - }, - "text": { - "fixed": "Pyrphoros Runtime" - } - }, - "links": [] - }, - { - "type": "metric-value", - "name": "Cell 2", - "constraint": { - "horizontal": "left", - "vertical": "top" - }, - "placement": { - "left": 168, - "top": 32, - "width": 146, - "height": 42 - }, - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - }, - "config": { - "align": "center", - "valign": "middle", - "size": 26, - "color": { - "field": "Pyrphoros Risk", - "fixed": "text" - }, - "text": { - "mode": "field", - "field": "Pyrphoros Runtime", - "fixed": "" - } - }, - "links": [] - }, - { - "type": "text", - "name": "Cell 3 label", - "constraint": { - "horizontal": "left", - "vertical": "top" - }, - "placement": { - "left": 12, - "top": 76, - "width": 146, - "height": 14 - }, - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - }, - "config": { - "align": "center", - "valign": "middle", - "size": 12, - "color": { - "fixed": "text" - }, - "text": { - "fixed": "Statera Draw" - } - }, - "links": [] - }, - { - "type": "metric-value", - "name": "Cell 3", - "constraint": { - "horizontal": "left", - "vertical": "top" - }, - "placement": { - "left": 12, - "top": 90, - "width": 146, - "height": 42 - }, - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - }, - "config": { - "align": "center", - "valign": "middle", - "size": 26, - "color": { - "field": "Statera Risk", - "fixed": "text" - }, - "text": { - "mode": "field", - "field": "Statera Draw", - "fixed": "" - } - }, - "links": [] - }, - { - "type": "text", - "name": "Cell 4 label", - "constraint": { - "horizontal": "left", - "vertical": "top" - }, - "placement": { - "left": 168, - "top": 76, - "width": 146, - "height": 14 - }, - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - }, - "config": { - "align": "center", - "valign": "middle", - "size": 12, - "color": { - "fixed": "text" - }, - "text": { - "fixed": "Statera Runtime" - } - }, - "links": [] - }, - { - "type": "metric-value", - "name": "Cell 4", - "constraint": { - "horizontal": "left", - "vertical": "top" - }, - "placement": { - "left": 168, - "top": 90, - "width": 146, - "height": 42 - }, - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - }, - "config": { - "align": "center", - "valign": "middle", - "size": 26, - "color": { - "field": "Statera Risk", - "fixed": "text" - }, - "text": { - "mode": "field", - "field": "Statera Runtime", - "fixed": "" - } - }, - "links": [] - } + "colorMode": "value", + "graphMode": "none", + "justifyMode": "center", + "reduceOptions": { + "calcs": [ + "lastNotNull" ], - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - } - } + "fields": "", + "values": false + }, + "textMode": "name_and_value", + "orientation": "horizontal", + "wideLayout": true }, "links": [ { @@ -1505,8 +1171,110 @@ "url": "/d/atlas-power", "targetBlank": true } + ] + }, + { + "id": 144, + "type": "stat", + "title": "Statera UPS Current", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 2, + "w": 6, + "x": 0, + "y": 9 + }, + "targets": [ + { + "refId": "A", + "expr": "max((ananke_ups_load_percent{job=\"ananke-power\",source=\"Statera\"} * ananke_ups_power_nominal_watts{job=\"ananke-power\",source=\"Statera\"}) / 100) or on() vector(0)", + "legendFormat": "Draw", + "instant": true + }, + { + "refId": "B", + "expr": "max(ananke_ups_runtime_seconds{job=\"ananke-power\",source=\"Statera\"}) or on() vector(0)", + "legendFormat": "Runtime", + "instant": true + } ], - "description": "Per-UPS live snapshot in a centered 2x2 layout. Color turns yellow when discharging, orange below 3x graceful shutdown runtime, red below 2x." + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(115, 115, 115, 1)", + "value": null + }, + { + "color": "green", + "value": 1 + } + ] + }, + "unit": "none", + "custom": { + "displayMode": "auto" + }, + "decimals": 1 + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Draw" + }, + "properties": [ + { + "id": "unit", + "value": "watt" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Runtime" + }, + "properties": [ + { + "id": "unit", + "value": "s" + } + ] + } + ] + }, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "center", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "name_and_value", + "orientation": "horizontal", + "wideLayout": true + }, + "links": [ + { + "title": "Open atlas-power dashboard", + "url": "/d/atlas-power", + "targetBlank": true + } + ] }, { "id": 41, @@ -1564,14 +1332,14 @@ }, { "id": 42, - "type": "canvas", - "title": "Current Enclosure Climate", + "type": "stat", + "title": "Current Enclosure Temperature", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, + "h": 3, "w": 6, "x": 0, "y": 12 @@ -1580,30 +1348,21 @@ { "refId": "A", "expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)) or on() vector(0)", - "legendFormat": "Temp \u00b0C", + "legendFormat": "C", "instant": true }, { "refId": "B", "expr": "max((max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)) * 9 / 5 + 32) or on() vector(0)", - "legendFormat": "Temp \u00b0F", - "instant": true - }, - { - "refId": "C", - "expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent != 0)) or on() vector(0)", - "legendFormat": "Humidity", - "instant": true - }, - { - "refId": "D", - "expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa != 0)) or on() vector(0)", - "legendFormat": "Pressure", + "legendFormat": "F", "instant": true } ], "fieldConfig": { "defaults": { + "color": { + "mode": "thresholds" + }, "mappings": [], "thresholds": { "mode": "absolute", @@ -1618,15 +1377,16 @@ } ] }, - "color": { - "mode": "thresholds" + "unit": "none", + "custom": { + "displayMode": "auto" } }, "overrides": [ { "matcher": { "id": "byName", - "options": "Temp \u00b0C" + "options": "C" }, "properties": [ { @@ -1638,7 +1398,7 @@ { "matcher": { "id": "byName", - "options": "Temp \u00b0F" + "options": "F" }, "properties": [ { @@ -1646,23 +1406,101 @@ "value": "fahrenheit" } ] + } + ] + }, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "center", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "value", + "orientation": "horizontal", + "wideLayout": true + }, + "links": [ + { + "title": "Open atlas-power dashboard", + "url": "/d/atlas-power", + "targetBlank": true + } + ] + }, + { + "id": 143, + "type": "stat", + "title": "Current Enclosure Climate", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 15 + }, + "targets": [ + { + "refId": "A", + "expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent != 0)) or on() vector(0)", + "legendFormat": "RH", + "instant": true + }, + { + "refId": "B", + "expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa != 0)) or on() vector(0)", + "legendFormat": "P", + "instant": true + } + ], + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(115, 115, 115, 1)", + "value": null + }, + { + "color": "green", + "value": 1 + } + ] + }, + "unit": "none", + "custom": { + "displayMode": "auto" + } + }, + "overrides": [ { "matcher": { "id": "byName", - "options": "Humidity" + "options": "RH" }, "properties": [ { "id": "unit", - "value": "percent" + "value": "suffix:%RH" } ] }, { "matcher": { "id": "byName", - "options": "Pressure" + "options": "P" }, "properties": [ { @@ -1674,326 +1512,19 @@ ] }, "options": { - "inlineEditing": false, - "showAdvancedTypes": true, - "panZoom": false, - "infinitePan": false, - "root": { - "type": "frame", - "name": "Current Enclosure Climate frame", - "elements": [ - { - "type": "text", - "name": "Cell 1 label", - "constraint": { - "horizontal": "left", - "vertical": "top" - }, - "placement": { - "left": 12, - "top": 18, - "width": 146, - "height": 14 - }, - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - }, - "config": { - "align": "center", - "valign": "middle", - "size": 12, - "color": { - "fixed": "text" - }, - "text": { - "fixed": "Temp \u00b0C" - } - }, - "links": [] - }, - { - "type": "metric-value", - "name": "Cell 1", - "constraint": { - "horizontal": "left", - "vertical": "top" - }, - "placement": { - "left": 12, - "top": 32, - "width": 146, - "height": 42 - }, - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - }, - "config": { - "align": "center", - "valign": "middle", - "size": 30, - "color": { - "field": "Temp \u00b0C", - "fixed": "text" - }, - "text": { - "mode": "field", - "field": "Temp \u00b0C", - "fixed": "" - } - }, - "links": [] - }, - { - "type": "text", - "name": "Cell 2 label", - "constraint": { - "horizontal": "left", - "vertical": "top" - }, - "placement": { - "left": 168, - "top": 18, - "width": 146, - "height": 14 - }, - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - }, - "config": { - "align": "center", - "valign": "middle", - "size": 12, - "color": { - "fixed": "text" - }, - "text": { - "fixed": "Temp \u00b0F" - } - }, - "links": [] - }, - { - "type": "metric-value", - "name": "Cell 2", - "constraint": { - "horizontal": "left", - "vertical": "top" - }, - "placement": { - "left": 168, - "top": 32, - "width": 146, - "height": 42 - }, - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - }, - "config": { - "align": "center", - "valign": "middle", - "size": 30, - "color": { - "field": "Temp \u00b0F", - "fixed": "text" - }, - "text": { - "mode": "field", - "field": "Temp \u00b0F", - "fixed": "" - } - }, - "links": [] - }, - { - "type": "text", - "name": "Cell 3 label", - "constraint": { - "horizontal": "left", - "vertical": "top" - }, - "placement": { - "left": 12, - "top": 76, - "width": 146, - "height": 14 - }, - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - }, - "config": { - "align": "center", - "valign": "middle", - "size": 12, - "color": { - "fixed": "text" - }, - "text": { - "fixed": "Humidity" - } - }, - "links": [] - }, - { - "type": "metric-value", - "name": "Cell 3", - "constraint": { - "horizontal": "left", - "vertical": "top" - }, - "placement": { - "left": 12, - "top": 90, - "width": 146, - "height": 42 - }, - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - }, - "config": { - "align": "center", - "valign": "middle", - "size": 30, - "color": { - "field": "Humidity", - "fixed": "text" - }, - "text": { - "mode": "field", - "field": "Humidity", - "fixed": "" - } - }, - "links": [] - }, - { - "type": "text", - "name": "Cell 4 label", - "constraint": { - "horizontal": "left", - "vertical": "top" - }, - "placement": { - "left": 168, - "top": 76, - "width": 146, - "height": 14 - }, - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - }, - "config": { - "align": "center", - "valign": "middle", - "size": 12, - "color": { - "fixed": "text" - }, - "text": { - "fixed": "Pressure" - } - }, - "links": [] - }, - { - "type": "metric-value", - "name": "Cell 4", - "constraint": { - "horizontal": "left", - "vertical": "top" - }, - "placement": { - "left": 168, - "top": 90, - "width": 146, - "height": 42 - }, - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - }, - "config": { - "align": "center", - "valign": "middle", - "size": 30, - "color": { - "field": "Pressure", - "fixed": "text" - }, - "text": { - "mode": "field", - "field": "Pressure", - "fixed": "" - } - }, - "links": [] - } + "colorMode": "value", + "graphMode": "none", + "justifyMode": "center", + "reduceOptions": { + "calcs": [ + "lastNotNull" ], - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - } - } + "fields": "", + "values": false + }, + "textMode": "value", + "orientation": "horizontal", + "wideLayout": true }, "links": [ { @@ -2001,8 +1532,7 @@ "url": "/d/atlas-power", "targetBlank": true } - ], - "description": "Current tent values in a fixed 2x2 layout: Temp \u00b0C / Temp \u00b0F / Humidity / Pressure." + ] }, { "id": 43, @@ -2067,7 +1597,15 @@ ], "fieldConfig": { "defaults": { - "unit": "none" + "unit": "none", + "custom": { + "drawStyle": "line", + "lineInterpolation": "linear", + "lineWidth": 2, + "fillOpacity": 10, + "showPoints": "never", + "spanNulls": true + } }, "overrides": [ { diff --git a/services/monitoring/grafana-dashboard-overview.yaml b/services/monitoring/grafana-dashboard-overview.yaml index b6e59c80..9266636b 100644 --- a/services/monitoring/grafana-dashboard-overview.yaml +++ b/services/monitoring/grafana-dashboard-overview.yaml @@ -1081,14 +1081,14 @@ data: }, { "id": 40, - "type": "canvas", - "title": "UPS Current Load", + "type": "stat", + "title": "Pyrphoros UPS Current", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 5, + "h": 2, "w": 6, "x": 0, "y": 7 @@ -1097,73 +1097,46 @@ data: { "refId": "A", "expr": "max((ananke_ups_load_percent{job=\"ananke-power\",source=\"Pyrphoros\"} * ananke_ups_power_nominal_watts{job=\"ananke-power\",source=\"Pyrphoros\"}) / 100) or on() vector(0)", - "legendFormat": "Pyrphoros Draw", + "legendFormat": "Draw", "instant": true }, { "refId": "B", "expr": "max(ananke_ups_runtime_seconds{job=\"ananke-power\",source=\"Pyrphoros\"}) or on() vector(0)", - "legendFormat": "Pyrphoros Runtime", - "instant": true - }, - { - "refId": "C", - "expr": "max((ananke_ups_load_percent{job=\"ananke-power\",source=\"Statera\"} * ananke_ups_power_nominal_watts{job=\"ananke-power\",source=\"Statera\"}) / 100) or on() vector(0)", - "legendFormat": "Statera Draw", - "instant": true - }, - { - "refId": "D", - "expr": "max(ananke_ups_runtime_seconds{job=\"ananke-power\",source=\"Statera\"}) or on() vector(0)", - "legendFormat": "Statera Runtime", - "instant": true - }, - { - "refId": "E", - "expr": "(((max(ananke_ups_on_battery{job=\"ananke-power\",source=\"Pyrphoros\"}) or on() vector(0)) > bool 0) * (1 + ((max(ananke_ups_runtime_seconds{job=\"ananke-power\",source=\"Pyrphoros\"}) or on() vector(0)) < bool (3 * (clamp_min(max(ananke_ups_threshold_seconds{job=\"ananke-power\",source=\"Pyrphoros\"}), 1)))) + ((max(ananke_ups_runtime_seconds{job=\"ananke-power\",source=\"Pyrphoros\"}) or on() vector(0)) < bool (2 * (clamp_min(max(ananke_ups_threshold_seconds{job=\"ananke-power\",source=\"Pyrphoros\"}), 1)))))) or on() vector(0)", - "legendFormat": "Pyrphoros Risk", - "instant": true - }, - { - "refId": "F", - "expr": "(((max(ananke_ups_on_battery{job=\"ananke-power\",source=\"Statera\"}) or on() vector(0)) > bool 0) * (1 + ((max(ananke_ups_runtime_seconds{job=\"ananke-power\",source=\"Statera\"}) or on() vector(0)) < bool (3 * (clamp_min(max(ananke_ups_threshold_seconds{job=\"ananke-power\",source=\"Statera\"}), 1)))) + ((max(ananke_ups_runtime_seconds{job=\"ananke-power\",source=\"Statera\"}) or on() vector(0)) < bool (2 * (clamp_min(max(ananke_ups_threshold_seconds{job=\"ananke-power\",source=\"Statera\"}), 1)))))) or on() vector(0)", - "legendFormat": "Statera Risk", + "legendFormat": "Runtime", "instant": true } ], "fieldConfig": { "defaults": { + "color": { + "mode": "thresholds" + }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { - "color": "green", + "color": "rgba(115, 115, 115, 1)", "value": null }, { - "color": "yellow", + "color": "green", "value": 1 - }, - { - "color": "orange", - "value": 2 - }, - { - "color": "red", - "value": 3 } ] }, - "color": { - "mode": "thresholds" - } + "unit": "none", + "custom": { + "displayMode": "auto" + }, + "decimals": 1 }, "overrides": [ { "matcher": { - "id": "byRegexp", - "options": ".*Draw$" + "id": "byName", + "options": "Draw" }, "properties": [ { @@ -1174,8 +1147,8 @@ data: }, { "matcher": { - "id": "byRegexp", - "options": ".*Runtime$" + "id": "byName", + "options": "Runtime" }, "properties": [ { @@ -1187,326 +1160,19 @@ data: ] }, "options": { - "inlineEditing": false, - "showAdvancedTypes": true, - "panZoom": false, - "infinitePan": false, - "root": { - "type": "frame", - "name": "UPS Current Load frame", - "elements": [ - { - "type": "text", - "name": "Cell 1 label", - "constraint": { - "horizontal": "left", - "vertical": "top" - }, - "placement": { - "left": 12, - "top": 18, - "width": 146, - "height": 14 - }, - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - }, - "config": { - "align": "center", - "valign": "middle", - "size": 12, - "color": { - "fixed": "text" - }, - "text": { - "fixed": "Pyrphoros Draw" - } - }, - "links": [] - }, - { - "type": "metric-value", - "name": "Cell 1", - "constraint": { - "horizontal": "left", - "vertical": "top" - }, - "placement": { - "left": 12, - "top": 32, - "width": 146, - "height": 42 - }, - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - }, - "config": { - "align": "center", - "valign": "middle", - "size": 26, - "color": { - "field": "Pyrphoros Risk", - "fixed": "text" - }, - "text": { - "mode": "field", - "field": "Pyrphoros Draw", - "fixed": "" - } - }, - "links": [] - }, - { - "type": "text", - "name": "Cell 2 label", - "constraint": { - "horizontal": "left", - "vertical": "top" - }, - "placement": { - "left": 168, - "top": 18, - "width": 146, - "height": 14 - }, - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - }, - "config": { - "align": "center", - "valign": "middle", - "size": 12, - "color": { - "fixed": "text" - }, - "text": { - "fixed": "Pyrphoros Runtime" - } - }, - "links": [] - }, - { - "type": "metric-value", - "name": "Cell 2", - "constraint": { - "horizontal": "left", - "vertical": "top" - }, - "placement": { - "left": 168, - "top": 32, - "width": 146, - "height": 42 - }, - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - }, - "config": { - "align": "center", - "valign": "middle", - "size": 26, - "color": { - "field": "Pyrphoros Risk", - "fixed": "text" - }, - "text": { - "mode": "field", - "field": "Pyrphoros Runtime", - "fixed": "" - } - }, - "links": [] - }, - { - "type": "text", - "name": "Cell 3 label", - "constraint": { - "horizontal": "left", - "vertical": "top" - }, - "placement": { - "left": 12, - "top": 76, - "width": 146, - "height": 14 - }, - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - }, - "config": { - "align": "center", - "valign": "middle", - "size": 12, - "color": { - "fixed": "text" - }, - "text": { - "fixed": "Statera Draw" - } - }, - "links": [] - }, - { - "type": "metric-value", - "name": "Cell 3", - "constraint": { - "horizontal": "left", - "vertical": "top" - }, - "placement": { - "left": 12, - "top": 90, - "width": 146, - "height": 42 - }, - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - }, - "config": { - "align": "center", - "valign": "middle", - "size": 26, - "color": { - "field": "Statera Risk", - "fixed": "text" - }, - "text": { - "mode": "field", - "field": "Statera Draw", - "fixed": "" - } - }, - "links": [] - }, - { - "type": "text", - "name": "Cell 4 label", - "constraint": { - "horizontal": "left", - "vertical": "top" - }, - "placement": { - "left": 168, - "top": 76, - "width": 146, - "height": 14 - }, - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - }, - "config": { - "align": "center", - "valign": "middle", - "size": 12, - "color": { - "fixed": "text" - }, - "text": { - "fixed": "Statera Runtime" - } - }, - "links": [] - }, - { - "type": "metric-value", - "name": "Cell 4", - "constraint": { - "horizontal": "left", - "vertical": "top" - }, - "placement": { - "left": 168, - "top": 90, - "width": 146, - "height": 42 - }, - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - }, - "config": { - "align": "center", - "valign": "middle", - "size": 26, - "color": { - "field": "Statera Risk", - "fixed": "text" - }, - "text": { - "mode": "field", - "field": "Statera Runtime", - "fixed": "" - } - }, - "links": [] - } + "colorMode": "value", + "graphMode": "none", + "justifyMode": "center", + "reduceOptions": { + "calcs": [ + "lastNotNull" ], - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - } - } + "fields": "", + "values": false + }, + "textMode": "name_and_value", + "orientation": "horizontal", + "wideLayout": true }, "links": [ { @@ -1514,8 +1180,110 @@ data: "url": "/d/atlas-power", "targetBlank": true } + ] + }, + { + "id": 144, + "type": "stat", + "title": "Statera UPS Current", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 2, + "w": 6, + "x": 0, + "y": 9 + }, + "targets": [ + { + "refId": "A", + "expr": "max((ananke_ups_load_percent{job=\"ananke-power\",source=\"Statera\"} * ananke_ups_power_nominal_watts{job=\"ananke-power\",source=\"Statera\"}) / 100) or on() vector(0)", + "legendFormat": "Draw", + "instant": true + }, + { + "refId": "B", + "expr": "max(ananke_ups_runtime_seconds{job=\"ananke-power\",source=\"Statera\"}) or on() vector(0)", + "legendFormat": "Runtime", + "instant": true + } ], - "description": "Per-UPS live snapshot in a centered 2x2 layout. Color turns yellow when discharging, orange below 3x graceful shutdown runtime, red below 2x." + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(115, 115, 115, 1)", + "value": null + }, + { + "color": "green", + "value": 1 + } + ] + }, + "unit": "none", + "custom": { + "displayMode": "auto" + }, + "decimals": 1 + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Draw" + }, + "properties": [ + { + "id": "unit", + "value": "watt" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Runtime" + }, + "properties": [ + { + "id": "unit", + "value": "s" + } + ] + } + ] + }, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "center", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "name_and_value", + "orientation": "horizontal", + "wideLayout": true + }, + "links": [ + { + "title": "Open atlas-power dashboard", + "url": "/d/atlas-power", + "targetBlank": true + } + ] }, { "id": 41, @@ -1573,14 +1341,14 @@ data: }, { "id": 42, - "type": "canvas", - "title": "Current Enclosure Climate", + "type": "stat", + "title": "Current Enclosure Temperature", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { - "h": 6, + "h": 3, "w": 6, "x": 0, "y": 12 @@ -1589,30 +1357,21 @@ data: { "refId": "A", "expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)) or on() vector(0)", - "legendFormat": "Temp \u00b0C", + "legendFormat": "C", "instant": true }, { "refId": "B", "expr": "max((max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)) * 9 / 5 + 32) or on() vector(0)", - "legendFormat": "Temp \u00b0F", - "instant": true - }, - { - "refId": "C", - "expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent != 0)) or on() vector(0)", - "legendFormat": "Humidity", - "instant": true - }, - { - "refId": "D", - "expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa != 0)) or on() vector(0)", - "legendFormat": "Pressure", + "legendFormat": "F", "instant": true } ], "fieldConfig": { "defaults": { + "color": { + "mode": "thresholds" + }, "mappings": [], "thresholds": { "mode": "absolute", @@ -1627,15 +1386,16 @@ data: } ] }, - "color": { - "mode": "thresholds" + "unit": "none", + "custom": { + "displayMode": "auto" } }, "overrides": [ { "matcher": { "id": "byName", - "options": "Temp \u00b0C" + "options": "C" }, "properties": [ { @@ -1647,7 +1407,7 @@ data: { "matcher": { "id": "byName", - "options": "Temp \u00b0F" + "options": "F" }, "properties": [ { @@ -1655,23 +1415,101 @@ data: "value": "fahrenheit" } ] + } + ] + }, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "center", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "value", + "orientation": "horizontal", + "wideLayout": true + }, + "links": [ + { + "title": "Open atlas-power dashboard", + "url": "/d/atlas-power", + "targetBlank": true + } + ] + }, + { + "id": 143, + "type": "stat", + "title": "Current Enclosure Climate", + "datasource": { + "type": "prometheus", + "uid": "atlas-vm" + }, + "gridPos": { + "h": 3, + "w": 6, + "x": 0, + "y": 15 + }, + "targets": [ + { + "refId": "A", + "expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent != 0)) or on() vector(0)", + "legendFormat": "RH", + "instant": true + }, + { + "refId": "B", + "expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa != 0)) or on() vector(0)", + "legendFormat": "P", + "instant": true + } + ], + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(115, 115, 115, 1)", + "value": null + }, + { + "color": "green", + "value": 1 + } + ] + }, + "unit": "none", + "custom": { + "displayMode": "auto" + } + }, + "overrides": [ { "matcher": { "id": "byName", - "options": "Humidity" + "options": "RH" }, "properties": [ { "id": "unit", - "value": "percent" + "value": "suffix:%RH" } ] }, { "matcher": { "id": "byName", - "options": "Pressure" + "options": "P" }, "properties": [ { @@ -1683,326 +1521,19 @@ data: ] }, "options": { - "inlineEditing": false, - "showAdvancedTypes": true, - "panZoom": false, - "infinitePan": false, - "root": { - "type": "frame", - "name": "Current Enclosure Climate frame", - "elements": [ - { - "type": "text", - "name": "Cell 1 label", - "constraint": { - "horizontal": "left", - "vertical": "top" - }, - "placement": { - "left": 12, - "top": 18, - "width": 146, - "height": 14 - }, - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - }, - "config": { - "align": "center", - "valign": "middle", - "size": 12, - "color": { - "fixed": "text" - }, - "text": { - "fixed": "Temp \u00b0C" - } - }, - "links": [] - }, - { - "type": "metric-value", - "name": "Cell 1", - "constraint": { - "horizontal": "left", - "vertical": "top" - }, - "placement": { - "left": 12, - "top": 32, - "width": 146, - "height": 42 - }, - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - }, - "config": { - "align": "center", - "valign": "middle", - "size": 30, - "color": { - "field": "Temp \u00b0C", - "fixed": "text" - }, - "text": { - "mode": "field", - "field": "Temp \u00b0C", - "fixed": "" - } - }, - "links": [] - }, - { - "type": "text", - "name": "Cell 2 label", - "constraint": { - "horizontal": "left", - "vertical": "top" - }, - "placement": { - "left": 168, - "top": 18, - "width": 146, - "height": 14 - }, - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - }, - "config": { - "align": "center", - "valign": "middle", - "size": 12, - "color": { - "fixed": "text" - }, - "text": { - "fixed": "Temp \u00b0F" - } - }, - "links": [] - }, - { - "type": "metric-value", - "name": "Cell 2", - "constraint": { - "horizontal": "left", - "vertical": "top" - }, - "placement": { - "left": 168, - "top": 32, - "width": 146, - "height": 42 - }, - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - }, - "config": { - "align": "center", - "valign": "middle", - "size": 30, - "color": { - "field": "Temp \u00b0F", - "fixed": "text" - }, - "text": { - "mode": "field", - "field": "Temp \u00b0F", - "fixed": "" - } - }, - "links": [] - }, - { - "type": "text", - "name": "Cell 3 label", - "constraint": { - "horizontal": "left", - "vertical": "top" - }, - "placement": { - "left": 12, - "top": 76, - "width": 146, - "height": 14 - }, - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - }, - "config": { - "align": "center", - "valign": "middle", - "size": 12, - "color": { - "fixed": "text" - }, - "text": { - "fixed": "Humidity" - } - }, - "links": [] - }, - { - "type": "metric-value", - "name": "Cell 3", - "constraint": { - "horizontal": "left", - "vertical": "top" - }, - "placement": { - "left": 12, - "top": 90, - "width": 146, - "height": 42 - }, - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - }, - "config": { - "align": "center", - "valign": "middle", - "size": 30, - "color": { - "field": "Humidity", - "fixed": "text" - }, - "text": { - "mode": "field", - "field": "Humidity", - "fixed": "" - } - }, - "links": [] - }, - { - "type": "text", - "name": "Cell 4 label", - "constraint": { - "horizontal": "left", - "vertical": "top" - }, - "placement": { - "left": 168, - "top": 76, - "width": 146, - "height": 14 - }, - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - }, - "config": { - "align": "center", - "valign": "middle", - "size": 12, - "color": { - "fixed": "text" - }, - "text": { - "fixed": "Pressure" - } - }, - "links": [] - }, - { - "type": "metric-value", - "name": "Cell 4", - "constraint": { - "horizontal": "left", - "vertical": "top" - }, - "placement": { - "left": 168, - "top": 90, - "width": 146, - "height": 42 - }, - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - }, - "config": { - "align": "center", - "valign": "middle", - "size": 30, - "color": { - "field": "Pressure", - "fixed": "text" - }, - "text": { - "mode": "field", - "field": "Pressure", - "fixed": "" - } - }, - "links": [] - } + "colorMode": "value", + "graphMode": "none", + "justifyMode": "center", + "reduceOptions": { + "calcs": [ + "lastNotNull" ], - "background": { - "color": { - "fixed": "transparent" - } - }, - "border": { - "color": { - "fixed": "transparent" - } - } - } + "fields": "", + "values": false + }, + "textMode": "value", + "orientation": "horizontal", + "wideLayout": true }, "links": [ { @@ -2010,8 +1541,7 @@ data: "url": "/d/atlas-power", "targetBlank": true } - ], - "description": "Current tent values in a fixed 2x2 layout: Temp \u00b0C / Temp \u00b0F / Humidity / Pressure." + ] }, { "id": 43, @@ -2076,7 +1606,15 @@ data: ], "fieldConfig": { "defaults": { - "unit": "none" + "unit": "none", + "custom": { + "drawStyle": "line", + "lineInterpolation": "linear", + "lineWidth": 2, + "fillOpacity": 10, + "showPoints": "never", + "spanNulls": true + } }, "overrides": [ {