monitoring: render ups/climate/fan panels as row tables
This commit is contained in:
parent
3271369e2d
commit
ac71b4621c
@ -594,6 +594,47 @@ CLIMATE_FAN_OUTSIDE_INLET_SERIES = (
|
||||
CLIMATE_FAN_INTERIOR_SERIES = (
|
||||
f'max without ({CLIMATE_DEDUP_LABELS}) (typhon_fan_speed_level{{fan_group=~"interior|unknown"}})'
|
||||
)
|
||||
|
||||
|
||||
def with_metric_label(expr, metric):
|
||||
return f'label_replace(({expr}), "metric", "{metric}", "__name__", ".*")'
|
||||
|
||||
|
||||
def with_ups_metric_labels(expr, ups, metric):
|
||||
return (
|
||||
f'label_replace('
|
||||
f'label_replace(({expr}), "ups", "{ups}", "__name__", ".*"), '
|
||||
f'"metric", "{metric}", "__name__", ".*"'
|
||||
f')'
|
||||
)
|
||||
|
||||
|
||||
CLIMATE_CURRENT_ROW_EXPR = " or ".join(
|
||||
[
|
||||
with_metric_label(CLIMATE_TEMP_MAX, "Temp °C"),
|
||||
with_metric_label(CLIMATE_TEMP_FAHRENHEIT_MAX, "Temp °F"),
|
||||
with_metric_label(CLIMATE_HUMIDITY_MAX, "Humidity"),
|
||||
with_metric_label(CLIMATE_PRESSURE_CURRENT, "Pressure"),
|
||||
]
|
||||
)
|
||||
CLIMATE_FAN_CURRENT_ROW_EXPR = " or ".join(
|
||||
[
|
||||
with_metric_label(f"round({CLIMATE_FAN_OUTLET_CURRENT})", "Outlet"),
|
||||
with_metric_label(f"round({CLIMATE_FAN_INSIDE_INLET_CURRENT})", "Inlet In"),
|
||||
with_metric_label(f"round({CLIMATE_FAN_OUTSIDE_INLET_CURRENT})", "Inlet Out"),
|
||||
with_metric_label(f"round({CLIMATE_FAN_INTERIOR_CURRENT})", "Interior"),
|
||||
]
|
||||
)
|
||||
UPS_CURRENT_ROW_EXPR = " or ".join(
|
||||
[
|
||||
with_ups_metric_labels(ANANKE_UPS_DRAW_WATTS_DB, ANANKE_UPS_DB_NAME, "Draw (W)"),
|
||||
with_ups_metric_labels(ANANKE_UPS_RUNTIME_DB, ANANKE_UPS_DB_NAME, "Discharge"),
|
||||
with_ups_metric_labels(ANANKE_UPS_ON_BATTERY_DB, ANANKE_UPS_DB_NAME, "Status"),
|
||||
with_ups_metric_labels(ANANKE_UPS_DRAW_WATTS_TETHYS, ANANKE_UPS_TETHYS_NAME, "Draw (W)"),
|
||||
with_ups_metric_labels(ANANKE_UPS_RUNTIME_TETHYS, ANANKE_UPS_TETHYS_NAME, "Discharge"),
|
||||
with_ups_metric_labels(ANANKE_UPS_ON_BATTERY_TETHYS, ANANKE_UPS_TETHYS_NAME, "Status"),
|
||||
]
|
||||
)
|
||||
POSTGRES_CONN_USED = (
|
||||
'label_replace(sum(pg_stat_activity_count), "conn", "used", "__name__", ".*") '
|
||||
'or label_replace(max(pg_settings_max_connections), "conn", "max", "__name__", ".*")'
|
||||
@ -861,6 +902,10 @@ def table_panel(
|
||||
filterable=True,
|
||||
footer=None,
|
||||
format=None,
|
||||
targets=None,
|
||||
field_overrides=None,
|
||||
links=None,
|
||||
description=None,
|
||||
):
|
||||
"""Return a Grafana table panel definition."""
|
||||
# Optional PromQL subquery helpers in expr: share(), etc.
|
||||
@ -870,21 +915,29 @@ def table_panel(
|
||||
if footer is not None:
|
||||
panel_options["footer"] = footer
|
||||
field_defaults = {"unit": unit, "custom": {"filterable": filterable}}
|
||||
target = {"expr": expr, "refId": "A", **({"instant": True} if instant else {})}
|
||||
target_list = targets if targets is not None else [{"expr": expr, "refId": "A"}]
|
||||
if instant:
|
||||
for target in target_list:
|
||||
target.setdefault("instant", True)
|
||||
if format:
|
||||
target["format"] = format
|
||||
for target in target_list:
|
||||
target.setdefault("format", format)
|
||||
panel = {
|
||||
"id": panel_id,
|
||||
"type": "table",
|
||||
"title": title,
|
||||
"datasource": PROM_DS,
|
||||
"gridPos": grid,
|
||||
"targets": [target],
|
||||
"fieldConfig": {"defaults": field_defaults, "overrides": []},
|
||||
"targets": target_list,
|
||||
"fieldConfig": {"defaults": field_defaults, "overrides": field_overrides or []},
|
||||
"options": panel_options,
|
||||
}
|
||||
if transformations:
|
||||
panel["transformations"] = transformations
|
||||
if links:
|
||||
panel["links"] = links
|
||||
if description:
|
||||
panel["description"] = description
|
||||
return panel
|
||||
|
||||
|
||||
@ -1344,54 +1397,23 @@ def build_overview():
|
||||
]
|
||||
|
||||
panels.append(
|
||||
stat_panel(
|
||||
table_panel(
|
||||
40,
|
||||
"UPS Current Load",
|
||||
None,
|
||||
UPS_CURRENT_ROW_EXPR,
|
||||
{"h": 5, "w": 6, "x": 0, "y": 7},
|
||||
unit="none",
|
||||
decimals=1,
|
||||
text_mode="name_and_value",
|
||||
targets=[
|
||||
{"refId": "A", "expr": ANANKE_UPS_DRAW_WATTS_DB, "legendFormat": f"{ANANKE_UPS_DB_NAME} Draw (W)", "instant": True},
|
||||
{"refId": "B", "expr": ANANKE_UPS_RUNTIME_DB, "legendFormat": f"{ANANKE_UPS_DB_NAME} Discharge", "instant": True},
|
||||
{"refId": "C", "expr": ANANKE_UPS_ON_BATTERY_DB, "legendFormat": f"{ANANKE_UPS_DB_NAME} Status", "instant": True},
|
||||
{"refId": "D", "expr": ANANKE_UPS_DRAW_WATTS_TETHYS, "legendFormat": f"{ANANKE_UPS_TETHYS_NAME} Draw (W)", "instant": True},
|
||||
{"refId": "E", "expr": ANANKE_UPS_RUNTIME_TETHYS, "legendFormat": f"{ANANKE_UPS_TETHYS_NAME} Discharge", "instant": True},
|
||||
{"refId": "F", "expr": ANANKE_UPS_ON_BATTERY_TETHYS, "legendFormat": f"{ANANKE_UPS_TETHYS_NAME} Status", "instant": True},
|
||||
instant=True,
|
||||
transformations=[
|
||||
{"id": "labelsToFields", "options": {"mode": "columns", "valueLabel": "metric"}},
|
||||
{"id": "organize", "options": {"excludeByName": {"Time": True}}},
|
||||
],
|
||||
field_overrides=[
|
||||
{
|
||||
"matcher": {"id": "byName", "options": f"{ANANKE_UPS_DB_NAME} Draw (W)"},
|
||||
"properties": [{"id": "unit", "value": "watt"}, {"id": "description", "value": f"Attached node: {ANANKE_UPS_DB_NODE}"}],
|
||||
},
|
||||
{
|
||||
"matcher": {"id": "byName", "options": f"{ANANKE_UPS_TETHYS_NAME} Draw (W)"},
|
||||
"properties": [{"id": "unit", "value": "watt"}, {"id": "description", "value": f"Attached node: {ANANKE_UPS_TETHYS_NODE}"}],
|
||||
},
|
||||
{
|
||||
"matcher": {"id": "byName", "options": f"{ANANKE_UPS_DB_NAME} Discharge"},
|
||||
"properties": [{"id": "unit", "value": "s"}, {"id": "description", "value": f"Attached node: {ANANKE_UPS_DB_NODE}"}],
|
||||
},
|
||||
{
|
||||
"matcher": {"id": "byName", "options": f"{ANANKE_UPS_TETHYS_NAME} Discharge"},
|
||||
"properties": [{"id": "unit", "value": "s"}, {"id": "description", "value": f"Attached node: {ANANKE_UPS_TETHYS_NODE}"}],
|
||||
},
|
||||
{
|
||||
"matcher": {"id": "byName", "options": f"{ANANKE_UPS_DB_NAME} Status"},
|
||||
"properties": [{"id": "mappings", "value": status_mapping}, {"id": "description", "value": f"Attached node: {ANANKE_UPS_DB_NODE}"}],
|
||||
},
|
||||
{
|
||||
"matcher": {"id": "byName", "options": f"{ANANKE_UPS_TETHYS_NAME} Status"},
|
||||
"properties": [{"id": "mappings", "value": status_mapping}, {"id": "description", "value": f"Attached node: {ANANKE_UPS_TETHYS_NODE}"}],
|
||||
},
|
||||
{"matcher": {"id": "byName", "options": "Draw (W)"}, "properties": [{"id": "unit", "value": "watt"}]},
|
||||
{"matcher": {"id": "byName", "options": "Discharge"}, "properties": [{"id": "unit", "value": "s"}]},
|
||||
{"matcher": {"id": "byName", "options": "Status"}, "properties": [{"id": "mappings", "value": status_mapping}]},
|
||||
],
|
||||
links=link_to("atlas-power"),
|
||||
description="Per-UPS live snapshot: current draw, discharge, and charging/discharging status.",
|
||||
orientation="horizontal",
|
||||
wide_layout=False,
|
||||
graph_mode="none",
|
||||
justify_mode="auto",
|
||||
description="Per-UPS two-row snapshot: draw (W), discharge runtime, and status.",
|
||||
)
|
||||
)
|
||||
panels.append(
|
||||
@ -1412,19 +1434,15 @@ def build_overview():
|
||||
)
|
||||
)
|
||||
panels.append(
|
||||
stat_panel(
|
||||
table_panel(
|
||||
42,
|
||||
"Current Climate",
|
||||
None,
|
||||
CLIMATE_CURRENT_ROW_EXPR,
|
||||
{"h": 6, "w": 6, "x": 0, "y": 12},
|
||||
unit="none",
|
||||
decimals=2,
|
||||
text_mode="name_and_value",
|
||||
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},
|
||||
instant=True,
|
||||
transformations=[
|
||||
{"id": "labelsToFields", "options": {"mode": "columns", "valueLabel": "metric"}},
|
||||
{"id": "organize", "options": {"excludeByName": {"Time": True}}},
|
||||
],
|
||||
field_overrides=[
|
||||
{"matcher": {"id": "byName", "options": "Temp °C"}, "properties": [{"id": "unit", "value": "celsius"}]},
|
||||
@ -1433,11 +1451,7 @@ def build_overview():
|
||||
{"matcher": {"id": "byName", "options": "Pressure"}, "properties": [{"id": "unit", "value": "suffix:kPa"}]},
|
||||
],
|
||||
links=link_to("atlas-power"),
|
||||
description="Current tent values on one row: temperature (C/F), humidity (RH), and pressure proxy (VPD).",
|
||||
orientation="horizontal",
|
||||
wide_layout=False,
|
||||
graph_mode="none",
|
||||
justify_mode="auto",
|
||||
description="Single-row climate snapshot: Temp °C, Temp °F, Humidity, Pressure.",
|
||||
)
|
||||
)
|
||||
panels.append(
|
||||
@ -1476,33 +1490,24 @@ def build_overview():
|
||||
)
|
||||
)
|
||||
panels.append(
|
||||
stat_panel(
|
||||
table_panel(
|
||||
140,
|
||||
"Fan Activity",
|
||||
None,
|
||||
CLIMATE_FAN_CURRENT_ROW_EXPR,
|
||||
{"h": 6, "w": 6, "x": 12, "y": 12},
|
||||
unit="none",
|
||||
decimals=0,
|
||||
text_mode="name_and_value",
|
||||
targets=[
|
||||
{"refId": "A", "expr": f"round({CLIMATE_FAN_OUTLET_CURRENT})", "legendFormat": "Outlet", "instant": True},
|
||||
{"refId": "B", "expr": f"round({CLIMATE_FAN_INSIDE_INLET_CURRENT})", "legendFormat": "Inlet In", "instant": True},
|
||||
{"refId": "C", "expr": f"round({CLIMATE_FAN_OUTSIDE_INLET_CURRENT})", "legendFormat": "Inlet Out", "instant": True},
|
||||
{"refId": "D", "expr": f"round({CLIMATE_FAN_INTERIOR_CURRENT})", "legendFormat": "Interior", "instant": True},
|
||||
instant=True,
|
||||
transformations=[
|
||||
{"id": "labelsToFields", "options": {"mode": "columns", "valueLabel": "metric"}},
|
||||
{"id": "organize", "options": {"excludeByName": {"Time": True}}},
|
||||
],
|
||||
field_overrides=[
|
||||
{"matcher": {"id": "byName", "options": "Outlet"}, "properties": [{"id": "decimals", "value": 0}]},
|
||||
{"matcher": {"id": "byName", "options": "Inlet In"}, "properties": [{"id": "decimals", "value": 0}]},
|
||||
{"matcher": {"id": "byName", "options": "Inlet Out"}, "properties": [{"id": "decimals", "value": 0}]},
|
||||
{"matcher": {"id": "byName", "options": "Interior"}, "properties": [{"id": "decimals", "value": 0}]},
|
||||
],
|
||||
thresholds={
|
||||
"mode": "absolute",
|
||||
"steps": [
|
||||
{"color": "green", "value": None},
|
||||
{"color": "yellow", "value": 7},
|
||||
{"color": "red", "value": 9},
|
||||
],
|
||||
},
|
||||
links=link_to("atlas-power"),
|
||||
orientation="horizontal",
|
||||
wide_layout=False,
|
||||
graph_mode="none",
|
||||
justify_mode="auto",
|
||||
description="Single-row fan snapshot: outlet, inlet in, inlet out, interior (0-10).",
|
||||
)
|
||||
)
|
||||
panels.append(
|
||||
@ -3248,54 +3253,23 @@ def build_power_dashboard():
|
||||
]
|
||||
|
||||
panels.append(
|
||||
stat_panel(
|
||||
table_panel(
|
||||
1,
|
||||
"UPS Current Load",
|
||||
None,
|
||||
UPS_CURRENT_ROW_EXPR,
|
||||
{"h": 8, "w": 12, "x": 0, "y": 0},
|
||||
unit="none",
|
||||
decimals=1,
|
||||
text_mode="name_and_value",
|
||||
targets=[
|
||||
{"refId": "A", "expr": ANANKE_UPS_DRAW_WATTS_DB, "legendFormat": f"{ANANKE_UPS_DB_NAME} Draw (W)", "instant": True},
|
||||
{"refId": "B", "expr": ANANKE_UPS_RUNTIME_DB, "legendFormat": f"{ANANKE_UPS_DB_NAME} Discharge", "instant": True},
|
||||
{"refId": "C", "expr": ANANKE_UPS_ON_BATTERY_DB, "legendFormat": f"{ANANKE_UPS_DB_NAME} Status", "instant": True},
|
||||
{"refId": "D", "expr": ANANKE_UPS_DRAW_WATTS_TETHYS, "legendFormat": f"{ANANKE_UPS_TETHYS_NAME} Draw (W)", "instant": True},
|
||||
{"refId": "E", "expr": ANANKE_UPS_RUNTIME_TETHYS, "legendFormat": f"{ANANKE_UPS_TETHYS_NAME} Discharge", "instant": True},
|
||||
{"refId": "F", "expr": ANANKE_UPS_ON_BATTERY_TETHYS, "legendFormat": f"{ANANKE_UPS_TETHYS_NAME} Status", "instant": True},
|
||||
instant=True,
|
||||
transformations=[
|
||||
{"id": "labelsToFields", "options": {"mode": "columns", "valueLabel": "metric"}},
|
||||
{"id": "organize", "options": {"excludeByName": {"Time": True}}},
|
||||
],
|
||||
field_overrides=[
|
||||
{
|
||||
"matcher": {"id": "byName", "options": f"{ANANKE_UPS_DB_NAME} Draw (W)"},
|
||||
"properties": [{"id": "unit", "value": "watt"}, {"id": "description", "value": f"Attached node: {ANANKE_UPS_DB_NODE}"}],
|
||||
},
|
||||
{
|
||||
"matcher": {"id": "byName", "options": f"{ANANKE_UPS_TETHYS_NAME} Draw (W)"},
|
||||
"properties": [{"id": "unit", "value": "watt"}, {"id": "description", "value": f"Attached node: {ANANKE_UPS_TETHYS_NODE}"}],
|
||||
},
|
||||
{
|
||||
"matcher": {"id": "byName", "options": f"{ANANKE_UPS_DB_NAME} Discharge"},
|
||||
"properties": [{"id": "unit", "value": "s"}, {"id": "description", "value": f"Attached node: {ANANKE_UPS_DB_NODE}"}],
|
||||
},
|
||||
{
|
||||
"matcher": {"id": "byName", "options": f"{ANANKE_UPS_TETHYS_NAME} Discharge"},
|
||||
"properties": [{"id": "unit", "value": "s"}, {"id": "description", "value": f"Attached node: {ANANKE_UPS_TETHYS_NODE}"}],
|
||||
},
|
||||
{
|
||||
"matcher": {"id": "byName", "options": f"{ANANKE_UPS_DB_NAME} Status"},
|
||||
"properties": [{"id": "mappings", "value": status_mapping}, {"id": "description", "value": f"Attached node: {ANANKE_UPS_DB_NODE}"}],
|
||||
},
|
||||
{
|
||||
"matcher": {"id": "byName", "options": f"{ANANKE_UPS_TETHYS_NAME} Status"},
|
||||
"properties": [{"id": "mappings", "value": status_mapping}, {"id": "description", "value": f"Attached node: {ANANKE_UPS_TETHYS_NODE}"}],
|
||||
},
|
||||
{"matcher": {"id": "byName", "options": "Draw (W)"}, "properties": [{"id": "unit", "value": "watt"}]},
|
||||
{"matcher": {"id": "byName", "options": "Discharge"}, "properties": [{"id": "unit", "value": "s"}]},
|
||||
{"matcher": {"id": "byName", "options": "Status"}, "properties": [{"id": "mappings", "value": status_mapping}]},
|
||||
],
|
||||
orientation="horizontal",
|
||||
wide_layout=False,
|
||||
graph_mode="none",
|
||||
justify_mode="auto",
|
||||
description=(
|
||||
"Per-UPS live snapshot: current draw in watts, estimated battery runtime if discharge started now, and charging/discharging status."
|
||||
"Per-UPS two-row snapshot: draw (W), discharge runtime, and charging/discharging status."
|
||||
),
|
||||
)
|
||||
)
|
||||
@ -3317,31 +3291,23 @@ def build_power_dashboard():
|
||||
)
|
||||
)
|
||||
panels.append(
|
||||
stat_panel(
|
||||
table_panel(
|
||||
3,
|
||||
"Current Climate",
|
||||
None,
|
||||
CLIMATE_CURRENT_ROW_EXPR,
|
||||
{"h": 8, "w": 12, "x": 0, "y": 8},
|
||||
unit="none",
|
||||
decimals=2,
|
||||
text_mode="name_and_value",
|
||||
targets=[
|
||||
{"refId": "A", "expr": CLIMATE_TEMP_MAX, "legendFormat": "Tent Temp (°C)", "instant": True},
|
||||
{"refId": "B", "expr": CLIMATE_TEMP_FAHRENHEIT_MAX, "legendFormat": "Tent Temp (°F)", "instant": True},
|
||||
{"refId": "C", "expr": CLIMATE_HUMIDITY_MAX, "legendFormat": "Tent RH (%)", "instant": True},
|
||||
{"refId": "D", "expr": CLIMATE_PRESSURE_CURRENT, "legendFormat": "Tent Pressure (VPD kPa)", "instant": True},
|
||||
instant=True,
|
||||
transformations=[
|
||||
{"id": "labelsToFields", "options": {"mode": "columns", "valueLabel": "metric"}},
|
||||
{"id": "organize", "options": {"excludeByName": {"Time": True}}},
|
||||
],
|
||||
field_overrides=[
|
||||
{"matcher": {"id": "byName", "options": "Tent Temp (°C)"}, "properties": [{"id": "unit", "value": "celsius"}]},
|
||||
{"matcher": {"id": "byName", "options": "Tent Temp (°F)"}, "properties": [{"id": "unit", "value": "fahrenheit"}]},
|
||||
{"matcher": {"id": "byName", "options": "Tent RH (%)"}, "properties": [{"id": "unit", "value": "percent"}]},
|
||||
{"matcher": {"id": "byName", "options": "Tent Pressure (VPD kPa)"}, "properties": [{"id": "unit", "value": "suffix:kPa"}]},
|
||||
{"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"}]},
|
||||
],
|
||||
orientation="horizontal",
|
||||
wide_layout=False,
|
||||
graph_mode="none",
|
||||
justify_mode="auto",
|
||||
description="Current tent temperature in C/F, humidity, and pressure proxy (VPD kPa).",
|
||||
description="Single-row climate snapshot: Temp °C, Temp °F, Humidity, Pressure.",
|
||||
)
|
||||
)
|
||||
panels.append(
|
||||
@ -3386,33 +3352,23 @@ def build_power_dashboard():
|
||||
)
|
||||
)
|
||||
panels.append(
|
||||
stat_panel(
|
||||
table_panel(
|
||||
5,
|
||||
"Fan Activity",
|
||||
None,
|
||||
CLIMATE_FAN_CURRENT_ROW_EXPR,
|
||||
{"h": 8, "w": 12, "x": 0, "y": 16},
|
||||
unit="none",
|
||||
decimals=0,
|
||||
text_mode="name_and_value",
|
||||
targets=[
|
||||
{"refId": "A", "expr": f"round({CLIMATE_FAN_OUTLET_CURRENT})", "legendFormat": "Inside Outlet", "instant": True},
|
||||
{"refId": "B", "expr": f"round({CLIMATE_FAN_INSIDE_INLET_CURRENT})", "legendFormat": "Inside Inlet", "instant": True},
|
||||
{"refId": "C", "expr": f"round({CLIMATE_FAN_OUTSIDE_INLET_CURRENT})", "legendFormat": "Outside Inlet", "instant": True},
|
||||
{"refId": "D", "expr": f"round({CLIMATE_FAN_INTERIOR_CURRENT})", "legendFormat": "Interior Fans", "instant": True},
|
||||
instant=True,
|
||||
transformations=[
|
||||
{"id": "labelsToFields", "options": {"mode": "columns", "valueLabel": "metric"}},
|
||||
{"id": "organize", "options": {"excludeByName": {"Time": True}}},
|
||||
],
|
||||
thresholds={
|
||||
"mode": "absolute",
|
||||
"steps": [
|
||||
{"color": "green", "value": None},
|
||||
{"color": "yellow", "value": 7},
|
||||
{"color": "red", "value": 9},
|
||||
],
|
||||
},
|
||||
orientation="horizontal",
|
||||
wide_layout=False,
|
||||
graph_mode="none",
|
||||
justify_mode="auto",
|
||||
description="Current fan activity levels (0-10): inside outlet, inside inlet, outside inlet, and interior fans.",
|
||||
field_overrides=[
|
||||
{"matcher": {"id": "byName", "options": "Outlet"}, "properties": [{"id": "decimals", "value": 0}]},
|
||||
{"matcher": {"id": "byName", "options": "Inlet In"}, "properties": [{"id": "decimals", "value": 0}]},
|
||||
{"matcher": {"id": "byName", "options": "Inlet Out"}, "properties": [{"id": "decimals", "value": 0}]},
|
||||
{"matcher": {"id": "byName", "options": "Interior"}, "properties": [{"id": "decimals", "value": 0}]},
|
||||
],
|
||||
description="Single-row fan snapshot: outlet, inlet in, inlet out, interior (0-10).",
|
||||
)
|
||||
)
|
||||
panels.append(
|
||||
|
||||
@ -1072,7 +1072,7 @@
|
||||
},
|
||||
{
|
||||
"id": 40,
|
||||
"type": "stat",
|
||||
"type": "table",
|
||||
"title": "UPS Current Load",
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
@ -1086,136 +1086,47 @@
|
||||
},
|
||||
"targets": [
|
||||
{
|
||||
"expr": "label_replace(label_replace((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)), \"ups\", \"Pyrphoros\", \"__name__\", \".*\"), \"metric\", \"Draw (W)\", \"__name__\", \".*\") or label_replace(label_replace((max(ananke_ups_runtime_seconds{job=\"ananke-power\",source=\"Pyrphoros\"}) or on() vector(0)), \"ups\", \"Pyrphoros\", \"__name__\", \".*\"), \"metric\", \"Discharge\", \"__name__\", \".*\") or label_replace(label_replace((max(ananke_ups_on_battery{job=\"ananke-power\",source=\"Pyrphoros\"}) or on() vector(0)), \"ups\", \"Pyrphoros\", \"__name__\", \".*\"), \"metric\", \"Status\", \"__name__\", \".*\") or label_replace(label_replace((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)), \"ups\", \"Statera\", \"__name__\", \".*\"), \"metric\", \"Draw (W)\", \"__name__\", \".*\") or label_replace(label_replace((max(ananke_ups_runtime_seconds{job=\"ananke-power\",source=\"Statera\"}) or on() vector(0)), \"ups\", \"Statera\", \"__name__\", \".*\"), \"metric\", \"Discharge\", \"__name__\", \".*\") or label_replace(label_replace((max(ananke_ups_on_battery{job=\"ananke-power\",source=\"Statera\"}) or on() vector(0)), \"ups\", \"Statera\", \"__name__\", \".*\"), \"metric\", \"Status\", \"__name__\", \".*\")",
|
||||
"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 (W)",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "B",
|
||||
"expr": "max(ananke_ups_runtime_seconds{job=\"ananke-power\",source=\"Pyrphoros\"}) or on() vector(0)",
|
||||
"legendFormat": "Pyrphoros Discharge",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "C",
|
||||
"expr": "max(ananke_ups_on_battery{job=\"ananke-power\",source=\"Pyrphoros\"}) or on() vector(0)",
|
||||
"legendFormat": "Pyrphoros Status",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "D",
|
||||
"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 (W)",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "E",
|
||||
"expr": "max(ananke_ups_runtime_seconds{job=\"ananke-power\",source=\"Statera\"}) or on() vector(0)",
|
||||
"legendFormat": "Statera Discharge",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "F",
|
||||
"expr": "max(ananke_ups_on_battery{job=\"ananke-power\",source=\"Statera\"}) or on() vector(0)",
|
||||
"legendFormat": "Statera Status",
|
||||
"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"
|
||||
},
|
||||
"decimals": 1
|
||||
"filterable": true
|
||||
}
|
||||
},
|
||||
"overrides": [
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Pyrphoros Draw (W)"
|
||||
"options": "Draw (W)"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "unit",
|
||||
"value": "watt"
|
||||
},
|
||||
{
|
||||
"id": "description",
|
||||
"value": "Attached node: titan-db"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Statera Draw (W)"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "unit",
|
||||
"value": "watt"
|
||||
},
|
||||
{
|
||||
"id": "description",
|
||||
"value": "Attached node: titan-24"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Pyrphoros Discharge"
|
||||
"options": "Discharge"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "unit",
|
||||
"value": "s"
|
||||
},
|
||||
{
|
||||
"id": "description",
|
||||
"value": "Attached node: titan-db"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Statera Discharge"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "unit",
|
||||
"value": "s"
|
||||
},
|
||||
{
|
||||
"id": "description",
|
||||
"value": "Attached node: titan-24"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Pyrphoros Status"
|
||||
"options": "Status"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
@ -1233,58 +1144,32 @@
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "description",
|
||||
"value": "Attached node: titan-db"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Statera Status"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "mappings",
|
||||
"value": [
|
||||
{
|
||||
"type": "value",
|
||||
"options": {
|
||||
"0": {
|
||||
"text": "\u26a1 Charging"
|
||||
},
|
||||
"1": {
|
||||
"text": "\ud83d\udd0b Discharging"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "description",
|
||||
"value": "Attached node: titan-24"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"options": {
|
||||
"colorMode": "value",
|
||||
"graphMode": "none",
|
||||
"justifyMode": "auto",
|
||||
"reduceOptions": {
|
||||
"calcs": [
|
||||
"lastNotNull"
|
||||
],
|
||||
"fields": "",
|
||||
"values": false
|
||||
},
|
||||
"textMode": "name_and_value",
|
||||
"orientation": "horizontal",
|
||||
"wideLayout": false
|
||||
"showHeader": true,
|
||||
"columnFilters": false
|
||||
},
|
||||
"transformations": [
|
||||
{
|
||||
"id": "labelsToFields",
|
||||
"options": {
|
||||
"mode": "columns",
|
||||
"valueLabel": "metric"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "organize",
|
||||
"options": {
|
||||
"excludeByName": {
|
||||
"Time": true
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"links": [
|
||||
{
|
||||
"title": "Open atlas-power dashboard",
|
||||
@ -1292,7 +1177,7 @@
|
||||
"targetBlank": true
|
||||
}
|
||||
],
|
||||
"description": "Per-UPS live snapshot: current draw, discharge, and charging/discharging status."
|
||||
"description": "Per-UPS two-row snapshot: draw (W), discharge runtime, and status."
|
||||
},
|
||||
{
|
||||
"id": 41,
|
||||
@ -1350,7 +1235,7 @@
|
||||
},
|
||||
{
|
||||
"id": 42,
|
||||
"type": "stat",
|
||||
"type": "table",
|
||||
"title": "Current Climate",
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
@ -1364,54 +1249,17 @@
|
||||
},
|
||||
"targets": [
|
||||
{
|
||||
"expr": "label_replace((max(max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius)) or on() vector(0)), \"metric\", \"Temp \u00b0C\", \"__name__\", \".*\") or label_replace((max((max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius)) * 9 / 5 + 32) or on() vector(0)), \"metric\", \"Temp \u00b0F\", \"__name__\", \".*\") or label_replace((max(max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent)) or on() vector(0)), \"metric\", \"Humidity\", \"__name__\", \".*\") or label_replace((max(max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa)) or on() vector(0)), \"metric\", \"Pressure\", \"__name__\", \".*\")",
|
||||
"refId": "A",
|
||||
"expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius)) or on() vector(0)",
|
||||
"legendFormat": "Temp \u00b0C",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "B",
|
||||
"expr": "max((max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius)) * 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)) or on() vector(0)",
|
||||
"legendFormat": "Humidity",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "D",
|
||||
"expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa)) or on() vector(0)",
|
||||
"legendFormat": "Pressure",
|
||||
"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"
|
||||
},
|
||||
"decimals": 2
|
||||
"filterable": true
|
||||
}
|
||||
},
|
||||
"overrides": [
|
||||
{
|
||||
@ -1465,20 +1313,26 @@
|
||||
]
|
||||
},
|
||||
"options": {
|
||||
"colorMode": "value",
|
||||
"graphMode": "none",
|
||||
"justifyMode": "auto",
|
||||
"reduceOptions": {
|
||||
"calcs": [
|
||||
"lastNotNull"
|
||||
],
|
||||
"fields": "",
|
||||
"values": false
|
||||
},
|
||||
"textMode": "name_and_value",
|
||||
"orientation": "horizontal",
|
||||
"wideLayout": false
|
||||
"showHeader": true,
|
||||
"columnFilters": false
|
||||
},
|
||||
"transformations": [
|
||||
{
|
||||
"id": "labelsToFields",
|
||||
"options": {
|
||||
"mode": "columns",
|
||||
"valueLabel": "metric"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "organize",
|
||||
"options": {
|
||||
"excludeByName": {
|
||||
"Time": true
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"links": [
|
||||
{
|
||||
"title": "Open atlas-power dashboard",
|
||||
@ -1486,7 +1340,7 @@
|
||||
"targetBlank": true
|
||||
}
|
||||
],
|
||||
"description": "Current tent values on one row: temperature (C/F), humidity (RH), and pressure proxy (VPD)."
|
||||
"description": "Single-row climate snapshot: Temp \u00b0C, Temp \u00b0F, Humidity, Pressure."
|
||||
},
|
||||
{
|
||||
"id": 43,
|
||||
@ -1582,7 +1436,7 @@
|
||||
},
|
||||
{
|
||||
"id": 140,
|
||||
"type": "stat",
|
||||
"type": "table",
|
||||
"title": "Fan Activity",
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
@ -1596,83 +1450,98 @@
|
||||
},
|
||||
"targets": [
|
||||
{
|
||||
"expr": "label_replace((round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"outlet\"})) or on() vector(0))), \"metric\", \"Outlet\", \"__name__\", \".*\") or label_replace((round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"inside_inlet\"})) or on() vector(0))), \"metric\", \"Inlet In\", \"__name__\", \".*\") or label_replace((round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"outside_inlet\"})) or on() vector(0))), \"metric\", \"Inlet Out\", \"__name__\", \".*\") or label_replace((round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=~\"interior|unknown\"})) or on() vector(0))), \"metric\", \"Interior\", \"__name__\", \".*\")",
|
||||
"refId": "A",
|
||||
"expr": "round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"outlet\"})) or on() vector(0))",
|
||||
"legendFormat": "Outlet",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "B",
|
||||
"expr": "round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"inside_inlet\"})) or on() vector(0))",
|
||||
"legendFormat": "Inlet In",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "C",
|
||||
"expr": "round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"outside_inlet\"})) or on() vector(0))",
|
||||
"legendFormat": "Inlet Out",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "D",
|
||||
"expr": "round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=~\"interior|unknown\"})) or on() vector(0))",
|
||||
"legendFormat": "Interior",
|
||||
"instant": true
|
||||
}
|
||||
],
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"color": {
|
||||
"mode": "thresholds"
|
||||
},
|
||||
"mappings": [],
|
||||
"thresholds": {
|
||||
"mode": "absolute",
|
||||
"steps": [
|
||||
"unit": "none",
|
||||
"custom": {
|
||||
"filterable": true
|
||||
}
|
||||
},
|
||||
"overrides": [
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Outlet"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"color": "green",
|
||||
"value": null
|
||||
},
|
||||
{
|
||||
"color": "yellow",
|
||||
"value": 7
|
||||
},
|
||||
{
|
||||
"color": "red",
|
||||
"value": 9
|
||||
"id": "decimals",
|
||||
"value": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
"unit": "none",
|
||||
"custom": {
|
||||
"displayMode": "auto"
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Inlet In"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "decimals",
|
||||
"value": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
"decimals": 0
|
||||
},
|
||||
"overrides": []
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Inlet Out"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "decimals",
|
||||
"value": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Interior"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "decimals",
|
||||
"value": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"options": {
|
||||
"colorMode": "value",
|
||||
"graphMode": "none",
|
||||
"justifyMode": "auto",
|
||||
"reduceOptions": {
|
||||
"calcs": [
|
||||
"lastNotNull"
|
||||
],
|
||||
"fields": "",
|
||||
"values": false
|
||||
},
|
||||
"textMode": "name_and_value",
|
||||
"orientation": "horizontal",
|
||||
"wideLayout": false
|
||||
"showHeader": true,
|
||||
"columnFilters": false
|
||||
},
|
||||
"transformations": [
|
||||
{
|
||||
"id": "labelsToFields",
|
||||
"options": {
|
||||
"mode": "columns",
|
||||
"valueLabel": "metric"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "organize",
|
||||
"options": {
|
||||
"excludeByName": {
|
||||
"Time": true
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"links": [
|
||||
{
|
||||
"title": "Open atlas-power dashboard",
|
||||
"url": "/d/atlas-power",
|
||||
"targetBlank": true
|
||||
}
|
||||
]
|
||||
],
|
||||
"description": "Single-row fan snapshot: outlet, inlet in, inlet out, interior (0-10)."
|
||||
},
|
||||
{
|
||||
"id": 141,
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
"panels": [
|
||||
{
|
||||
"id": 1,
|
||||
"type": "stat",
|
||||
"type": "table",
|
||||
"title": "UPS Current Load",
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
@ -20,136 +20,47 @@
|
||||
},
|
||||
"targets": [
|
||||
{
|
||||
"expr": "label_replace(label_replace((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)), \"ups\", \"Pyrphoros\", \"__name__\", \".*\"), \"metric\", \"Draw (W)\", \"__name__\", \".*\") or label_replace(label_replace((max(ananke_ups_runtime_seconds{job=\"ananke-power\",source=\"Pyrphoros\"}) or on() vector(0)), \"ups\", \"Pyrphoros\", \"__name__\", \".*\"), \"metric\", \"Discharge\", \"__name__\", \".*\") or label_replace(label_replace((max(ananke_ups_on_battery{job=\"ananke-power\",source=\"Pyrphoros\"}) or on() vector(0)), \"ups\", \"Pyrphoros\", \"__name__\", \".*\"), \"metric\", \"Status\", \"__name__\", \".*\") or label_replace(label_replace((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)), \"ups\", \"Statera\", \"__name__\", \".*\"), \"metric\", \"Draw (W)\", \"__name__\", \".*\") or label_replace(label_replace((max(ananke_ups_runtime_seconds{job=\"ananke-power\",source=\"Statera\"}) or on() vector(0)), \"ups\", \"Statera\", \"__name__\", \".*\"), \"metric\", \"Discharge\", \"__name__\", \".*\") or label_replace(label_replace((max(ananke_ups_on_battery{job=\"ananke-power\",source=\"Statera\"}) or on() vector(0)), \"ups\", \"Statera\", \"__name__\", \".*\"), \"metric\", \"Status\", \"__name__\", \".*\")",
|
||||
"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 (W)",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "B",
|
||||
"expr": "max(ananke_ups_runtime_seconds{job=\"ananke-power\",source=\"Pyrphoros\"}) or on() vector(0)",
|
||||
"legendFormat": "Pyrphoros Discharge",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "C",
|
||||
"expr": "max(ananke_ups_on_battery{job=\"ananke-power\",source=\"Pyrphoros\"}) or on() vector(0)",
|
||||
"legendFormat": "Pyrphoros Status",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "D",
|
||||
"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 (W)",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "E",
|
||||
"expr": "max(ananke_ups_runtime_seconds{job=\"ananke-power\",source=\"Statera\"}) or on() vector(0)",
|
||||
"legendFormat": "Statera Discharge",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "F",
|
||||
"expr": "max(ananke_ups_on_battery{job=\"ananke-power\",source=\"Statera\"}) or on() vector(0)",
|
||||
"legendFormat": "Statera Status",
|
||||
"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"
|
||||
},
|
||||
"decimals": 1
|
||||
"filterable": true
|
||||
}
|
||||
},
|
||||
"overrides": [
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Pyrphoros Draw (W)"
|
||||
"options": "Draw (W)"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "unit",
|
||||
"value": "watt"
|
||||
},
|
||||
{
|
||||
"id": "description",
|
||||
"value": "Attached node: titan-db"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Statera Draw (W)"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "unit",
|
||||
"value": "watt"
|
||||
},
|
||||
{
|
||||
"id": "description",
|
||||
"value": "Attached node: titan-24"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Pyrphoros Discharge"
|
||||
"options": "Discharge"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "unit",
|
||||
"value": "s"
|
||||
},
|
||||
{
|
||||
"id": "description",
|
||||
"value": "Attached node: titan-db"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Statera Discharge"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "unit",
|
||||
"value": "s"
|
||||
},
|
||||
{
|
||||
"id": "description",
|
||||
"value": "Attached node: titan-24"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Pyrphoros Status"
|
||||
"options": "Status"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
@ -167,59 +78,33 @@
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "description",
|
||||
"value": "Attached node: titan-db"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Statera Status"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "mappings",
|
||||
"value": [
|
||||
{
|
||||
"type": "value",
|
||||
"options": {
|
||||
"0": {
|
||||
"text": "\u26a1 Charging"
|
||||
},
|
||||
"1": {
|
||||
"text": "\ud83d\udd0b Discharging"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "description",
|
||||
"value": "Attached node: titan-24"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"options": {
|
||||
"colorMode": "value",
|
||||
"graphMode": "none",
|
||||
"justifyMode": "auto",
|
||||
"reduceOptions": {
|
||||
"calcs": [
|
||||
"lastNotNull"
|
||||
],
|
||||
"fields": "",
|
||||
"values": false
|
||||
},
|
||||
"textMode": "name_and_value",
|
||||
"orientation": "horizontal",
|
||||
"wideLayout": false
|
||||
"showHeader": true,
|
||||
"columnFilters": false
|
||||
},
|
||||
"description": "Per-UPS live snapshot: current draw in watts, estimated battery runtime if discharge started now, and charging/discharging status."
|
||||
"transformations": [
|
||||
{
|
||||
"id": "labelsToFields",
|
||||
"options": {
|
||||
"mode": "columns",
|
||||
"valueLabel": "metric"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "organize",
|
||||
"options": {
|
||||
"excludeByName": {
|
||||
"Time": true
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"description": "Per-UPS two-row snapshot: draw (W), discharge runtime, and charging/discharging status."
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
@ -271,7 +156,7 @@
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"type": "stat",
|
||||
"type": "table",
|
||||
"title": "Current Climate",
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
@ -285,60 +170,23 @@
|
||||
},
|
||||
"targets": [
|
||||
{
|
||||
"expr": "label_replace((max(max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius)) or on() vector(0)), \"metric\", \"Temp \u00b0C\", \"__name__\", \".*\") or label_replace((max((max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius)) * 9 / 5 + 32) or on() vector(0)), \"metric\", \"Temp \u00b0F\", \"__name__\", \".*\") or label_replace((max(max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent)) or on() vector(0)), \"metric\", \"Humidity\", \"__name__\", \".*\") or label_replace((max(max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa)) or on() vector(0)), \"metric\", \"Pressure\", \"__name__\", \".*\")",
|
||||
"refId": "A",
|
||||
"expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius)) or on() vector(0)",
|
||||
"legendFormat": "Tent Temp (\u00b0C)",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "B",
|
||||
"expr": "max((max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius)) * 9 / 5 + 32) or on() vector(0)",
|
||||
"legendFormat": "Tent Temp (\u00b0F)",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "C",
|
||||
"expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent)) or on() vector(0)",
|
||||
"legendFormat": "Tent RH (%)",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "D",
|
||||
"expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa)) or on() vector(0)",
|
||||
"legendFormat": "Tent Pressure (VPD kPa)",
|
||||
"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"
|
||||
},
|
||||
"decimals": 2
|
||||
"filterable": true
|
||||
}
|
||||
},
|
||||
"overrides": [
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Tent Temp (\u00b0C)"
|
||||
"options": "Temp \u00b0C"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
@ -350,7 +198,7 @@
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Tent Temp (\u00b0F)"
|
||||
"options": "Temp \u00b0F"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
@ -362,7 +210,7 @@
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Tent RH (%)"
|
||||
"options": "Humidity"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
@ -374,7 +222,7 @@
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Tent Pressure (VPD kPa)"
|
||||
"options": "Pressure"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
@ -386,21 +234,27 @@
|
||||
]
|
||||
},
|
||||
"options": {
|
||||
"colorMode": "value",
|
||||
"graphMode": "none",
|
||||
"justifyMode": "auto",
|
||||
"reduceOptions": {
|
||||
"calcs": [
|
||||
"lastNotNull"
|
||||
],
|
||||
"fields": "",
|
||||
"values": false
|
||||
},
|
||||
"textMode": "name_and_value",
|
||||
"orientation": "horizontal",
|
||||
"wideLayout": false
|
||||
"showHeader": true,
|
||||
"columnFilters": false
|
||||
},
|
||||
"description": "Current tent temperature in C/F, humidity, and pressure proxy (VPD kPa)."
|
||||
"transformations": [
|
||||
{
|
||||
"id": "labelsToFields",
|
||||
"options": {
|
||||
"mode": "columns",
|
||||
"valueLabel": "metric"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "organize",
|
||||
"options": {
|
||||
"excludeByName": {
|
||||
"Time": true
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"description": "Single-row climate snapshot: Temp \u00b0C, Temp \u00b0F, Humidity, Pressure."
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
@ -506,7 +360,7 @@
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"type": "stat",
|
||||
"type": "table",
|
||||
"title": "Fan Activity",
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
@ -520,77 +374,91 @@
|
||||
},
|
||||
"targets": [
|
||||
{
|
||||
"expr": "label_replace((round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"outlet\"})) or on() vector(0))), \"metric\", \"Outlet\", \"__name__\", \".*\") or label_replace((round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"inside_inlet\"})) or on() vector(0))), \"metric\", \"Inlet In\", \"__name__\", \".*\") or label_replace((round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"outside_inlet\"})) or on() vector(0))), \"metric\", \"Inlet Out\", \"__name__\", \".*\") or label_replace((round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=~\"interior|unknown\"})) or on() vector(0))), \"metric\", \"Interior\", \"__name__\", \".*\")",
|
||||
"refId": "A",
|
||||
"expr": "round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"outlet\"})) or on() vector(0))",
|
||||
"legendFormat": "Inside Outlet",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "B",
|
||||
"expr": "round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"inside_inlet\"})) or on() vector(0))",
|
||||
"legendFormat": "Inside Inlet",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "C",
|
||||
"expr": "round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"outside_inlet\"})) or on() vector(0))",
|
||||
"legendFormat": "Outside Inlet",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "D",
|
||||
"expr": "round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=~\"interior|unknown\"})) or on() vector(0))",
|
||||
"legendFormat": "Interior Fans",
|
||||
"instant": true
|
||||
}
|
||||
],
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"color": {
|
||||
"mode": "thresholds"
|
||||
},
|
||||
"mappings": [],
|
||||
"thresholds": {
|
||||
"mode": "absolute",
|
||||
"steps": [
|
||||
"unit": "none",
|
||||
"custom": {
|
||||
"filterable": true
|
||||
}
|
||||
},
|
||||
"overrides": [
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Outlet"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"color": "green",
|
||||
"value": null
|
||||
},
|
||||
{
|
||||
"color": "yellow",
|
||||
"value": 7
|
||||
},
|
||||
{
|
||||
"color": "red",
|
||||
"value": 9
|
||||
"id": "decimals",
|
||||
"value": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
"unit": "none",
|
||||
"custom": {
|
||||
"displayMode": "auto"
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Inlet In"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "decimals",
|
||||
"value": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
"decimals": 0
|
||||
},
|
||||
"overrides": []
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Inlet Out"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "decimals",
|
||||
"value": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Interior"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "decimals",
|
||||
"value": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"options": {
|
||||
"colorMode": "value",
|
||||
"graphMode": "none",
|
||||
"justifyMode": "auto",
|
||||
"reduceOptions": {
|
||||
"calcs": [
|
||||
"lastNotNull"
|
||||
],
|
||||
"fields": "",
|
||||
"values": false
|
||||
},
|
||||
"textMode": "name_and_value",
|
||||
"orientation": "horizontal",
|
||||
"wideLayout": false
|
||||
"showHeader": true,
|
||||
"columnFilters": false
|
||||
},
|
||||
"description": "Current fan activity levels (0-10): inside outlet, inside inlet, outside inlet, and interior fans."
|
||||
"transformations": [
|
||||
{
|
||||
"id": "labelsToFields",
|
||||
"options": {
|
||||
"mode": "columns",
|
||||
"valueLabel": "metric"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "organize",
|
||||
"options": {
|
||||
"excludeByName": {
|
||||
"Time": true
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"description": "Single-row fan snapshot: outlet, inlet in, inlet out, interior (0-10)."
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
|
||||
@ -1081,7 +1081,7 @@ data:
|
||||
},
|
||||
{
|
||||
"id": 40,
|
||||
"type": "stat",
|
||||
"type": "table",
|
||||
"title": "UPS Current Load",
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
@ -1095,136 +1095,47 @@ data:
|
||||
},
|
||||
"targets": [
|
||||
{
|
||||
"expr": "label_replace(label_replace((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)), \"ups\", \"Pyrphoros\", \"__name__\", \".*\"), \"metric\", \"Draw (W)\", \"__name__\", \".*\") or label_replace(label_replace((max(ananke_ups_runtime_seconds{job=\"ananke-power\",source=\"Pyrphoros\"}) or on() vector(0)), \"ups\", \"Pyrphoros\", \"__name__\", \".*\"), \"metric\", \"Discharge\", \"__name__\", \".*\") or label_replace(label_replace((max(ananke_ups_on_battery{job=\"ananke-power\",source=\"Pyrphoros\"}) or on() vector(0)), \"ups\", \"Pyrphoros\", \"__name__\", \".*\"), \"metric\", \"Status\", \"__name__\", \".*\") or label_replace(label_replace((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)), \"ups\", \"Statera\", \"__name__\", \".*\"), \"metric\", \"Draw (W)\", \"__name__\", \".*\") or label_replace(label_replace((max(ananke_ups_runtime_seconds{job=\"ananke-power\",source=\"Statera\"}) or on() vector(0)), \"ups\", \"Statera\", \"__name__\", \".*\"), \"metric\", \"Discharge\", \"__name__\", \".*\") or label_replace(label_replace((max(ananke_ups_on_battery{job=\"ananke-power\",source=\"Statera\"}) or on() vector(0)), \"ups\", \"Statera\", \"__name__\", \".*\"), \"metric\", \"Status\", \"__name__\", \".*\")",
|
||||
"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 (W)",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "B",
|
||||
"expr": "max(ananke_ups_runtime_seconds{job=\"ananke-power\",source=\"Pyrphoros\"}) or on() vector(0)",
|
||||
"legendFormat": "Pyrphoros Discharge",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "C",
|
||||
"expr": "max(ananke_ups_on_battery{job=\"ananke-power\",source=\"Pyrphoros\"}) or on() vector(0)",
|
||||
"legendFormat": "Pyrphoros Status",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "D",
|
||||
"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 (W)",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "E",
|
||||
"expr": "max(ananke_ups_runtime_seconds{job=\"ananke-power\",source=\"Statera\"}) or on() vector(0)",
|
||||
"legendFormat": "Statera Discharge",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "F",
|
||||
"expr": "max(ananke_ups_on_battery{job=\"ananke-power\",source=\"Statera\"}) or on() vector(0)",
|
||||
"legendFormat": "Statera Status",
|
||||
"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"
|
||||
},
|
||||
"decimals": 1
|
||||
"filterable": true
|
||||
}
|
||||
},
|
||||
"overrides": [
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Pyrphoros Draw (W)"
|
||||
"options": "Draw (W)"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "unit",
|
||||
"value": "watt"
|
||||
},
|
||||
{
|
||||
"id": "description",
|
||||
"value": "Attached node: titan-db"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Statera Draw (W)"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "unit",
|
||||
"value": "watt"
|
||||
},
|
||||
{
|
||||
"id": "description",
|
||||
"value": "Attached node: titan-24"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Pyrphoros Discharge"
|
||||
"options": "Discharge"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "unit",
|
||||
"value": "s"
|
||||
},
|
||||
{
|
||||
"id": "description",
|
||||
"value": "Attached node: titan-db"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Statera Discharge"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "unit",
|
||||
"value": "s"
|
||||
},
|
||||
{
|
||||
"id": "description",
|
||||
"value": "Attached node: titan-24"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Pyrphoros Status"
|
||||
"options": "Status"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
@ -1242,58 +1153,32 @@ data:
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "description",
|
||||
"value": "Attached node: titan-db"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Statera Status"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "mappings",
|
||||
"value": [
|
||||
{
|
||||
"type": "value",
|
||||
"options": {
|
||||
"0": {
|
||||
"text": "\u26a1 Charging"
|
||||
},
|
||||
"1": {
|
||||
"text": "\ud83d\udd0b Discharging"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "description",
|
||||
"value": "Attached node: titan-24"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"options": {
|
||||
"colorMode": "value",
|
||||
"graphMode": "none",
|
||||
"justifyMode": "auto",
|
||||
"reduceOptions": {
|
||||
"calcs": [
|
||||
"lastNotNull"
|
||||
],
|
||||
"fields": "",
|
||||
"values": false
|
||||
},
|
||||
"textMode": "name_and_value",
|
||||
"orientation": "horizontal",
|
||||
"wideLayout": false
|
||||
"showHeader": true,
|
||||
"columnFilters": false
|
||||
},
|
||||
"transformations": [
|
||||
{
|
||||
"id": "labelsToFields",
|
||||
"options": {
|
||||
"mode": "columns",
|
||||
"valueLabel": "metric"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "organize",
|
||||
"options": {
|
||||
"excludeByName": {
|
||||
"Time": true
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"links": [
|
||||
{
|
||||
"title": "Open atlas-power dashboard",
|
||||
@ -1301,7 +1186,7 @@ data:
|
||||
"targetBlank": true
|
||||
}
|
||||
],
|
||||
"description": "Per-UPS live snapshot: current draw, discharge, and charging/discharging status."
|
||||
"description": "Per-UPS two-row snapshot: draw (W), discharge runtime, and status."
|
||||
},
|
||||
{
|
||||
"id": 41,
|
||||
@ -1359,7 +1244,7 @@ data:
|
||||
},
|
||||
{
|
||||
"id": 42,
|
||||
"type": "stat",
|
||||
"type": "table",
|
||||
"title": "Current Climate",
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
@ -1373,54 +1258,17 @@ data:
|
||||
},
|
||||
"targets": [
|
||||
{
|
||||
"expr": "label_replace((max(max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius)) or on() vector(0)), \"metric\", \"Temp \u00b0C\", \"__name__\", \".*\") or label_replace((max((max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius)) * 9 / 5 + 32) or on() vector(0)), \"metric\", \"Temp \u00b0F\", \"__name__\", \".*\") or label_replace((max(max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent)) or on() vector(0)), \"metric\", \"Humidity\", \"__name__\", \".*\") or label_replace((max(max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa)) or on() vector(0)), \"metric\", \"Pressure\", \"__name__\", \".*\")",
|
||||
"refId": "A",
|
||||
"expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius)) or on() vector(0)",
|
||||
"legendFormat": "Temp \u00b0C",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "B",
|
||||
"expr": "max((max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius)) * 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)) or on() vector(0)",
|
||||
"legendFormat": "Humidity",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "D",
|
||||
"expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa)) or on() vector(0)",
|
||||
"legendFormat": "Pressure",
|
||||
"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"
|
||||
},
|
||||
"decimals": 2
|
||||
"filterable": true
|
||||
}
|
||||
},
|
||||
"overrides": [
|
||||
{
|
||||
@ -1474,20 +1322,26 @@ data:
|
||||
]
|
||||
},
|
||||
"options": {
|
||||
"colorMode": "value",
|
||||
"graphMode": "none",
|
||||
"justifyMode": "auto",
|
||||
"reduceOptions": {
|
||||
"calcs": [
|
||||
"lastNotNull"
|
||||
],
|
||||
"fields": "",
|
||||
"values": false
|
||||
},
|
||||
"textMode": "name_and_value",
|
||||
"orientation": "horizontal",
|
||||
"wideLayout": false
|
||||
"showHeader": true,
|
||||
"columnFilters": false
|
||||
},
|
||||
"transformations": [
|
||||
{
|
||||
"id": "labelsToFields",
|
||||
"options": {
|
||||
"mode": "columns",
|
||||
"valueLabel": "metric"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "organize",
|
||||
"options": {
|
||||
"excludeByName": {
|
||||
"Time": true
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"links": [
|
||||
{
|
||||
"title": "Open atlas-power dashboard",
|
||||
@ -1495,7 +1349,7 @@ data:
|
||||
"targetBlank": true
|
||||
}
|
||||
],
|
||||
"description": "Current tent values on one row: temperature (C/F), humidity (RH), and pressure proxy (VPD)."
|
||||
"description": "Single-row climate snapshot: Temp \u00b0C, Temp \u00b0F, Humidity, Pressure."
|
||||
},
|
||||
{
|
||||
"id": 43,
|
||||
@ -1591,7 +1445,7 @@ data:
|
||||
},
|
||||
{
|
||||
"id": 140,
|
||||
"type": "stat",
|
||||
"type": "table",
|
||||
"title": "Fan Activity",
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
@ -1605,83 +1459,98 @@ data:
|
||||
},
|
||||
"targets": [
|
||||
{
|
||||
"expr": "label_replace((round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"outlet\"})) or on() vector(0))), \"metric\", \"Outlet\", \"__name__\", \".*\") or label_replace((round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"inside_inlet\"})) or on() vector(0))), \"metric\", \"Inlet In\", \"__name__\", \".*\") or label_replace((round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"outside_inlet\"})) or on() vector(0))), \"metric\", \"Inlet Out\", \"__name__\", \".*\") or label_replace((round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=~\"interior|unknown\"})) or on() vector(0))), \"metric\", \"Interior\", \"__name__\", \".*\")",
|
||||
"refId": "A",
|
||||
"expr": "round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"outlet\"})) or on() vector(0))",
|
||||
"legendFormat": "Outlet",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "B",
|
||||
"expr": "round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"inside_inlet\"})) or on() vector(0))",
|
||||
"legendFormat": "Inlet In",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "C",
|
||||
"expr": "round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"outside_inlet\"})) or on() vector(0))",
|
||||
"legendFormat": "Inlet Out",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "D",
|
||||
"expr": "round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=~\"interior|unknown\"})) or on() vector(0))",
|
||||
"legendFormat": "Interior",
|
||||
"instant": true
|
||||
}
|
||||
],
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"color": {
|
||||
"mode": "thresholds"
|
||||
},
|
||||
"mappings": [],
|
||||
"thresholds": {
|
||||
"mode": "absolute",
|
||||
"steps": [
|
||||
"unit": "none",
|
||||
"custom": {
|
||||
"filterable": true
|
||||
}
|
||||
},
|
||||
"overrides": [
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Outlet"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"color": "green",
|
||||
"value": null
|
||||
},
|
||||
{
|
||||
"color": "yellow",
|
||||
"value": 7
|
||||
},
|
||||
{
|
||||
"color": "red",
|
||||
"value": 9
|
||||
"id": "decimals",
|
||||
"value": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
"unit": "none",
|
||||
"custom": {
|
||||
"displayMode": "auto"
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Inlet In"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "decimals",
|
||||
"value": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
"decimals": 0
|
||||
},
|
||||
"overrides": []
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Inlet Out"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "decimals",
|
||||
"value": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Interior"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "decimals",
|
||||
"value": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"options": {
|
||||
"colorMode": "value",
|
||||
"graphMode": "none",
|
||||
"justifyMode": "auto",
|
||||
"reduceOptions": {
|
||||
"calcs": [
|
||||
"lastNotNull"
|
||||
],
|
||||
"fields": "",
|
||||
"values": false
|
||||
},
|
||||
"textMode": "name_and_value",
|
||||
"orientation": "horizontal",
|
||||
"wideLayout": false
|
||||
"showHeader": true,
|
||||
"columnFilters": false
|
||||
},
|
||||
"transformations": [
|
||||
{
|
||||
"id": "labelsToFields",
|
||||
"options": {
|
||||
"mode": "columns",
|
||||
"valueLabel": "metric"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "organize",
|
||||
"options": {
|
||||
"excludeByName": {
|
||||
"Time": true
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"links": [
|
||||
{
|
||||
"title": "Open atlas-power dashboard",
|
||||
"url": "/d/atlas-power",
|
||||
"targetBlank": true
|
||||
}
|
||||
]
|
||||
],
|
||||
"description": "Single-row fan snapshot: outlet, inlet in, inlet out, interior (0-10)."
|
||||
},
|
||||
{
|
||||
"id": 141,
|
||||
|
||||
@ -15,7 +15,7 @@ data:
|
||||
"panels": [
|
||||
{
|
||||
"id": 1,
|
||||
"type": "stat",
|
||||
"type": "table",
|
||||
"title": "UPS Current Load",
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
@ -29,136 +29,47 @@ data:
|
||||
},
|
||||
"targets": [
|
||||
{
|
||||
"expr": "label_replace(label_replace((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)), \"ups\", \"Pyrphoros\", \"__name__\", \".*\"), \"metric\", \"Draw (W)\", \"__name__\", \".*\") or label_replace(label_replace((max(ananke_ups_runtime_seconds{job=\"ananke-power\",source=\"Pyrphoros\"}) or on() vector(0)), \"ups\", \"Pyrphoros\", \"__name__\", \".*\"), \"metric\", \"Discharge\", \"__name__\", \".*\") or label_replace(label_replace((max(ananke_ups_on_battery{job=\"ananke-power\",source=\"Pyrphoros\"}) or on() vector(0)), \"ups\", \"Pyrphoros\", \"__name__\", \".*\"), \"metric\", \"Status\", \"__name__\", \".*\") or label_replace(label_replace((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)), \"ups\", \"Statera\", \"__name__\", \".*\"), \"metric\", \"Draw (W)\", \"__name__\", \".*\") or label_replace(label_replace((max(ananke_ups_runtime_seconds{job=\"ananke-power\",source=\"Statera\"}) or on() vector(0)), \"ups\", \"Statera\", \"__name__\", \".*\"), \"metric\", \"Discharge\", \"__name__\", \".*\") or label_replace(label_replace((max(ananke_ups_on_battery{job=\"ananke-power\",source=\"Statera\"}) or on() vector(0)), \"ups\", \"Statera\", \"__name__\", \".*\"), \"metric\", \"Status\", \"__name__\", \".*\")",
|
||||
"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 (W)",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "B",
|
||||
"expr": "max(ananke_ups_runtime_seconds{job=\"ananke-power\",source=\"Pyrphoros\"}) or on() vector(0)",
|
||||
"legendFormat": "Pyrphoros Discharge",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "C",
|
||||
"expr": "max(ananke_ups_on_battery{job=\"ananke-power\",source=\"Pyrphoros\"}) or on() vector(0)",
|
||||
"legendFormat": "Pyrphoros Status",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "D",
|
||||
"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 (W)",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "E",
|
||||
"expr": "max(ananke_ups_runtime_seconds{job=\"ananke-power\",source=\"Statera\"}) or on() vector(0)",
|
||||
"legendFormat": "Statera Discharge",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "F",
|
||||
"expr": "max(ananke_ups_on_battery{job=\"ananke-power\",source=\"Statera\"}) or on() vector(0)",
|
||||
"legendFormat": "Statera Status",
|
||||
"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"
|
||||
},
|
||||
"decimals": 1
|
||||
"filterable": true
|
||||
}
|
||||
},
|
||||
"overrides": [
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Pyrphoros Draw (W)"
|
||||
"options": "Draw (W)"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "unit",
|
||||
"value": "watt"
|
||||
},
|
||||
{
|
||||
"id": "description",
|
||||
"value": "Attached node: titan-db"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Statera Draw (W)"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "unit",
|
||||
"value": "watt"
|
||||
},
|
||||
{
|
||||
"id": "description",
|
||||
"value": "Attached node: titan-24"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Pyrphoros Discharge"
|
||||
"options": "Discharge"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "unit",
|
||||
"value": "s"
|
||||
},
|
||||
{
|
||||
"id": "description",
|
||||
"value": "Attached node: titan-db"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Statera Discharge"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "unit",
|
||||
"value": "s"
|
||||
},
|
||||
{
|
||||
"id": "description",
|
||||
"value": "Attached node: titan-24"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Pyrphoros Status"
|
||||
"options": "Status"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
@ -176,59 +87,33 @@ data:
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "description",
|
||||
"value": "Attached node: titan-db"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Statera Status"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "mappings",
|
||||
"value": [
|
||||
{
|
||||
"type": "value",
|
||||
"options": {
|
||||
"0": {
|
||||
"text": "\u26a1 Charging"
|
||||
},
|
||||
"1": {
|
||||
"text": "\ud83d\udd0b Discharging"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "description",
|
||||
"value": "Attached node: titan-24"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"options": {
|
||||
"colorMode": "value",
|
||||
"graphMode": "none",
|
||||
"justifyMode": "auto",
|
||||
"reduceOptions": {
|
||||
"calcs": [
|
||||
"lastNotNull"
|
||||
],
|
||||
"fields": "",
|
||||
"values": false
|
||||
},
|
||||
"textMode": "name_and_value",
|
||||
"orientation": "horizontal",
|
||||
"wideLayout": false
|
||||
"showHeader": true,
|
||||
"columnFilters": false
|
||||
},
|
||||
"description": "Per-UPS live snapshot: current draw in watts, estimated battery runtime if discharge started now, and charging/discharging status."
|
||||
"transformations": [
|
||||
{
|
||||
"id": "labelsToFields",
|
||||
"options": {
|
||||
"mode": "columns",
|
||||
"valueLabel": "metric"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "organize",
|
||||
"options": {
|
||||
"excludeByName": {
|
||||
"Time": true
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"description": "Per-UPS two-row snapshot: draw (W), discharge runtime, and charging/discharging status."
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
@ -280,7 +165,7 @@ data:
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"type": "stat",
|
||||
"type": "table",
|
||||
"title": "Current Climate",
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
@ -294,60 +179,23 @@ data:
|
||||
},
|
||||
"targets": [
|
||||
{
|
||||
"expr": "label_replace((max(max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius)) or on() vector(0)), \"metric\", \"Temp \u00b0C\", \"__name__\", \".*\") or label_replace((max((max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius)) * 9 / 5 + 32) or on() vector(0)), \"metric\", \"Temp \u00b0F\", \"__name__\", \".*\") or label_replace((max(max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent)) or on() vector(0)), \"metric\", \"Humidity\", \"__name__\", \".*\") or label_replace((max(max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa)) or on() vector(0)), \"metric\", \"Pressure\", \"__name__\", \".*\")",
|
||||
"refId": "A",
|
||||
"expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius)) or on() vector(0)",
|
||||
"legendFormat": "Tent Temp (\u00b0C)",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "B",
|
||||
"expr": "max((max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius)) * 9 / 5 + 32) or on() vector(0)",
|
||||
"legendFormat": "Tent Temp (\u00b0F)",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "C",
|
||||
"expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent)) or on() vector(0)",
|
||||
"legendFormat": "Tent RH (%)",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "D",
|
||||
"expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa)) or on() vector(0)",
|
||||
"legendFormat": "Tent Pressure (VPD kPa)",
|
||||
"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"
|
||||
},
|
||||
"decimals": 2
|
||||
"filterable": true
|
||||
}
|
||||
},
|
||||
"overrides": [
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Tent Temp (\u00b0C)"
|
||||
"options": "Temp \u00b0C"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
@ -359,7 +207,7 @@ data:
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Tent Temp (\u00b0F)"
|
||||
"options": "Temp \u00b0F"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
@ -371,7 +219,7 @@ data:
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Tent RH (%)"
|
||||
"options": "Humidity"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
@ -383,7 +231,7 @@ data:
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Tent Pressure (VPD kPa)"
|
||||
"options": "Pressure"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
@ -395,21 +243,27 @@ data:
|
||||
]
|
||||
},
|
||||
"options": {
|
||||
"colorMode": "value",
|
||||
"graphMode": "none",
|
||||
"justifyMode": "auto",
|
||||
"reduceOptions": {
|
||||
"calcs": [
|
||||
"lastNotNull"
|
||||
],
|
||||
"fields": "",
|
||||
"values": false
|
||||
},
|
||||
"textMode": "name_and_value",
|
||||
"orientation": "horizontal",
|
||||
"wideLayout": false
|
||||
"showHeader": true,
|
||||
"columnFilters": false
|
||||
},
|
||||
"description": "Current tent temperature in C/F, humidity, and pressure proxy (VPD kPa)."
|
||||
"transformations": [
|
||||
{
|
||||
"id": "labelsToFields",
|
||||
"options": {
|
||||
"mode": "columns",
|
||||
"valueLabel": "metric"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "organize",
|
||||
"options": {
|
||||
"excludeByName": {
|
||||
"Time": true
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"description": "Single-row climate snapshot: Temp \u00b0C, Temp \u00b0F, Humidity, Pressure."
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
@ -515,7 +369,7 @@ data:
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"type": "stat",
|
||||
"type": "table",
|
||||
"title": "Fan Activity",
|
||||
"datasource": {
|
||||
"type": "prometheus",
|
||||
@ -529,77 +383,91 @@ data:
|
||||
},
|
||||
"targets": [
|
||||
{
|
||||
"expr": "label_replace((round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"outlet\"})) or on() vector(0))), \"metric\", \"Outlet\", \"__name__\", \".*\") or label_replace((round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"inside_inlet\"})) or on() vector(0))), \"metric\", \"Inlet In\", \"__name__\", \".*\") or label_replace((round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"outside_inlet\"})) or on() vector(0))), \"metric\", \"Inlet Out\", \"__name__\", \".*\") or label_replace((round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=~\"interior|unknown\"})) or on() vector(0))), \"metric\", \"Interior\", \"__name__\", \".*\")",
|
||||
"refId": "A",
|
||||
"expr": "round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"outlet\"})) or on() vector(0))",
|
||||
"legendFormat": "Inside Outlet",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "B",
|
||||
"expr": "round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"inside_inlet\"})) or on() vector(0))",
|
||||
"legendFormat": "Inside Inlet",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "C",
|
||||
"expr": "round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=\"outside_inlet\"})) or on() vector(0))",
|
||||
"legendFormat": "Outside Inlet",
|
||||
"instant": true
|
||||
},
|
||||
{
|
||||
"refId": "D",
|
||||
"expr": "round(max(max without (job,instance,pod,service,endpoint,namespace) (typhon_fan_speed_level{fan_group=~\"interior|unknown\"})) or on() vector(0))",
|
||||
"legendFormat": "Interior Fans",
|
||||
"instant": true
|
||||
}
|
||||
],
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"color": {
|
||||
"mode": "thresholds"
|
||||
},
|
||||
"mappings": [],
|
||||
"thresholds": {
|
||||
"mode": "absolute",
|
||||
"steps": [
|
||||
"unit": "none",
|
||||
"custom": {
|
||||
"filterable": true
|
||||
}
|
||||
},
|
||||
"overrides": [
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Outlet"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"color": "green",
|
||||
"value": null
|
||||
},
|
||||
{
|
||||
"color": "yellow",
|
||||
"value": 7
|
||||
},
|
||||
{
|
||||
"color": "red",
|
||||
"value": 9
|
||||
"id": "decimals",
|
||||
"value": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
"unit": "none",
|
||||
"custom": {
|
||||
"displayMode": "auto"
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Inlet In"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "decimals",
|
||||
"value": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
"decimals": 0
|
||||
},
|
||||
"overrides": []
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Inlet Out"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "decimals",
|
||||
"value": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"matcher": {
|
||||
"id": "byName",
|
||||
"options": "Interior"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"id": "decimals",
|
||||
"value": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"options": {
|
||||
"colorMode": "value",
|
||||
"graphMode": "none",
|
||||
"justifyMode": "auto",
|
||||
"reduceOptions": {
|
||||
"calcs": [
|
||||
"lastNotNull"
|
||||
],
|
||||
"fields": "",
|
||||
"values": false
|
||||
},
|
||||
"textMode": "name_and_value",
|
||||
"orientation": "horizontal",
|
||||
"wideLayout": false
|
||||
"showHeader": true,
|
||||
"columnFilters": false
|
||||
},
|
||||
"description": "Current fan activity levels (0-10): inside outlet, inside inlet, outside inlet, and interior fans."
|
||||
"transformations": [
|
||||
{
|
||||
"id": "labelsToFields",
|
||||
"options": {
|
||||
"mode": "columns",
|
||||
"valueLabel": "metric"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "organize",
|
||||
"options": {
|
||||
"excludeByName": {
|
||||
"Time": true
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"description": "Single-row fan snapshot: outlet, inlet in, inlet out, interior (0-10)."
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user