monitoring(overview): recenter climate/ups cards and gate stale offline climate data
This commit is contained in:
parent
53a20a8560
commit
19d6ffcf2a
@ -677,33 +677,46 @@ ANANKE_UPS_DISCHARGE_RISK_TETHYS = ups_discharge_risk_expr(
|
|||||||
)
|
)
|
||||||
CLIMATE_SENSOR_COUNT = "count(typhon_temperature_celsius) or on() vector(0)"
|
CLIMATE_SENSOR_COUNT = "count(typhon_temperature_celsius) or on() vector(0)"
|
||||||
CLIMATE_DEDUP_LABELS = "job,instance,pod,service,endpoint,namespace"
|
CLIMATE_DEDUP_LABELS = "job,instance,pod,service,endpoint,namespace"
|
||||||
CLIMATE_TEMP_SERIES = (
|
CLIMATE_CONTROLLER_ONLINE_SERIES = (
|
||||||
|
f"max without ({CLIMATE_DEDUP_LABELS}) (typhon_controller_online)"
|
||||||
|
)
|
||||||
|
CLIMATE_ONLINE_FILTER = f"(({CLIMATE_CONTROLLER_ONLINE_SERIES}) > 0)"
|
||||||
|
CLIMATE_TEMP_RAW_SERIES = (
|
||||||
f"max without ({CLIMATE_DEDUP_LABELS}) (typhon_temperature_celsius != 0)"
|
f"max without ({CLIMATE_DEDUP_LABELS}) (typhon_temperature_celsius != 0)"
|
||||||
)
|
)
|
||||||
|
CLIMATE_TEMP_SERIES = (
|
||||||
|
f"({CLIMATE_TEMP_RAW_SERIES}) and on(controller_id,controller_name) {CLIMATE_ONLINE_FILTER}"
|
||||||
|
)
|
||||||
CLIMATE_TEMP_FAHRENHEIT_SERIES = f"({CLIMATE_TEMP_SERIES}) * 9 / 5 + 32"
|
CLIMATE_TEMP_FAHRENHEIT_SERIES = f"({CLIMATE_TEMP_SERIES}) * 9 / 5 + 32"
|
||||||
CLIMATE_PRESSURE_SERIES = (
|
CLIMATE_PRESSURE_RAW_SERIES = (
|
||||||
f"max without ({CLIMATE_DEDUP_LABELS}) (typhon_vpd_kpa != 0)"
|
f"max without ({CLIMATE_DEDUP_LABELS}) (typhon_vpd_kpa != 0)"
|
||||||
)
|
)
|
||||||
CLIMATE_HUMIDITY_SERIES = (
|
CLIMATE_PRESSURE_SERIES = (
|
||||||
|
f"({CLIMATE_PRESSURE_RAW_SERIES}) and on(controller_id,controller_name) {CLIMATE_ONLINE_FILTER}"
|
||||||
|
)
|
||||||
|
CLIMATE_HUMIDITY_RAW_SERIES = (
|
||||||
f"max without ({CLIMATE_DEDUP_LABELS}) (typhon_relative_humidity_percent != 0)"
|
f"max without ({CLIMATE_DEDUP_LABELS}) (typhon_relative_humidity_percent != 0)"
|
||||||
)
|
)
|
||||||
CLIMATE_TEMP_MAX = f"max({CLIMATE_TEMP_SERIES}) or on() vector(0)"
|
CLIMATE_HUMIDITY_SERIES = (
|
||||||
CLIMATE_TEMP_FAHRENHEIT_MAX = f"max({CLIMATE_TEMP_FAHRENHEIT_SERIES}) or on() vector(0)"
|
f"({CLIMATE_HUMIDITY_RAW_SERIES}) and on(controller_id,controller_name) {CLIMATE_ONLINE_FILTER}"
|
||||||
CLIMATE_PRESSURE_CURRENT = f"max({CLIMATE_PRESSURE_SERIES}) or on() vector(0)"
|
)
|
||||||
CLIMATE_HUMIDITY_MAX = f"max({CLIMATE_HUMIDITY_SERIES}) or on() vector(0)"
|
CLIMATE_TEMP_MAX = f"max({CLIMATE_TEMP_SERIES})"
|
||||||
CLIMATE_TEMP_MIN_BOUND_SERIES = f"(min_over_time({CLIMATE_TEMP_SERIES}[$__range]) - 0.08)"
|
CLIMATE_TEMP_FAHRENHEIT_MAX = f"max({CLIMATE_TEMP_FAHRENHEIT_SERIES})"
|
||||||
CLIMATE_TEMP_MAX_BOUND_SERIES = f"(max_over_time({CLIMATE_TEMP_SERIES}[$__range]) + 0.08)"
|
CLIMATE_PRESSURE_CURRENT = f"max({CLIMATE_PRESSURE_SERIES})"
|
||||||
|
CLIMATE_HUMIDITY_MAX = f"max({CLIMATE_HUMIDITY_SERIES})"
|
||||||
|
CLIMATE_TEMP_MIN_BOUND_SERIES = f"(min_over_time(({CLIMATE_TEMP_SERIES})[$__range:]) - 0.08)"
|
||||||
|
CLIMATE_TEMP_MAX_BOUND_SERIES = f"(max_over_time(({CLIMATE_TEMP_SERIES})[$__range:]) + 0.08)"
|
||||||
CLIMATE_HUMIDITY_MIN_BOUND_SERIES = (
|
CLIMATE_HUMIDITY_MIN_BOUND_SERIES = (
|
||||||
f"clamp_min((min_over_time({CLIMATE_HUMIDITY_SERIES}[$__range]) - 0.35), 0)"
|
f"clamp_min((min_over_time(({CLIMATE_HUMIDITY_SERIES})[$__range:]) - 0.35), 0)"
|
||||||
)
|
)
|
||||||
CLIMATE_HUMIDITY_MAX_BOUND_SERIES = (
|
CLIMATE_HUMIDITY_MAX_BOUND_SERIES = (
|
||||||
f"clamp_max((max_over_time({CLIMATE_HUMIDITY_SERIES}[$__range]) + 0.35), 100)"
|
f"clamp_max((max_over_time(({CLIMATE_HUMIDITY_SERIES})[$__range:]) + 0.35), 100)"
|
||||||
)
|
)
|
||||||
CLIMATE_PRESSURE_MIN_BOUND_SERIES = (
|
CLIMATE_PRESSURE_MIN_BOUND_SERIES = (
|
||||||
f"clamp_min((min_over_time({CLIMATE_PRESSURE_SERIES}[$__range]) - 0.03), 0)"
|
f"clamp_min((min_over_time(({CLIMATE_PRESSURE_SERIES})[$__range:]) - 0.03), 0)"
|
||||||
)
|
)
|
||||||
CLIMATE_PRESSURE_MAX_BOUND_SERIES = (
|
CLIMATE_PRESSURE_MAX_BOUND_SERIES = (
|
||||||
f"(max_over_time({CLIMATE_PRESSURE_SERIES}[$__range]) + 0.03)"
|
f"(max_over_time(({CLIMATE_PRESSURE_SERIES})[$__range:]) + 0.03)"
|
||||||
)
|
)
|
||||||
CLIMATE_FAN_OUTLET_CURRENT = (
|
CLIMATE_FAN_OUTLET_CURRENT = (
|
||||||
f'max(max without ({CLIMATE_DEDUP_LABELS}) (typhon_fan_speed_level{{fan_group="outlet"}})) or on() vector(0)'
|
f'max(max without ({CLIMATE_DEDUP_LABELS}) (typhon_fan_speed_level{{fan_group="outlet"}})) or on() vector(0)'
|
||||||
@ -1048,6 +1061,12 @@ def canvas_metric_grid_panel(
|
|||||||
|
|
||||||
if color_fields is None:
|
if color_fields is None:
|
||||||
color_fields = [targets[0]["legendFormat"], targets[1]["legendFormat"], targets[2]["legendFormat"], targets[3]["legendFormat"]]
|
color_fields = [targets[0]["legendFormat"], targets[1]["legendFormat"], targets[2]["legendFormat"], targets[3]["legendFormat"]]
|
||||||
|
panel_h = int(grid.get("h", 6))
|
||||||
|
# Keep the 2x2 block centered enough across the two panel heights we use in overview.
|
||||||
|
x_left = 18
|
||||||
|
x_right = x_left + 156
|
||||||
|
y_top = 24 if panel_h <= 5 else 28
|
||||||
|
y_row2 = y_top + 58
|
||||||
|
|
||||||
def text_element(name, text, left, top):
|
def text_element(name, text, left, top):
|
||||||
return {
|
return {
|
||||||
@ -1132,14 +1151,14 @@ def canvas_metric_grid_panel(
|
|||||||
"type": "frame",
|
"type": "frame",
|
||||||
"name": f"{title} frame",
|
"name": f"{title} frame",
|
||||||
"elements": [
|
"elements": [
|
||||||
text_element("Cell 1 label", targets[0]["legendFormat"], 12, 18),
|
text_element("Cell 1 label", targets[0]["legendFormat"], x_left, y_top),
|
||||||
metric_element("Cell 1", targets[0]["legendFormat"], 12, 32),
|
metric_element("Cell 1", targets[0]["legendFormat"], x_left, y_top + 14),
|
||||||
text_element("Cell 2 label", targets[1]["legendFormat"], 168, 18),
|
text_element("Cell 2 label", targets[1]["legendFormat"], x_right, y_top),
|
||||||
metric_element("Cell 2", targets[1]["legendFormat"], 168, 32),
|
metric_element("Cell 2", targets[1]["legendFormat"], x_right, y_top + 14),
|
||||||
text_element("Cell 3 label", targets[2]["legendFormat"], 12, 76),
|
text_element("Cell 3 label", targets[2]["legendFormat"], x_left, y_row2),
|
||||||
metric_element("Cell 3", targets[2]["legendFormat"], 12, 90),
|
metric_element("Cell 3", targets[2]["legendFormat"], x_left, y_row2 + 14),
|
||||||
text_element("Cell 4 label", targets[3]["legendFormat"], 168, 76),
|
text_element("Cell 4 label", targets[3]["legendFormat"], x_right, y_row2),
|
||||||
metric_element("Cell 4", targets[3]["legendFormat"], 168, 90),
|
metric_element("Cell 4", targets[3]["legendFormat"], x_right, y_row2 + 14),
|
||||||
],
|
],
|
||||||
"background": {"color": {"fixed": "transparent"}},
|
"background": {"color": {"fixed": "transparent"}},
|
||||||
"border": {"color": {"fixed": "transparent"}},
|
"border": {"color": {"fixed": "transparent"}},
|
||||||
@ -1814,7 +1833,10 @@ def build_overview():
|
|||||||
{"matcher": {"id": "byName", "options": "Pressure"}, "properties": [{"id": "unit", "value": "suffix:kPa"}]},
|
{"matcher": {"id": "byName", "options": "Pressure"}, "properties": [{"id": "unit", "value": "suffix:kPa"}]},
|
||||||
],
|
],
|
||||||
links=link_to("atlas-power"),
|
links=link_to("atlas-power"),
|
||||||
description="Current tent values in a fixed 2x2 layout: Temp °C / Temp °F / Humidity / Pressure.",
|
description=(
|
||||||
|
"Current tent values in a fixed 2x2 layout: Temp °C / Temp °F / Humidity / Pressure. "
|
||||||
|
"Values only render when Typhon reports the controller online."
|
||||||
|
),
|
||||||
metric_size=30,
|
metric_size=30,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -1907,7 +1929,10 @@ def build_overview():
|
|||||||
legend_display="list",
|
legend_display="list",
|
||||||
legend_placement="bottom",
|
legend_placement="bottom",
|
||||||
links=link_to("atlas-power"),
|
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.",
|
description=(
|
||||||
|
"Temperature on left axis, humidity and pressure on right axis with dynamic bound series so small swings remain visible. "
|
||||||
|
"Series are filtered to online controllers to avoid plotting stale offline snapshots."
|
||||||
|
),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
panels.append(
|
panels.append(
|
||||||
|
|||||||
@ -1194,8 +1194,8 @@
|
|||||||
"vertical": "top"
|
"vertical": "top"
|
||||||
},
|
},
|
||||||
"placement": {
|
"placement": {
|
||||||
"left": 12,
|
"left": 18,
|
||||||
"top": 18,
|
"top": 24,
|
||||||
"width": 146,
|
"width": 146,
|
||||||
"height": 14
|
"height": 14
|
||||||
},
|
},
|
||||||
@ -1230,8 +1230,8 @@
|
|||||||
"vertical": "top"
|
"vertical": "top"
|
||||||
},
|
},
|
||||||
"placement": {
|
"placement": {
|
||||||
"left": 12,
|
"left": 18,
|
||||||
"top": 32,
|
"top": 38,
|
||||||
"width": 146,
|
"width": 146,
|
||||||
"height": 42
|
"height": 42
|
||||||
},
|
},
|
||||||
@ -1269,8 +1269,8 @@
|
|||||||
"vertical": "top"
|
"vertical": "top"
|
||||||
},
|
},
|
||||||
"placement": {
|
"placement": {
|
||||||
"left": 168,
|
"left": 174,
|
||||||
"top": 18,
|
"top": 24,
|
||||||
"width": 146,
|
"width": 146,
|
||||||
"height": 14
|
"height": 14
|
||||||
},
|
},
|
||||||
@ -1305,8 +1305,8 @@
|
|||||||
"vertical": "top"
|
"vertical": "top"
|
||||||
},
|
},
|
||||||
"placement": {
|
"placement": {
|
||||||
"left": 168,
|
"left": 174,
|
||||||
"top": 32,
|
"top": 38,
|
||||||
"width": 146,
|
"width": 146,
|
||||||
"height": 42
|
"height": 42
|
||||||
},
|
},
|
||||||
@ -1344,8 +1344,8 @@
|
|||||||
"vertical": "top"
|
"vertical": "top"
|
||||||
},
|
},
|
||||||
"placement": {
|
"placement": {
|
||||||
"left": 12,
|
"left": 18,
|
||||||
"top": 76,
|
"top": 82,
|
||||||
"width": 146,
|
"width": 146,
|
||||||
"height": 14
|
"height": 14
|
||||||
},
|
},
|
||||||
@ -1380,8 +1380,8 @@
|
|||||||
"vertical": "top"
|
"vertical": "top"
|
||||||
},
|
},
|
||||||
"placement": {
|
"placement": {
|
||||||
"left": 12,
|
"left": 18,
|
||||||
"top": 90,
|
"top": 96,
|
||||||
"width": 146,
|
"width": 146,
|
||||||
"height": 42
|
"height": 42
|
||||||
},
|
},
|
||||||
@ -1419,8 +1419,8 @@
|
|||||||
"vertical": "top"
|
"vertical": "top"
|
||||||
},
|
},
|
||||||
"placement": {
|
"placement": {
|
||||||
"left": 168,
|
"left": 174,
|
||||||
"top": 76,
|
"top": 82,
|
||||||
"width": 146,
|
"width": 146,
|
||||||
"height": 14
|
"height": 14
|
||||||
},
|
},
|
||||||
@ -1455,8 +1455,8 @@
|
|||||||
"vertical": "top"
|
"vertical": "top"
|
||||||
},
|
},
|
||||||
"placement": {
|
"placement": {
|
||||||
"left": 168,
|
"left": 174,
|
||||||
"top": 90,
|
"top": 96,
|
||||||
"width": 146,
|
"width": 146,
|
||||||
"height": 42
|
"height": 42
|
||||||
},
|
},
|
||||||
@ -1579,25 +1579,25 @@
|
|||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"refId": "A",
|
"refId": "A",
|
||||||
"expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)) or on() vector(0)",
|
"expr": "max((max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0))",
|
||||||
"legendFormat": "Temp \u00b0C",
|
"legendFormat": "Temp \u00b0C",
|
||||||
"instant": true
|
"instant": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"refId": "B",
|
"refId": "B",
|
||||||
"expr": "max((max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)) * 9 / 5 + 32) or on() vector(0)",
|
"expr": "max(((max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0)) * 9 / 5 + 32)",
|
||||||
"legendFormat": "Temp \u00b0F",
|
"legendFormat": "Temp \u00b0F",
|
||||||
"instant": true
|
"instant": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"refId": "C",
|
"refId": "C",
|
||||||
"expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent != 0)) or on() vector(0)",
|
"expr": "max((max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0))",
|
||||||
"legendFormat": "Humidity",
|
"legendFormat": "Humidity",
|
||||||
"instant": true
|
"instant": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"refId": "D",
|
"refId": "D",
|
||||||
"expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa != 0)) or on() vector(0)",
|
"expr": "max((max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0))",
|
||||||
"legendFormat": "Pressure",
|
"legendFormat": "Pressure",
|
||||||
"instant": true
|
"instant": true
|
||||||
}
|
}
|
||||||
@ -1690,8 +1690,8 @@
|
|||||||
"vertical": "top"
|
"vertical": "top"
|
||||||
},
|
},
|
||||||
"placement": {
|
"placement": {
|
||||||
"left": 12,
|
"left": 18,
|
||||||
"top": 18,
|
"top": 28,
|
||||||
"width": 146,
|
"width": 146,
|
||||||
"height": 14
|
"height": 14
|
||||||
},
|
},
|
||||||
@ -1726,8 +1726,8 @@
|
|||||||
"vertical": "top"
|
"vertical": "top"
|
||||||
},
|
},
|
||||||
"placement": {
|
"placement": {
|
||||||
"left": 12,
|
"left": 18,
|
||||||
"top": 32,
|
"top": 42,
|
||||||
"width": 146,
|
"width": 146,
|
||||||
"height": 42
|
"height": 42
|
||||||
},
|
},
|
||||||
@ -1765,8 +1765,8 @@
|
|||||||
"vertical": "top"
|
"vertical": "top"
|
||||||
},
|
},
|
||||||
"placement": {
|
"placement": {
|
||||||
"left": 168,
|
"left": 174,
|
||||||
"top": 18,
|
"top": 28,
|
||||||
"width": 146,
|
"width": 146,
|
||||||
"height": 14
|
"height": 14
|
||||||
},
|
},
|
||||||
@ -1801,8 +1801,8 @@
|
|||||||
"vertical": "top"
|
"vertical": "top"
|
||||||
},
|
},
|
||||||
"placement": {
|
"placement": {
|
||||||
"left": 168,
|
"left": 174,
|
||||||
"top": 32,
|
"top": 42,
|
||||||
"width": 146,
|
"width": 146,
|
||||||
"height": 42
|
"height": 42
|
||||||
},
|
},
|
||||||
@ -1840,8 +1840,8 @@
|
|||||||
"vertical": "top"
|
"vertical": "top"
|
||||||
},
|
},
|
||||||
"placement": {
|
"placement": {
|
||||||
"left": 12,
|
"left": 18,
|
||||||
"top": 76,
|
"top": 86,
|
||||||
"width": 146,
|
"width": 146,
|
||||||
"height": 14
|
"height": 14
|
||||||
},
|
},
|
||||||
@ -1876,8 +1876,8 @@
|
|||||||
"vertical": "top"
|
"vertical": "top"
|
||||||
},
|
},
|
||||||
"placement": {
|
"placement": {
|
||||||
"left": 12,
|
"left": 18,
|
||||||
"top": 90,
|
"top": 100,
|
||||||
"width": 146,
|
"width": 146,
|
||||||
"height": 42
|
"height": 42
|
||||||
},
|
},
|
||||||
@ -1915,8 +1915,8 @@
|
|||||||
"vertical": "top"
|
"vertical": "top"
|
||||||
},
|
},
|
||||||
"placement": {
|
"placement": {
|
||||||
"left": 168,
|
"left": 174,
|
||||||
"top": 76,
|
"top": 86,
|
||||||
"width": 146,
|
"width": 146,
|
||||||
"height": 14
|
"height": 14
|
||||||
},
|
},
|
||||||
@ -1951,8 +1951,8 @@
|
|||||||
"vertical": "top"
|
"vertical": "top"
|
||||||
},
|
},
|
||||||
"placement": {
|
"placement": {
|
||||||
"left": 168,
|
"left": 174,
|
||||||
"top": 90,
|
"top": 100,
|
||||||
"width": 146,
|
"width": 146,
|
||||||
"height": 42
|
"height": 42
|
||||||
},
|
},
|
||||||
@ -2002,7 +2002,7 @@
|
|||||||
"targetBlank": true
|
"targetBlank": true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "Current tent values in a fixed 2x2 layout: Temp \u00b0C / Temp \u00b0F / Humidity / Pressure."
|
"description": "Current tent values in a fixed 2x2 layout: Temp \u00b0C / Temp \u00b0F / Humidity / Pressure. Values only render when Typhon reports the controller online."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 43,
|
"id": 43,
|
||||||
@ -2021,47 +2021,47 @@
|
|||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"refId": "A",
|
"refId": "A",
|
||||||
"expr": "max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)",
|
"expr": "(max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0)",
|
||||||
"legendFormat": "C"
|
"legendFormat": "C"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"refId": "B",
|
"refId": "B",
|
||||||
"expr": "max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent != 0)",
|
"expr": "(max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0)",
|
||||||
"legendFormat": "RH"
|
"legendFormat": "RH"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"refId": "C",
|
"refId": "C",
|
||||||
"expr": "max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa != 0)",
|
"expr": "(max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0)",
|
||||||
"legendFormat": "P"
|
"legendFormat": "P"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"refId": "D",
|
"refId": "D",
|
||||||
"expr": "(min_over_time(max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)[$__range]) - 0.08)",
|
"expr": "(min_over_time(((max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0))[$__range:]) - 0.08)",
|
||||||
"legendFormat": "C bound min"
|
"legendFormat": "C bound min"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"refId": "E",
|
"refId": "E",
|
||||||
"expr": "(max_over_time(max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)[$__range]) + 0.08)",
|
"expr": "(max_over_time(((max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0))[$__range:]) + 0.08)",
|
||||||
"legendFormat": "C bound max"
|
"legendFormat": "C bound max"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"refId": "F",
|
"refId": "F",
|
||||||
"expr": "clamp_min((min_over_time(max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent != 0)[$__range]) - 0.35), 0)",
|
"expr": "clamp_min((min_over_time(((max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0))[$__range:]) - 0.35), 0)",
|
||||||
"legendFormat": "RH bound min"
|
"legendFormat": "RH bound min"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"refId": "G",
|
"refId": "G",
|
||||||
"expr": "clamp_max((max_over_time(max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent != 0)[$__range]) + 0.35), 100)",
|
"expr": "clamp_max((max_over_time(((max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0))[$__range:]) + 0.35), 100)",
|
||||||
"legendFormat": "RH bound max"
|
"legendFormat": "RH bound max"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"refId": "H",
|
"refId": "H",
|
||||||
"expr": "clamp_min((min_over_time(max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa != 0)[$__range]) - 0.03), 0)",
|
"expr": "clamp_min((min_over_time(((max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0))[$__range:]) - 0.03), 0)",
|
||||||
"legendFormat": "P bound min"
|
"legendFormat": "P bound min"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"refId": "I",
|
"refId": "I",
|
||||||
"expr": "(max_over_time(max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa != 0)[$__range]) + 0.03)",
|
"expr": "(max_over_time(((max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0))[$__range:]) + 0.03)",
|
||||||
"legendFormat": "P bound max"
|
"legendFormat": "P bound max"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@ -2301,7 +2301,7 @@
|
|||||||
"targetBlank": true
|
"targetBlank": true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "Temperature on left axis, humidity and pressure on right axis with dynamic bound series so small swings remain visible."
|
"description": "Temperature on left axis, humidity and pressure on right axis with dynamic bound series so small swings remain visible. Series are filtered to online controllers to avoid plotting stale offline snapshots."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 140,
|
"id": 140,
|
||||||
|
|||||||
@ -163,7 +163,7 @@
|
|||||||
},
|
},
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "label_replace((max(max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)) or on() vector(0)), \"metric\", \"Temp \u00b0C\", \"__name__\", \".*\") or label_replace((max((max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)) * 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 != 0)) or on() vector(0)), \"metric\", \"Humidity\", \"__name__\", \".*\") or label_replace((max(max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa != 0)) or on() vector(0)), \"metric\", \"Pressure\", \"__name__\", \".*\")",
|
"expr": "label_replace((max((max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0))), \"metric\", \"Temp \u00b0C\", \"__name__\", \".*\") or label_replace((max(((max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0)) * 9 / 5 + 32)), \"metric\", \"Temp \u00b0F\", \"__name__\", \".*\") or label_replace((max((max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0))), \"metric\", \"Humidity\", \"__name__\", \".*\") or label_replace((max((max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0))), \"metric\", \"Pressure\", \"__name__\", \".*\")",
|
||||||
"refId": "A",
|
"refId": "A",
|
||||||
"legendFormat": "{{metric}}",
|
"legendFormat": "{{metric}}",
|
||||||
"instant": true
|
"instant": true
|
||||||
@ -283,22 +283,22 @@
|
|||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"refId": "A",
|
"refId": "A",
|
||||||
"expr": "max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)",
|
"expr": "(max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0)",
|
||||||
"legendFormat": "Temperature (\u00b0C)"
|
"legendFormat": "Temperature (\u00b0C)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"refId": "B",
|
"refId": "B",
|
||||||
"expr": "(max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)) * 9 / 5 + 32",
|
"expr": "((max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0)) * 9 / 5 + 32",
|
||||||
"legendFormat": "Temperature (\u00b0F)"
|
"legendFormat": "Temperature (\u00b0F)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"refId": "C",
|
"refId": "C",
|
||||||
"expr": "max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent != 0)",
|
"expr": "(max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0)",
|
||||||
"legendFormat": "Humidity (%)"
|
"legendFormat": "Humidity (%)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"refId": "D",
|
"refId": "D",
|
||||||
"expr": "max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa != 0)",
|
"expr": "(max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0)",
|
||||||
"legendFormat": "Pressure (VPD kPa)"
|
"legendFormat": "Pressure (VPD kPa)"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@ -1203,8 +1203,8 @@ data:
|
|||||||
"vertical": "top"
|
"vertical": "top"
|
||||||
},
|
},
|
||||||
"placement": {
|
"placement": {
|
||||||
"left": 12,
|
"left": 18,
|
||||||
"top": 18,
|
"top": 24,
|
||||||
"width": 146,
|
"width": 146,
|
||||||
"height": 14
|
"height": 14
|
||||||
},
|
},
|
||||||
@ -1239,8 +1239,8 @@ data:
|
|||||||
"vertical": "top"
|
"vertical": "top"
|
||||||
},
|
},
|
||||||
"placement": {
|
"placement": {
|
||||||
"left": 12,
|
"left": 18,
|
||||||
"top": 32,
|
"top": 38,
|
||||||
"width": 146,
|
"width": 146,
|
||||||
"height": 42
|
"height": 42
|
||||||
},
|
},
|
||||||
@ -1278,8 +1278,8 @@ data:
|
|||||||
"vertical": "top"
|
"vertical": "top"
|
||||||
},
|
},
|
||||||
"placement": {
|
"placement": {
|
||||||
"left": 168,
|
"left": 174,
|
||||||
"top": 18,
|
"top": 24,
|
||||||
"width": 146,
|
"width": 146,
|
||||||
"height": 14
|
"height": 14
|
||||||
},
|
},
|
||||||
@ -1314,8 +1314,8 @@ data:
|
|||||||
"vertical": "top"
|
"vertical": "top"
|
||||||
},
|
},
|
||||||
"placement": {
|
"placement": {
|
||||||
"left": 168,
|
"left": 174,
|
||||||
"top": 32,
|
"top": 38,
|
||||||
"width": 146,
|
"width": 146,
|
||||||
"height": 42
|
"height": 42
|
||||||
},
|
},
|
||||||
@ -1353,8 +1353,8 @@ data:
|
|||||||
"vertical": "top"
|
"vertical": "top"
|
||||||
},
|
},
|
||||||
"placement": {
|
"placement": {
|
||||||
"left": 12,
|
"left": 18,
|
||||||
"top": 76,
|
"top": 82,
|
||||||
"width": 146,
|
"width": 146,
|
||||||
"height": 14
|
"height": 14
|
||||||
},
|
},
|
||||||
@ -1389,8 +1389,8 @@ data:
|
|||||||
"vertical": "top"
|
"vertical": "top"
|
||||||
},
|
},
|
||||||
"placement": {
|
"placement": {
|
||||||
"left": 12,
|
"left": 18,
|
||||||
"top": 90,
|
"top": 96,
|
||||||
"width": 146,
|
"width": 146,
|
||||||
"height": 42
|
"height": 42
|
||||||
},
|
},
|
||||||
@ -1428,8 +1428,8 @@ data:
|
|||||||
"vertical": "top"
|
"vertical": "top"
|
||||||
},
|
},
|
||||||
"placement": {
|
"placement": {
|
||||||
"left": 168,
|
"left": 174,
|
||||||
"top": 76,
|
"top": 82,
|
||||||
"width": 146,
|
"width": 146,
|
||||||
"height": 14
|
"height": 14
|
||||||
},
|
},
|
||||||
@ -1464,8 +1464,8 @@ data:
|
|||||||
"vertical": "top"
|
"vertical": "top"
|
||||||
},
|
},
|
||||||
"placement": {
|
"placement": {
|
||||||
"left": 168,
|
"left": 174,
|
||||||
"top": 90,
|
"top": 96,
|
||||||
"width": 146,
|
"width": 146,
|
||||||
"height": 42
|
"height": 42
|
||||||
},
|
},
|
||||||
@ -1588,25 +1588,25 @@ data:
|
|||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"refId": "A",
|
"refId": "A",
|
||||||
"expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)) or on() vector(0)",
|
"expr": "max((max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0))",
|
||||||
"legendFormat": "Temp \u00b0C",
|
"legendFormat": "Temp \u00b0C",
|
||||||
"instant": true
|
"instant": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"refId": "B",
|
"refId": "B",
|
||||||
"expr": "max((max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)) * 9 / 5 + 32) or on() vector(0)",
|
"expr": "max(((max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0)) * 9 / 5 + 32)",
|
||||||
"legendFormat": "Temp \u00b0F",
|
"legendFormat": "Temp \u00b0F",
|
||||||
"instant": true
|
"instant": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"refId": "C",
|
"refId": "C",
|
||||||
"expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent != 0)) or on() vector(0)",
|
"expr": "max((max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0))",
|
||||||
"legendFormat": "Humidity",
|
"legendFormat": "Humidity",
|
||||||
"instant": true
|
"instant": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"refId": "D",
|
"refId": "D",
|
||||||
"expr": "max(max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa != 0)) or on() vector(0)",
|
"expr": "max((max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0))",
|
||||||
"legendFormat": "Pressure",
|
"legendFormat": "Pressure",
|
||||||
"instant": true
|
"instant": true
|
||||||
}
|
}
|
||||||
@ -1699,8 +1699,8 @@ data:
|
|||||||
"vertical": "top"
|
"vertical": "top"
|
||||||
},
|
},
|
||||||
"placement": {
|
"placement": {
|
||||||
"left": 12,
|
"left": 18,
|
||||||
"top": 18,
|
"top": 28,
|
||||||
"width": 146,
|
"width": 146,
|
||||||
"height": 14
|
"height": 14
|
||||||
},
|
},
|
||||||
@ -1735,8 +1735,8 @@ data:
|
|||||||
"vertical": "top"
|
"vertical": "top"
|
||||||
},
|
},
|
||||||
"placement": {
|
"placement": {
|
||||||
"left": 12,
|
"left": 18,
|
||||||
"top": 32,
|
"top": 42,
|
||||||
"width": 146,
|
"width": 146,
|
||||||
"height": 42
|
"height": 42
|
||||||
},
|
},
|
||||||
@ -1774,8 +1774,8 @@ data:
|
|||||||
"vertical": "top"
|
"vertical": "top"
|
||||||
},
|
},
|
||||||
"placement": {
|
"placement": {
|
||||||
"left": 168,
|
"left": 174,
|
||||||
"top": 18,
|
"top": 28,
|
||||||
"width": 146,
|
"width": 146,
|
||||||
"height": 14
|
"height": 14
|
||||||
},
|
},
|
||||||
@ -1810,8 +1810,8 @@ data:
|
|||||||
"vertical": "top"
|
"vertical": "top"
|
||||||
},
|
},
|
||||||
"placement": {
|
"placement": {
|
||||||
"left": 168,
|
"left": 174,
|
||||||
"top": 32,
|
"top": 42,
|
||||||
"width": 146,
|
"width": 146,
|
||||||
"height": 42
|
"height": 42
|
||||||
},
|
},
|
||||||
@ -1849,8 +1849,8 @@ data:
|
|||||||
"vertical": "top"
|
"vertical": "top"
|
||||||
},
|
},
|
||||||
"placement": {
|
"placement": {
|
||||||
"left": 12,
|
"left": 18,
|
||||||
"top": 76,
|
"top": 86,
|
||||||
"width": 146,
|
"width": 146,
|
||||||
"height": 14
|
"height": 14
|
||||||
},
|
},
|
||||||
@ -1885,8 +1885,8 @@ data:
|
|||||||
"vertical": "top"
|
"vertical": "top"
|
||||||
},
|
},
|
||||||
"placement": {
|
"placement": {
|
||||||
"left": 12,
|
"left": 18,
|
||||||
"top": 90,
|
"top": 100,
|
||||||
"width": 146,
|
"width": 146,
|
||||||
"height": 42
|
"height": 42
|
||||||
},
|
},
|
||||||
@ -1924,8 +1924,8 @@ data:
|
|||||||
"vertical": "top"
|
"vertical": "top"
|
||||||
},
|
},
|
||||||
"placement": {
|
"placement": {
|
||||||
"left": 168,
|
"left": 174,
|
||||||
"top": 76,
|
"top": 86,
|
||||||
"width": 146,
|
"width": 146,
|
||||||
"height": 14
|
"height": 14
|
||||||
},
|
},
|
||||||
@ -1960,8 +1960,8 @@ data:
|
|||||||
"vertical": "top"
|
"vertical": "top"
|
||||||
},
|
},
|
||||||
"placement": {
|
"placement": {
|
||||||
"left": 168,
|
"left": 174,
|
||||||
"top": 90,
|
"top": 100,
|
||||||
"width": 146,
|
"width": 146,
|
||||||
"height": 42
|
"height": 42
|
||||||
},
|
},
|
||||||
@ -2011,7 +2011,7 @@ data:
|
|||||||
"targetBlank": true
|
"targetBlank": true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "Current tent values in a fixed 2x2 layout: Temp \u00b0C / Temp \u00b0F / Humidity / Pressure."
|
"description": "Current tent values in a fixed 2x2 layout: Temp \u00b0C / Temp \u00b0F / Humidity / Pressure. Values only render when Typhon reports the controller online."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 43,
|
"id": 43,
|
||||||
@ -2030,47 +2030,47 @@ data:
|
|||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"refId": "A",
|
"refId": "A",
|
||||||
"expr": "max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)",
|
"expr": "(max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0)",
|
||||||
"legendFormat": "C"
|
"legendFormat": "C"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"refId": "B",
|
"refId": "B",
|
||||||
"expr": "max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent != 0)",
|
"expr": "(max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0)",
|
||||||
"legendFormat": "RH"
|
"legendFormat": "RH"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"refId": "C",
|
"refId": "C",
|
||||||
"expr": "max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa != 0)",
|
"expr": "(max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0)",
|
||||||
"legendFormat": "P"
|
"legendFormat": "P"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"refId": "D",
|
"refId": "D",
|
||||||
"expr": "(min_over_time(max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)[$__range]) - 0.08)",
|
"expr": "(min_over_time(((max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0))[$__range:]) - 0.08)",
|
||||||
"legendFormat": "C bound min"
|
"legendFormat": "C bound min"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"refId": "E",
|
"refId": "E",
|
||||||
"expr": "(max_over_time(max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)[$__range]) + 0.08)",
|
"expr": "(max_over_time(((max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0))[$__range:]) + 0.08)",
|
||||||
"legendFormat": "C bound max"
|
"legendFormat": "C bound max"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"refId": "F",
|
"refId": "F",
|
||||||
"expr": "clamp_min((min_over_time(max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent != 0)[$__range]) - 0.35), 0)",
|
"expr": "clamp_min((min_over_time(((max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0))[$__range:]) - 0.35), 0)",
|
||||||
"legendFormat": "RH bound min"
|
"legendFormat": "RH bound min"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"refId": "G",
|
"refId": "G",
|
||||||
"expr": "clamp_max((max_over_time(max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent != 0)[$__range]) + 0.35), 100)",
|
"expr": "clamp_max((max_over_time(((max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0))[$__range:]) + 0.35), 100)",
|
||||||
"legendFormat": "RH bound max"
|
"legendFormat": "RH bound max"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"refId": "H",
|
"refId": "H",
|
||||||
"expr": "clamp_min((min_over_time(max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa != 0)[$__range]) - 0.03), 0)",
|
"expr": "clamp_min((min_over_time(((max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0))[$__range:]) - 0.03), 0)",
|
||||||
"legendFormat": "P bound min"
|
"legendFormat": "P bound min"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"refId": "I",
|
"refId": "I",
|
||||||
"expr": "(max_over_time(max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa != 0)[$__range]) + 0.03)",
|
"expr": "(max_over_time(((max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0))[$__range:]) + 0.03)",
|
||||||
"legendFormat": "P bound max"
|
"legendFormat": "P bound max"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@ -2310,7 +2310,7 @@ data:
|
|||||||
"targetBlank": true
|
"targetBlank": true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "Temperature on left axis, humidity and pressure on right axis with dynamic bound series so small swings remain visible."
|
"description": "Temperature on left axis, humidity and pressure on right axis with dynamic bound series so small swings remain visible. Series are filtered to online controllers to avoid plotting stale offline snapshots."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 140,
|
"id": 140,
|
||||||
|
|||||||
@ -172,7 +172,7 @@ data:
|
|||||||
},
|
},
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "label_replace((max(max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)) or on() vector(0)), \"metric\", \"Temp \u00b0C\", \"__name__\", \".*\") or label_replace((max((max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)) * 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 != 0)) or on() vector(0)), \"metric\", \"Humidity\", \"__name__\", \".*\") or label_replace((max(max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa != 0)) or on() vector(0)), \"metric\", \"Pressure\", \"__name__\", \".*\")",
|
"expr": "label_replace((max((max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0))), \"metric\", \"Temp \u00b0C\", \"__name__\", \".*\") or label_replace((max(((max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0)) * 9 / 5 + 32)), \"metric\", \"Temp \u00b0F\", \"__name__\", \".*\") or label_replace((max((max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0))), \"metric\", \"Humidity\", \"__name__\", \".*\") or label_replace((max((max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0))), \"metric\", \"Pressure\", \"__name__\", \".*\")",
|
||||||
"refId": "A",
|
"refId": "A",
|
||||||
"legendFormat": "{{metric}}",
|
"legendFormat": "{{metric}}",
|
||||||
"instant": true
|
"instant": true
|
||||||
@ -292,22 +292,22 @@ data:
|
|||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"refId": "A",
|
"refId": "A",
|
||||||
"expr": "max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)",
|
"expr": "(max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0)",
|
||||||
"legendFormat": "Temperature (\u00b0C)"
|
"legendFormat": "Temperature (\u00b0C)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"refId": "B",
|
"refId": "B",
|
||||||
"expr": "(max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)) * 9 / 5 + 32",
|
"expr": "((max without (job,instance,pod,service,endpoint,namespace) (typhon_temperature_celsius != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0)) * 9 / 5 + 32",
|
||||||
"legendFormat": "Temperature (\u00b0F)"
|
"legendFormat": "Temperature (\u00b0F)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"refId": "C",
|
"refId": "C",
|
||||||
"expr": "max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent != 0)",
|
"expr": "(max without (job,instance,pod,service,endpoint,namespace) (typhon_relative_humidity_percent != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0)",
|
||||||
"legendFormat": "Humidity (%)"
|
"legendFormat": "Humidity (%)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"refId": "D",
|
"refId": "D",
|
||||||
"expr": "max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa != 0)",
|
"expr": "(max without (job,instance,pod,service,endpoint,namespace) (typhon_vpd_kpa != 0)) and on(controller_id,controller_name) ((max without (job,instance,pod,service,endpoint,namespace) (typhon_controller_online)) > 0)",
|
||||||
"legendFormat": "Pressure (VPD kPa)"
|
"legendFormat": "Pressure (VPD kPa)"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user