2024-07-07 07:44:11 -07:00
{
"annotations" : {
"list" : [
{
"builtIn" : 1 ,
"datasource" : {
"type" : "grafana" ,
"uid" : "-- Grafana --"
} ,
"enable" : true ,
"hide" : true ,
"iconColor" : "rgba(0, 211, 255, 1)" ,
"name" : "Annotations & Alerts" ,
2024-07-26 10:04:22 -07:00
"target" : {
"limit" : 100 ,
"matchAny" : true ,
"tags" : [
"server"
] ,
"type" : "dashboard"
} ,
2024-07-07 07:44:11 -07:00
"type" : "dashboard"
2024-07-26 10:04:22 -07:00
} ,
{
"datasource" : {
"type" : "datasource" ,
"uid" : "grafana"
} ,
"enable" : true ,
"iconColor" : "light-yellow" ,
"name" : "Annotations" ,
"target" : {
"limit" : 100 ,
"matchAny" : true ,
"tags" : [
"server" ,
"MQTT"
] ,
"type" : "tags"
}
2024-07-07 07:44:11 -07:00
}
]
} ,
"editable" : true ,
"fiscalYearStartMonth" : 0 ,
"graphTooltip" : 0 ,
2024-08-09 03:21:13 -07:00
"id" : 11 ,
2024-07-07 07:44:11 -07:00
"links" : [ ] ,
"panels" : [
{
"datasource" : {
"type" : "postgres" ,
"uid" : "PA942B37CCFAF5A81"
} ,
"description" : "Total number of observed nodes in the mesh" ,
"fieldConfig" : {
"defaults" : {
"color" : {
"mode" : "thresholds"
} ,
"mappings" : [ ] ,
"thresholds" : {
"mode" : "absolute" ,
"steps" : [
{
"color" : "green" ,
"value" : null
}
]
} ,
"unit" : "nodes"
} ,
"overrides" : [ ]
} ,
"gridPos" : {
"h" : 4 ,
"w" : 4 ,
"x" : 0 ,
"y" : 0
} ,
"id" : 15 ,
"options" : {
"colorMode" : "value" ,
"graphMode" : "area" ,
"justifyMode" : "auto" ,
"orientation" : "auto" ,
"percentChangeColorMode" : "standard" ,
"reduceOptions" : {
"calcs" : [
"lastNotNull"
] ,
"fields" : "" ,
"values" : false
} ,
"showPercentChange" : false ,
"textMode" : "auto" ,
"wideLayout" : true
} ,
2024-10-22 11:32:21 -07:00
"pluginVersion" : "11.2.2+security-01" ,
2024-07-07 07:44:11 -07:00
"targets" : [
{
"datasource" : {
"type" : "postgres" ,
"uid" : "PA942B37CCFAF5A81"
} ,
"editorMode" : "builder" ,
"format" : "table" ,
2024-07-26 10:04:22 -07:00
"rawSql" : "SELECT COUNT(node_id) FROM node_details WHERE node_id <> '0' LIMIT 50 " ,
2024-07-07 07:44:11 -07:00
"refId" : "A" ,
"sql" : {
"columns" : [
{
"name" : "COUNT" ,
"parameters" : [
{
"name" : "node_id" ,
"type" : "functionParameter"
}
] ,
"type" : "function"
}
] ,
"groupBy" : [ ] ,
"limit" : 50 ,
"whereJsonTree" : {
"children1" : [
{
"id" : "8abb8aaa-4567-489a-bcde-f19082bbe79a" ,
"properties" : {
"field" : "node_id" ,
"fieldSrc" : "field" ,
"operator" : "not_equal" ,
"value" : [
"0"
] ,
"valueError" : [
null
] ,
"valueSrc" : [
"value"
] ,
"valueType" : [
"text"
]
} ,
"type" : "rule"
}
] ,
"id" : "8a9ab9aa-0123-4456-b89a-b190828e3675" ,
"type" : "group"
} ,
"whereString" : "node_id <> '0'"
} ,
2024-07-26 10:04:22 -07:00
"table" : "node_details"
2024-07-07 07:44:11 -07:00
}
] ,
"title" : "Total nodes in mesh" ,
"type" : "stat"
} ,
2024-07-26 10:04:22 -07:00
{
"datasource" : {
2024-10-22 11:32:21 -07:00
"type" : "grafana-postgresql-datasource" ,
"uid" : "PA942B37CCFAF5A81"
2024-07-26 10:04:22 -07:00
} ,
"description" : "Nodes that sent any packet in the last 30 minutes" ,
"fieldConfig" : {
"defaults" : {
"color" : {
"mode" : "thresholds"
} ,
"mappings" : [ ] ,
"thresholds" : {
"mode" : "absolute" ,
"steps" : [
{
"color" : "green" ,
"value" : null
}
]
2024-10-22 11:32:21 -07:00
} ,
"unit" : "nodes"
2024-07-26 10:04:22 -07:00
} ,
"overrides" : [ ]
} ,
"gridPos" : {
"h" : 4 ,
2024-08-09 03:21:13 -07:00
"w" : 4 ,
2024-07-26 10:04:22 -07:00
"x" : 4 ,
"y" : 0
} ,
"id" : 21 ,
"options" : {
"colorMode" : "value" ,
"graphMode" : "area" ,
"justifyMode" : "auto" ,
"orientation" : "auto" ,
"percentChangeColorMode" : "standard" ,
"reduceOptions" : {
"calcs" : [
"lastNotNull"
] ,
"fields" : "" ,
"values" : false
} ,
2024-10-22 11:32:21 -07:00
"showPercentChange" : false ,
2024-07-26 10:04:22 -07:00
"textMode" : "auto" ,
"wideLayout" : true
} ,
2024-10-22 11:32:21 -07:00
"pluginVersion" : "11.2.2+security-01" ,
2024-07-26 10:04:22 -07:00
"targets" : [
{
"datasource" : {
2024-10-22 11:32:21 -07:00
"type" : "grafana-postgresql-datasource" ,
"uid" : "PA942B37CCFAF5A81"
2024-07-26 10:04:22 -07:00
} ,
2024-10-22 11:32:21 -07:00
"editorMode" : "code" ,
"format" : "table" ,
"rawQuery" : true ,
"rawSql" : "SELECT COUNT(*) \nFROM node_details \nWHERE updated_at >= NOW() - INTERVAL '30 minutes';" ,
2024-07-26 10:04:22 -07:00
"refId" : "A" ,
2024-10-22 11:32:21 -07:00
"sql" : {
"columns" : [
{
"parameters" : [
{
"name" : "*" ,
"type" : "functionParameter"
}
] ,
"type" : "function"
}
] ,
"groupBy" : [
{
"property" : {
"type" : "string"
} ,
"type" : "groupBy"
}
] ,
"limit" : 50 ,
"whereJsonTree" : {
"children1" : [
{
"id" : "ab889ba9-4567-489a-bcde-f192911a31e3" ,
"properties" : {
"field" : "updated_at" ,
"fieldSrc" : "field" ,
"operator" : "greater" ,
"value" : [
"Invalid date"
] ,
"valueError" : [
null
] ,
"valueSrc" : [
"value"
] ,
"valueType" : [
"datetime"
]
} ,
"type" : "rule"
}
] ,
"id" : "a8b9a88a-0123-4456-b89a-b19291157437" ,
"type" : "group"
} ,
"whereString" : "updated_at > NULL"
} ,
"table" : "node_details"
2024-07-26 10:04:22 -07:00
}
] ,
"title" : "Active nodes in the last 30 minutes" ,
"type" : "stat"
} ,
2024-08-09 03:21:13 -07:00
{
"datasource" : {
"type" : "grafana-postgresql-datasource" ,
"uid" : "PA942B37CCFAF5A81"
} ,
"description" : "How many nodes are Unknonw and how many are Known.\n\nThe unknown are ones that are either NULL in their long name or \"Unknown\" in their value" ,
"fieldConfig" : {
"defaults" : {
"color" : {
"mode" : "thresholds"
} ,
"fieldMinMax" : false ,
"mappings" : [ ] ,
"thresholds" : {
"mode" : "absolute" ,
"steps" : [
{
"color" : "green" ,
"value" : null
}
]
} ,
"unit" : "nodes"
} ,
"overrides" : [
{
"matcher" : {
"id" : "byName" ,
"options" : "Unnamed"
} ,
"properties" : [
{
"id" : "color" ,
"value" : {
"fixedColor" : "red" ,
"mode" : "fixed"
}
}
]
}
]
} ,
"gridPos" : {
"h" : 4 ,
"w" : 4 ,
"x" : 8 ,
"y" : 0
} ,
"id" : 24 ,
"options" : {
"colorMode" : "value" ,
"graphMode" : "area" ,
"justifyMode" : "center" ,
"orientation" : "auto" ,
"percentChangeColorMode" : "standard" ,
"reduceOptions" : {
"calcs" : [
"lastNotNull"
] ,
"fields" : "" ,
"values" : false
} ,
"showPercentChange" : false ,
"textMode" : "auto" ,
"wideLayout" : true
} ,
2024-10-22 11:32:21 -07:00
"pluginVersion" : "11.2.2+security-01" ,
2024-08-09 03:21:13 -07:00
"targets" : [
{
"datasource" : {
"type" : "grafana-postgresql-datasource" ,
"uid" : "PA942B37CCFAF5A81"
} ,
"editorMode" : "code" ,
"format" : "table" ,
"rawQuery" : true ,
"rawSql" : "SELECT\n COUNT(CASE WHEN long_name IS NULL OR long_name = 'Unknown' AND node_id != '0' THEN 1 END) AS \"Unnamed\",\n COUNT(CASE WHEN long_name IS NOT NULL AND long_name != 'Unknown' AND node_id != '0' THEN 1 END) AS \"Named\"\nFROM\n node_details\n\n" ,
"refId" : "A" ,
"sql" : {
"columns" : [
{
"name" : "COUNT" ,
"parameters" : [
{
"name" : "short_name" ,
"type" : "functionParameter"
}
] ,
"type" : "function"
}
] ,
"groupBy" : [
{
"property" : {
"name" : "short_name" ,
"type" : "string"
} ,
"type" : "groupBy"
}
] ,
"limit" : 50
} ,
"table" : "node_details"
}
] ,
"title" : "Nodes naming status" ,
"type" : "stat"
} ,
2024-07-07 07:44:11 -07:00
{
"datasource" : {
2024-10-22 11:32:21 -07:00
"type" : "grafana-postgresql-datasource" ,
2024-07-07 07:44:11 -07:00
"uid" : "PA942B37CCFAF5A81"
} ,
"description" : "Status of nodes in the MQTT server" ,
"fieldConfig" : {
"defaults" : {
"color" : {
"mode" : "thresholds"
} ,
"fieldMinMax" : false ,
"mappings" : [
{
"options" : {
"none" : {
"color" : "text" ,
"index" : 0 ,
"text" : "⚪️ Unknown"
} ,
"offline" : {
"color" : "red" ,
"index" : 1 ,
"text" : "🛑 Offline"
} ,
"online" : {
"color" : "green" ,
"index" : 2 ,
"text" : "🟢 Online"
}
} ,
"type" : "value"
}
] ,
"thresholds" : {
"mode" : "absolute" ,
"steps" : [
{
"color" : "green" ,
"value" : null
}
]
}
} ,
"overrides" : [ ]
} ,
"gridPos" : {
"h" : 4 ,
2024-08-09 03:21:13 -07:00
"w" : 4 ,
"x" : 12 ,
2024-07-07 07:44:11 -07:00
"y" : 0
} ,
"id" : 17 ,
"options" : {
"colorMode" : "value" ,
"graphMode" : "none" ,
"justifyMode" : "center" ,
"orientation" : "vertical" ,
"percentChangeColorMode" : "standard" ,
"reduceOptions" : {
"calcs" : [
"lastNotNull"
] ,
"fields" : "" ,
"values" : true
} ,
"showPercentChange" : false ,
2024-08-09 03:21:13 -07:00
"textMode" : "value_and_name" ,
2024-07-07 07:44:11 -07:00
"wideLayout" : true
} ,
2024-10-22 11:32:21 -07:00
"pluginVersion" : "11.2.2+security-01" ,
2024-07-07 07:44:11 -07:00
"targets" : [
{
"datasource" : {
"type" : "postgres" ,
"uid" : "PA942B37CCFAF5A81"
} ,
"editorMode" : "builder" ,
"format" : "table" ,
2024-10-22 11:32:21 -07:00
"rawSql" : "SELECT COUNT(mqtt_status), mqtt_status FROM node_details WHERE (COALESCE(mqtt_status, '') <> '' AND mqtt_status NOT LIKE '%none%' AND mqtt_status NOT LIKE '%Unknown%') GROUP BY mqtt_status LIMIT 50 " ,
2024-07-07 07:44:11 -07:00
"refId" : "A" ,
"sql" : {
"columns" : [
{
"name" : "COUNT" ,
"parameters" : [
{
"name" : "mqtt_status" ,
"type" : "functionParameter"
}
] ,
"type" : "function"
} ,
{
"parameters" : [
{
"name" : "mqtt_status" ,
"type" : "functionParameter"
}
] ,
"type" : "function"
}
] ,
"groupBy" : [
{
"property" : {
"name" : "mqtt_status" ,
"type" : "string"
} ,
"type" : "groupBy"
}
] ,
"limit" : 50 ,
"whereJsonTree" : {
"children1" : [
{
"id" : "89b8baab-cdef-4012-b456-7190836a7bf2" ,
"properties" : {
"field" : "mqtt_status" ,
"fieldSrc" : "field" ,
"operator" : "is_not_empty" ,
"value" : [ ] ,
"valueSrc" : [ ] ,
"valueType" : [ ]
} ,
"type" : "rule"
} ,
{
"id" : "ab9a9b88-89ab-4cde-b012-3190836b4df7" ,
"properties" : {
"field" : "mqtt_status" ,
"fieldSrc" : "field" ,
"operator" : "not_like" ,
"value" : [
"none"
] ,
"valueError" : [
null
] ,
"valueSrc" : [
"value"
] ,
"valueType" : [
"text"
]
} ,
"type" : "rule"
2024-10-22 11:32:21 -07:00
} ,
{
"id" : "ab89aa99-0123-4456-b89a-b191382ca762" ,
"properties" : {
"field" : "mqtt_status" ,
"fieldSrc" : "field" ,
"operator" : "not_like" ,
"value" : [
"Unknown"
] ,
"valueError" : [
null
] ,
"valueSrc" : [
"value"
] ,
"valueType" : [
"text"
]
} ,
"type" : "rule"
2024-07-07 07:44:11 -07:00
}
] ,
"id" : "babb9899-0123-4456-b89a-b19079f5bfed" ,
"properties" : {
"conjunction" : "AND"
} ,
"type" : "group"
} ,
2024-10-22 11:32:21 -07:00
"whereString" : "(COALESCE(mqtt_status, '') <> '' AND mqtt_status NOT LIKE '%none%' AND mqtt_status NOT LIKE '%Unknown%')"
2024-07-07 07:44:11 -07:00
} ,
2024-07-26 10:04:22 -07:00
"table" : "node_details"
2024-07-07 07:44:11 -07:00
}
] ,
"title" : "MQTT Node status" ,
"type" : "stat"
} ,
{
"datasource" : {
2024-08-09 03:21:13 -07:00
"type" : "datasource" ,
"uid" : "-- Mixed --"
2024-07-07 07:44:11 -07:00
} ,
2024-08-09 03:21:13 -07:00
"description" : "Total packets sent in specified time range" ,
2024-07-07 07:44:11 -07:00
"fieldConfig" : {
"defaults" : {
"color" : {
2024-08-09 03:21:13 -07:00
"mode" : "palette-classic"
2024-07-07 07:44:11 -07:00
} ,
2024-08-09 03:21:13 -07:00
"fieldMinMax" : false ,
2024-07-07 07:44:11 -07:00
"mappings" : [ ] ,
"thresholds" : {
"mode" : "absolute" ,
"steps" : [
{
"color" : "green" ,
"value" : null
2024-08-09 03:21:13 -07:00
} ,
{
"color" : "red" ,
"value" : 80
2024-07-07 07:44:11 -07:00
}
]
} ,
2024-08-09 03:21:13 -07:00
"unit" : "Packets"
2024-07-07 07:44:11 -07:00
} ,
"overrides" : [ ]
} ,
"gridPos" : {
"h" : 4 ,
2024-08-09 03:21:13 -07:00
"w" : 4 ,
"x" : 16 ,
2024-07-07 07:44:11 -07:00
"y" : 0
} ,
2024-08-09 03:21:13 -07:00
"id" : 22 ,
2024-07-07 07:44:11 -07:00
"options" : {
"colorMode" : "value" ,
2024-08-09 03:21:13 -07:00
"graphMode" : "none" ,
2024-07-07 07:44:11 -07:00
"justifyMode" : "auto" ,
"orientation" : "auto" ,
"percentChangeColorMode" : "standard" ,
"reduceOptions" : {
"calcs" : [
"lastNotNull"
] ,
"fields" : "" ,
"values" : false
} ,
"showPercentChange" : false ,
"textMode" : "auto" ,
"wideLayout" : true
} ,
2024-10-22 11:32:21 -07:00
"pluginVersion" : "11.2.2+security-01" ,
2024-07-07 07:44:11 -07:00
"targets" : [
{
"datasource" : {
"type" : "prometheus" ,
"uid" : "P1809F7CD0C75ACF3"
} ,
"disableTextWrap" : false ,
"editorMode" : "builder" ,
2024-08-09 03:21:13 -07:00
"expr" : "sum(sum by(portnum) (mesh_packet_source_types_total{source_id=~\"$Nodes\"}))" ,
2024-07-07 07:44:11 -07:00
"fullMetaSearch" : false ,
2024-08-09 03:21:13 -07:00
"includeNullMetadata" : true ,
2024-07-07 07:44:11 -07:00
"legendFormat" : "__auto" ,
"range" : true ,
"refId" : "A" ,
"useBackend" : false
}
] ,
2024-08-09 03:21:13 -07:00
"title" : "Total packets sent" ,
2024-07-07 07:44:11 -07:00
"type" : "stat"
} ,
{
"datasource" : {
2024-08-09 03:21:13 -07:00
"type" : "prometheus" ,
"uid" : "P1809F7CD0C75ACF3"
2024-07-07 07:44:11 -07:00
} ,
2024-08-09 03:21:13 -07:00
"description" : "Shows the total data sent on the mesh in bytes in the last hour. This includes all types of packets." ,
2024-07-07 07:44:11 -07:00
"fieldConfig" : {
"defaults" : {
"color" : {
2024-08-09 03:21:13 -07:00
"mode" : "thresholds"
2024-07-07 07:44:11 -07:00
} ,
"mappings" : [ ] ,
"thresholds" : {
"mode" : "absolute" ,
"steps" : [
{
"color" : "green" ,
"value" : null
}
]
2024-07-26 10:04:22 -07:00
} ,
2024-08-09 03:21:13 -07:00
"unit" : "bytes"
2024-07-07 07:44:11 -07:00
} ,
"overrides" : [ ]
} ,
"gridPos" : {
"h" : 4 ,
2024-08-09 03:21:13 -07:00
"w" : 4 ,
"x" : 20 ,
2024-07-07 07:44:11 -07:00
"y" : 0
} ,
2024-08-09 03:21:13 -07:00
"id" : 6 ,
2024-07-07 07:44:11 -07:00
"options" : {
"colorMode" : "value" ,
2024-08-09 03:21:13 -07:00
"graphMode" : "area" ,
2024-07-07 07:44:11 -07:00
"justifyMode" : "auto" ,
"orientation" : "auto" ,
"percentChangeColorMode" : "standard" ,
"reduceOptions" : {
"calcs" : [
"lastNotNull"
] ,
"fields" : "" ,
"values" : false
} ,
2024-07-26 10:04:22 -07:00
"showPercentChange" : false ,
2024-07-07 07:44:11 -07:00
"textMode" : "auto" ,
"wideLayout" : true
} ,
2024-10-22 11:32:21 -07:00
"pluginVersion" : "11.2.2+security-01" ,
2024-07-07 07:44:11 -07:00
"targets" : [
{
"datasource" : {
"type" : "prometheus" ,
"uid" : "P1809F7CD0C75ACF3"
} ,
"disableTextWrap" : false ,
"editorMode" : "builder" ,
2024-08-09 03:21:13 -07:00
"expr" : "sum(sum_over_time(text_message_app_size_in_bytes{source_id=~\"$Nodes\"}[1h]))" ,
2024-07-07 07:44:11 -07:00
"fullMetaSearch" : false ,
2024-08-09 03:21:13 -07:00
"hide" : false ,
"includeNullMetadata" : false ,
"instant" : false ,
2024-07-26 10:04:22 -07:00
"legendFormat" : "__auto" ,
2024-07-07 07:44:11 -07:00
"range" : true ,
"refId" : "A" ,
"useBackend" : false
}
] ,
2024-08-09 03:21:13 -07:00
"title" : "Data sent on mesh in last hour" ,
2024-07-07 07:44:11 -07:00
"type" : "stat"
} ,
2024-10-22 11:32:21 -07:00
{
"collapsed" : false ,
"gridPos" : {
"h" : 1 ,
"w" : 24 ,
"x" : 0 ,
"y" : 4
} ,
"id" : 25 ,
"panels" : [ ] ,
"title" : "Highlighted Nodes" ,
"type" : "row"
} ,
{
"collapsed" : false ,
"gridPos" : {
"h" : 1 ,
"w" : 24 ,
"x" : 0 ,
"y" : 5
} ,
"id" : 16 ,
"panels" : [ ] ,
"title" : "Main Data" ,
"type" : "row"
} ,
2024-08-09 03:21:13 -07:00
{
"datasource" : {
"type" : "prometheus" ,
"uid" : "P1809F7CD0C75ACF3"
} ,
2024-10-22 11:32:21 -07:00
"description" : "Shows the max recorded chanel utilization and the average" ,
2024-08-09 03:21:13 -07:00
"fieldConfig" : {
"defaults" : {
"color" : {
2024-10-22 11:32:21 -07:00
"mode" : "thresholds" ,
"seriesBy" : "last"
2024-08-09 03:21:13 -07:00
} ,
"custom" : {
"axisBorderShow" : false ,
"axisCenteredZero" : false ,
"axisColorMode" : "text" ,
"axisLabel" : "" ,
"axisPlacement" : "auto" ,
2024-10-22 11:32:21 -07:00
"axisSoftMax" : 11 ,
"axisSoftMin" : 3 ,
2024-08-09 03:21:13 -07:00
"barAlignment" : 0 ,
2024-10-22 11:32:21 -07:00
"barWidthFactor" : 0.6 ,
2024-08-09 03:21:13 -07:00
"drawStyle" : "line" ,
"fillOpacity" : 0 ,
"gradientMode" : "none" ,
"hideFrom" : {
"legend" : false ,
"tooltip" : false ,
"viz" : false
} ,
2024-10-22 11:32:21 -07:00
"insertNulls" : 3600000 ,
2024-08-09 03:21:13 -07:00
"lineInterpolation" : "linear" ,
2024-10-22 11:32:21 -07:00
"lineStyle" : {
"fill" : "solid"
} ,
2024-08-09 03:21:13 -07:00
"lineWidth" : 1 ,
"pointSize" : 5 ,
"scaleDistribution" : {
"type" : "linear"
} ,
"showPoints" : "auto" ,
"spanNulls" : false ,
"stacking" : {
"group" : "A" ,
"mode" : "none"
} ,
"thresholdsStyle" : {
"mode" : "dashed+area"
}
} ,
2024-10-22 11:32:21 -07:00
"fieldMinMax" : false ,
2024-08-09 03:21:13 -07:00
"mappings" : [ ] ,
"min" : 0 ,
"thresholds" : {
"mode" : "absolute" ,
"steps" : [
{
"color" : "green" ,
"value" : null
} ,
{
"color" : "yellow" ,
"value" : 8.5
} ,
{
"color" : "red" ,
"value" : 10
}
]
} ,
"unit" : "percent"
} ,
"overrides" : [ ]
} ,
"gridPos" : {
"h" : 9 ,
"w" : 11 ,
"x" : 0 ,
2024-10-22 11:32:21 -07:00
"y" : 6
2024-08-09 03:21:13 -07:00
} ,
2024-10-22 11:32:21 -07:00
"id" : 23 ,
2024-08-09 03:21:13 -07:00
"options" : {
"legend" : {
"calcs" : [
2024-10-22 11:32:21 -07:00
"lastNotNull" ,
"max" ,
"mean"
2024-08-09 03:21:13 -07:00
] ,
"displayMode" : "table" ,
2024-10-22 11:32:21 -07:00
"placement" : "bottom" ,
"showLegend" : false
2024-08-09 03:21:13 -07:00
} ,
"tooltip" : {
"mode" : "multi" ,
"sort" : "none"
}
} ,
"targets" : [
{
"datasource" : {
"type" : "prometheus" ,
"uid" : "P1809F7CD0C75ACF3"
} ,
"disableTextWrap" : false ,
2024-10-22 11:32:21 -07:00
"editorMode" : "builder" ,
"expr" : "avg(telemetry_app_channel_utilization{node_id=~\"$Nodes\"})" ,
2024-08-09 03:21:13 -07:00
"fullMetaSearch" : false ,
2024-10-22 11:32:21 -07:00
"hide" : false ,
2024-08-09 03:21:13 -07:00
"includeNullMetadata" : true ,
"instant" : false ,
2024-10-22 11:32:21 -07:00
"legendFormat" : "Chanel utilization (Avg)" ,
2024-08-09 03:21:13 -07:00
"range" : true ,
2024-10-22 11:32:21 -07:00
"refId" : "Average Chanel Utilization" ,
2024-08-09 03:21:13 -07:00
"useBackend" : false
}
] ,
2024-10-22 11:32:21 -07:00
"title" : "Channel Utilization (ChUtil)" ,
2024-08-09 03:21:13 -07:00
"type" : "timeseries"
} ,
2024-07-07 07:44:11 -07:00
{
"datasource" : {
2024-07-26 10:04:22 -07:00
"type" : "prometheus" ,
"uid" : "P1809F7CD0C75ACF3"
2024-07-07 07:44:11 -07:00
} ,
2024-10-22 11:32:21 -07:00
"description" : "This panel shows the percentage of airtime used for transmissions in the last hour. Airtime in LoRa networks represents the duration a device occupies the radio frequency channel to send data. It's a critical metric for:\n\nNetwork capacity: Higher airtime usage indicates increased network load.\n\nRegulatory compliance: Many regions limit the total airtime per device.\n\nBattery life: More airtime generally means higher power consumption.\n\nThe data comes from Meshtastic packets, reflecting actual network usage. High percentages may suggest the need for optimization or capacity planning." ,
2024-07-07 07:44:11 -07:00
"fieldConfig" : {
"defaults" : {
"color" : {
2024-10-22 11:32:21 -07:00
"mode" : "palette-classic"
2024-07-26 10:04:22 -07:00
} ,
"custom" : {
"axisBorderShow" : false ,
"axisCenteredZero" : false ,
"axisColorMode" : "text" ,
"axisLabel" : "" ,
"axisPlacement" : "auto" ,
2024-10-22 11:32:21 -07:00
"axisSoftMax" : 10 ,
2024-07-26 10:04:22 -07:00
"barAlignment" : 0 ,
2024-10-22 11:32:21 -07:00
"barWidthFactor" : 0.6 ,
"drawStyle" : "points" ,
2024-07-26 10:04:22 -07:00
"fillOpacity" : 0 ,
"gradientMode" : "none" ,
"hideFrom" : {
"legend" : false ,
"tooltip" : false ,
"viz" : false
} ,
2024-10-22 11:32:21 -07:00
"insertNulls" : false ,
2024-07-26 10:04:22 -07:00
"lineInterpolation" : "linear" ,
"lineWidth" : 1 ,
"pointSize" : 5 ,
"scaleDistribution" : {
"type" : "linear"
} ,
"showPoints" : "auto" ,
"spanNulls" : false ,
"stacking" : {
"group" : "A" ,
"mode" : "none"
} ,
"thresholdsStyle" : {
"mode" : "dashed+area"
}
2024-07-07 07:44:11 -07:00
} ,
"fieldMinMax" : false ,
"mappings" : [ ] ,
"thresholds" : {
"mode" : "absolute" ,
"steps" : [
{
"color" : "green" ,
"value" : null
} ,
2024-07-26 10:04:22 -07:00
{
"color" : "yellow" ,
2024-10-22 11:32:21 -07:00
"value" : 5
2024-07-26 10:04:22 -07:00
} ,
2024-07-07 07:44:11 -07:00
{
"color" : "red" ,
2024-10-22 11:32:21 -07:00
"value" : 8
2024-07-07 07:44:11 -07:00
}
]
} ,
2024-07-26 10:04:22 -07:00
"unit" : "percent"
2024-07-07 07:44:11 -07:00
} ,
"overrides" : [ ]
} ,
"gridPos" : {
2024-07-26 10:04:22 -07:00
"h" : 9 ,
2024-10-22 11:32:21 -07:00
"w" : 13 ,
"x" : 11 ,
"y" : 6
2024-07-07 07:44:11 -07:00
} ,
2024-10-22 11:32:21 -07:00
"id" : 3 ,
2024-07-07 07:44:11 -07:00
"options" : {
2024-07-26 10:04:22 -07:00
"legend" : {
2024-07-07 07:44:11 -07:00
"calcs" : [
2024-07-26 10:04:22 -07:00
"mean"
2024-07-07 07:44:11 -07:00
] ,
2024-07-26 10:04:22 -07:00
"displayMode" : "table" ,
2024-10-22 11:32:21 -07:00
"placement" : "right" ,
"showLegend" : true ,
"sortBy" : "Mean" ,
"sortDesc" : true
2024-07-07 07:44:11 -07:00
} ,
2024-07-26 10:04:22 -07:00
"tooltip" : {
2024-10-22 11:32:21 -07:00
"mode" : "single" ,
2024-07-26 10:04:22 -07:00
"sort" : "none"
}
2024-07-07 07:44:11 -07:00
} ,
2024-10-22 11:32:21 -07:00
"pluginVersion" : "10.4.2" ,
2024-07-07 07:44:11 -07:00
"targets" : [
2024-07-26 10:04:22 -07:00
{
"datasource" : {
"type" : "prometheus" ,
"uid" : "P1809F7CD0C75ACF3"
} ,
"disableTextWrap" : false ,
2024-10-22 11:32:21 -07:00
"editorMode" : "code" ,
"exemplar" : false ,
"expr" : "telemetry_app_air_util_tx{node_id=~\"$Nodes\"} > -100\nand\ndelta(telemetry_app_air_util_tx{node_id=~\"$Nodes\"}[1m]) != 0" ,
"format" : "time_series" ,
2024-07-26 10:04:22 -07:00
"fullMetaSearch" : false ,
2024-10-22 11:32:21 -07:00
"includeNullMetadata" : false ,
2024-07-26 10:04:22 -07:00
"instant" : false ,
2024-10-22 11:32:21 -07:00
"legendFormat" : "{{long_name}}" ,
2024-07-26 10:04:22 -07:00
"range" : true ,
2024-10-22 11:32:21 -07:00
"refId" : "A" ,
2024-07-07 07:44:11 -07:00
"useBackend" : false
}
] ,
2024-10-22 11:32:21 -07:00
"title" : "Duty Cycle (AirUtilTX)" ,
2024-07-26 10:04:22 -07:00
"type" : "timeseries"
2024-07-07 07:44:11 -07:00
} ,
{
2024-07-26 10:04:22 -07:00
"datasource" : {
"type" : "prometheus" ,
"uid" : "P1809F7CD0C75ACF3"
} ,
2024-10-22 11:32:21 -07:00
"description" : "Displays the nodes that utilize most of the channel (On average with at least 1 update every hour)" ,
2024-07-26 10:04:22 -07:00
"fieldConfig" : {
"defaults" : {
"color" : {
"mode" : "palette-classic"
} ,
"custom" : {
"axisBorderShow" : false ,
"axisCenteredZero" : false ,
"axisColorMode" : "text" ,
"axisLabel" : "" ,
"axisPlacement" : "auto" ,
"barAlignment" : 0 ,
2024-10-22 11:32:21 -07:00
"barWidthFactor" : 0.6 ,
"drawStyle" : "line" ,
2024-07-26 10:04:22 -07:00
"fillOpacity" : 0 ,
"gradientMode" : "none" ,
"hideFrom" : {
"legend" : false ,
"tooltip" : false ,
"viz" : false
} ,
"insertNulls" : false ,
"lineInterpolation" : "linear" ,
"lineWidth" : 1 ,
"pointSize" : 5 ,
"scaleDistribution" : {
"type" : "linear"
} ,
"showPoints" : "auto" ,
"spanNulls" : false ,
"stacking" : {
"group" : "A" ,
"mode" : "none"
} ,
"thresholdsStyle" : {
"mode" : "dashed+area"
}
} ,
"mappings" : [ ] ,
2024-10-22 11:32:21 -07:00
"min" : 0 ,
2024-07-26 10:04:22 -07:00
"thresholds" : {
"mode" : "absolute" ,
"steps" : [
{
"color" : "green" ,
"value" : null
} ,
{
"color" : "yellow" ,
2024-10-22 11:32:21 -07:00
"value" : 8.5
2024-07-26 10:04:22 -07:00
} ,
{
"color" : "red" ,
2024-10-22 11:32:21 -07:00
"value" : 10
2024-07-26 10:04:22 -07:00
}
]
} ,
"unit" : "percent"
} ,
"overrides" : [ ]
} ,
2024-07-07 07:44:11 -07:00
"gridPos" : {
2024-07-26 10:04:22 -07:00
"h" : 9 ,
2024-10-22 11:32:21 -07:00
"w" : 11 ,
"x" : 0 ,
2024-08-09 03:21:13 -07:00
"y" : 15
2024-07-07 07:44:11 -07:00
} ,
2024-10-22 11:32:21 -07:00
"id" : 26 ,
2024-07-26 10:04:22 -07:00
"options" : {
"legend" : {
"calcs" : [
2024-10-22 11:32:21 -07:00
"lastNotNull"
2024-07-26 10:04:22 -07:00
] ,
"displayMode" : "table" ,
"placement" : "right" ,
"showLegend" : true ,
2024-10-22 11:32:21 -07:00
"sortBy" : "Last *" ,
2024-07-26 10:04:22 -07:00
"sortDesc" : true
} ,
"tooltip" : {
2024-10-22 11:32:21 -07:00
"mode" : "multi" ,
2024-07-26 10:04:22 -07:00
"sort" : "none"
}
} ,
"targets" : [
{
"datasource" : {
"type" : "prometheus" ,
"uid" : "P1809F7CD0C75ACF3"
} ,
"disableTextWrap" : false ,
"editorMode" : "code" ,
"exemplar" : false ,
2024-10-22 11:32:21 -07:00
"expr" : "topk(3,\n avg by (node_id, short_name, long_name) (\n avg_over_time(telemetry_app_channel_utilization{node_id=~\"$Nodes\"}[$__range]) > 0\n and\n timestamp(telemetry_app_channel_utilization{node_id=~\"$Nodes\"}) > time() - 3600\n and\n changes(telemetry_app_channel_utilization{node_id=~\"$Nodes\"}[3h]) > 0\n )\n)" ,
2024-07-26 10:04:22 -07:00
"fullMetaSearch" : false ,
2024-10-22 11:32:21 -07:00
"includeNullMetadata" : true ,
2024-07-26 10:04:22 -07:00
"instant" : false ,
2024-10-22 11:32:21 -07:00
"legendFormat" : "{{short_name}}:{{long_name}}" ,
2024-07-26 10:04:22 -07:00
"range" : true ,
"refId" : "A" ,
"useBackend" : false
}
] ,
2024-10-22 11:32:21 -07:00
"title" : "Top channel utilizers" ,
2024-07-26 10:04:22 -07:00
"type" : "timeseries"
2024-07-07 07:44:11 -07:00
} ,
2024-10-22 11:32:21 -07:00
{
"datasource" : {
"type" : "datasource" ,
"uid" : "-- Mixed --"
} ,
"description" : "Displays types of packets in the selected time range.\n\nFor more details see:\nhttps://buf.build/meshtastic/protobufs/docs/main:meshtastic#meshtastic.PortNum" ,
"fieldConfig" : {
"defaults" : {
"color" : {
"fixedColor" : "green" ,
"mode" : "palette-classic"
} ,
"custom" : {
"hideFrom" : {
"legend" : false ,
"tooltip" : false ,
"viz" : false
}
} ,
"fieldMinMax" : false ,
"mappings" : [ ] ,
"unit" : "Packets"
} ,
"overrides" : [ ]
} ,
"gridPos" : {
"h" : 9 ,
"w" : 4 ,
"x" : 11 ,
"y" : 15
} ,
"id" : 5 ,
"options" : {
"displayLabels" : [
"name" ,
"percent"
] ,
"legend" : {
"displayMode" : "list" ,
"placement" : "right" ,
"showLegend" : false
} ,
"pieType" : "donut" ,
"reduceOptions" : {
"calcs" : [
"lastNotNull"
] ,
"fields" : "" ,
"values" : false
} ,
"tooltip" : {
"mode" : "single" ,
"sort" : "none"
}
} ,
"pluginVersion" : "11.1.0" ,
"targets" : [
{
"datasource" : {
"type" : "prometheus" ,
"uid" : "P1809F7CD0C75ACF3"
} ,
"disableTextWrap" : false ,
"editorMode" : "builder" ,
"expr" : "sum by(portnum) (mesh_packet_source_types_total{source_id=~\"$Nodes\"})" ,
"fullMetaSearch" : false ,
"includeNullMetadata" : true ,
"legendFormat" : "__auto" ,
"range" : true ,
"refId" : "A" ,
"useBackend" : false
}
] ,
"title" : "Packet types for selected time" ,
"type" : "piechart"
} ,
{
"datasource" : {
"type" : "prometheus" ,
"uid" : "P1809F7CD0C75ACF3"
} ,
"description" : "How many hops are configured for each client" ,
"fieldConfig" : {
"defaults" : {
"color" : {
"mode" : "thresholds"
} ,
"fieldMinMax" : false ,
"mappings" : [ ] ,
"max" : 7 ,
"min" : 0 ,
"thresholds" : {
"mode" : "absolute" ,
"steps" : [
{
"color" : "green" ,
"value" : null
} ,
{
"color" : "#EAB839" ,
"value" : 4
} ,
{
"color" : "semi-dark-orange" ,
"value" : 5
} ,
{
"color" : "red" ,
"value" : 6
} ,
{
"color" : "dark-red" ,
"value" : 7
}
]
} ,
"unit" : "hops"
} ,
"overrides" : [ ]
} ,
"gridPos" : {
"h" : 9 ,
"w" : 9 ,
"x" : 15 ,
"y" : 15
} ,
"id" : 9 ,
"options" : {
"minVizHeight" : 75 ,
"minVizWidth" : 75 ,
"orientation" : "auto" ,
"reduceOptions" : {
"calcs" : [
"lastNotNull"
] ,
"fields" : "" ,
"values" : false
} ,
"showThresholdLabels" : false ,
"showThresholdMarkers" : true ,
"sizing" : "auto"
} ,
"pluginVersion" : "11.2.2+security-01" ,
"targets" : [
{
"datasource" : {
"type" : "prometheus" ,
"uid" : "P1809F7CD0C75ACF3"
} ,
"disableTextWrap" : false ,
"editorMode" : "code" ,
"expr" : "max(\n mesh_packet_hop_start{source_id=~\"$Nodes\"}\n and\n (delta(mesh_packet_hop_start{source_id=~\"$Nodes\"}[1m]) != 0)\n) by (source_id, source_long_name)" ,
"fullMetaSearch" : false ,
"includeNullMetadata" : true ,
"instant" : false ,
"legendFormat" : "{{source_long_name}}" ,
"range" : true ,
"refId" : "A" ,
"useBackend" : false
}
] ,
"title" : "The configured max hops for each client" ,
"type" : "gauge"
} ,
2024-07-07 07:44:11 -07:00
{
"datasource" : {
2024-07-26 10:04:22 -07:00
"type" : "grafana-postgresql-datasource" ,
2024-07-07 07:44:11 -07:00
"uid" : "PA942B37CCFAF5A81"
} ,
"description" : "Graph that is built from Neighbor Info reports and shows the signal strenth for each line" ,
"gridPos" : {
2024-10-22 11:32:21 -07:00
"h" : 22 ,
2024-07-26 10:04:22 -07:00
"w" : 11 ,
2024-07-07 07:44:11 -07:00
"x" : 0 ,
2024-08-09 03:21:13 -07:00
"y" : 24
2024-07-07 07:44:11 -07:00
} ,
"id" : 20 ,
"options" : {
"edges" : {
"mainStatUnit" : "dB"
} ,
"nodes" : {
"arcs" : [ ]
}
} ,
"pluginVersion" : "10.4.2" ,
"targets" : [
{
"datasource" : {
"type" : "postgres" ,
"uid" : "PA942B37CCFAF5A81"
} ,
"editorMode" : "code" ,
"format" : "table" ,
"rawQuery" : true ,
2024-07-26 10:04:22 -07:00
"rawSql" : "SELECT DISTINCT\n cd.node_id AS \"id\",\n cd.long_name AS \"title\",\n cd.hardware_model AS \"detail__Hardware Detail\",\n cd.role AS \"detail__Client Role\",\n cd.mqtt_status AS \"detail__MQTT Status\",\n cd.short_name AS \"subtitle\",\n CASE\n WHEN cd.mqtt_status = 'online' THEN '#2ECC71' -- Green for online\n WHEN cd.mqtt_status = 'offline' THEN '#E74C3C' -- Red for offline\n ELSE '#808080' -- Gray for none or any other status\n END AS \"color\"\nFROM\n node_details cd\nLEFT JOIN (\n SELECT node_id FROM node_neighbors\n UNION\n SELECT neighbor_id FROM node_neighbors\n) nn ON cd.node_id = nn.node_id\nWHERE nn.node_id IS NOT NULL" ,
2024-07-07 07:44:11 -07:00
"refId" : "nodes" ,
"sql" : {
"columns" : [
{
"alias" : "\"id\"" ,
"parameters" : [
{
"name" : "node_id" ,
"type" : "functionParameter"
}
] ,
"type" : "function"
} ,
{
"alias" : "\"title\"" ,
"parameters" : [
{
"name" : "long_name" ,
"type" : "functionParameter"
}
] ,
"type" : "function"
} ,
{
"alias" : "\"detail__Hardware Detail\"" ,
"parameters" : [
{
"name" : "hardware_model" ,
"type" : "functionParameter"
}
] ,
"type" : "function"
} ,
{
"alias" : "\"detail__Client Role\"" ,
"parameters" : [
{
"name" : "role" ,
"type" : "functionParameter"
}
] ,
"type" : "function"
} ,
{
"alias" : "\"detail__MQTT Status\"" ,
"parameters" : [
{
"name" : "mqtt_status" ,
"type" : "functionParameter"
}
] ,
"type" : "function"
} ,
{
"alias" : "\"subtitle\"" ,
"parameters" : [
{
"name" : "short_name" ,
"type" : "functionParameter"
}
] ,
"type" : "function"
}
] ,
"groupBy" : [
{
"property" : {
"type" : "string"
} ,
"type" : "groupBy"
}
] ,
"limit" : 50
} ,
2024-07-26 10:04:22 -07:00
"table" : "node_details"
2024-07-07 07:44:11 -07:00
} ,
{
"datasource" : {
"type" : "postgres" ,
"uid" : "PA942B37CCFAF5A81"
} ,
"editorMode" : "code" ,
"format" : "table" ,
"hide" : false ,
"rawQuery" : true ,
"rawSql" : "SELECT \n CONCAT(neighbor_id, '_', node_id) AS id,\n neighbor_id AS \"source\",\n node_id AS \"target\",\n snr AS \"mainstat\",\n CASE\n WHEN snr < -13 THEN '#E74C3C' -- Red for SNR < -13\n WHEN snr < -7 THEN '#F4D03F' -- Yellow for -13 ≤ SNR < -7\n ELSE '#2ECC71' -- Green for SNR ≥ -7\n END AS \"color\",\n GREATEST(0.1, LEAST(2, 1 + ((snr + 13) / 10))) AS \"thickness\"\nFROM \n node_neighbors" ,
"refId" : "edges" ,
"sql" : {
"columns" : [
{
"parameters" : [
{
"name" : "id" ,
"type" : "functionParameter"
}
] ,
"type" : "function"
} ,
{
"alias" : "\"source\"" ,
"parameters" : [
{
"name" : "neighbor_id" ,
"type" : "functionParameter"
}
] ,
"type" : "function"
} ,
{
"alias" : "\"target\"" ,
"parameters" : [
{
"name" : "node_id" ,
"type" : "functionParameter"
}
] ,
"type" : "function"
} ,
{
"alias" : "\"mainstat\"" ,
"parameters" : [
{
2024-07-26 10:04:22 -07:00
"name" : "snr" ,
"type" : "functionParameter"
}
] ,
"type" : "function"
}
] ,
"groupBy" : [
2024-07-07 07:44:11 -07:00
{
2024-07-26 10:04:22 -07:00
"property" : {
"type" : "string"
} ,
"type" : "groupBy"
2024-07-07 07:44:11 -07:00
}
2024-07-26 10:04:22 -07:00
] ,
"limit" : 50
2024-07-07 07:44:11 -07:00
} ,
2024-07-26 10:04:22 -07:00
"table" : "node_neighbors"
2024-07-07 07:44:11 -07:00
}
] ,
2024-07-26 10:04:22 -07:00
"title" : "Node Graph" ,
"type" : "nodeGraph"
2024-07-07 07:44:11 -07:00
} ,
{
"datasource" : {
2024-08-09 03:21:13 -07:00
"type" : "grafana-postgresql-datasource" ,
2024-07-07 07:44:11 -07:00
"uid" : "PA942B37CCFAF5A81"
} ,
"description" : "Information stored on the Redis DB which includes \"hard to get\" information - that is needed to be gathered over time." ,
"fieldConfig" : {
"defaults" : {
"color" : {
"mode" : "thresholds"
} ,
"custom" : {
"align" : "center" ,
"cellOptions" : {
"type" : "color-text"
} ,
"filterable" : true ,
"inspect" : true
} ,
"links" : [ ] ,
"mappings" : [
{
"options" : {
"none" : {
"color" : "text" ,
"index" : 2 ,
"text" : "⚪️ Unknown"
} ,
"offline" : {
"color" : "red" ,
"index" : 1 ,
"text" : "🛑 offline"
} ,
"online" : {
"color" : "green" ,
"index" : 0 ,
"text" : "🟢 online"
}
} ,
"type" : "value"
} ,
{
"options" : {
"match" : "empty" ,
"result" : {
"color" : "text" ,
"index" : 3 ,
"text" : "⚪️ Unknown"
}
} ,
"type" : "special"
}
] ,
"thresholds" : {
"mode" : "absolute" ,
"steps" : [
{
2024-10-22 11:32:21 -07:00
"color" : "text" ,
"value" : null
2024-07-07 07:44:11 -07:00
}
]
}
} ,
"overrides" : [
{
"matcher" : {
"id" : "byName" ,
"options" : "Node ID"
} ,
"properties" : [
{
"id" : "links" ,
"value" : [
{
"targetBlank" : true ,
"title" : "Go to node dashboard" ,
2024-10-22 11:32:21 -07:00
"url" : "http://localhost:3000/d/edqo1uh0eglq8g/node-dashboard?orgId=1&var-nodeID=${__data.fields[0]}"
2024-07-07 07:44:11 -07:00
}
]
} ,
{
"id" : "color" ,
"value" : {
"fixedColor" : "light-blue" ,
"mode" : "fixed"
}
}
]
2024-07-26 10:04:22 -07:00
} ,
{
"matcher" : {
"id" : "byName" ,
"options" : "Record Created At"
} ,
"properties" : [
{
"id" : "unit" ,
2024-08-09 03:21:13 -07:00
"value" : "dateTimeFromNow"
2024-07-26 10:04:22 -07:00
}
]
} ,
{
"matcher" : {
"id" : "byName" ,
"options" : "Client Role"
} ,
"properties" : [
{
"id" : "custom.width" ,
"value" : 126
}
]
2024-08-09 03:21:13 -07:00
} ,
{
"matcher" : {
"id" : "byName" ,
"options" : "Last Updated At"
} ,
"properties" : [
{
"id" : "unit" ,
"value" : "dateTimeFromNow"
}
]
} ,
{
"matcher" : {
"id" : "byName" ,
"options" : "Node ID Hex"
} ,
"properties" : [
{
"id" : "unit" ,
"value" : "hex"
}
]
2024-07-07 07:44:11 -07:00
}
]
} ,
"gridPos" : {
2024-07-26 10:04:22 -07:00
"h" : 22 ,
"w" : 13 ,
"x" : 11 ,
2024-10-22 11:32:21 -07:00
"y" : 24
2024-07-07 07:44:11 -07:00
} ,
"id" : 14 ,
"options" : {
"cellHeight" : "sm" ,
"footer" : {
"countRows" : true ,
"enablePagination" : false ,
"fields" : [ ] ,
"reducer" : [
"count"
] ,
"show" : true
} ,
2024-08-09 03:21:13 -07:00
"frameIndex" : 0 ,
2024-07-07 07:44:11 -07:00
"showHeader" : true ,
"sortBy" : [
{
2024-10-22 11:32:21 -07:00
"desc" : true ,
"displayName" : "Last Updated At"
2024-07-07 07:44:11 -07:00
}
]
} ,
2024-10-22 11:32:21 -07:00
"pluginVersion" : "11.2.2+security-01" ,
2024-07-07 07:44:11 -07:00
"targets" : [
{
"datasource" : {
"type" : "postgres" ,
"uid" : "PA942B37CCFAF5A81"
} ,
"editorMode" : "code" ,
"format" : "table" ,
"rawQuery" : true ,
2024-08-09 03:21:13 -07:00
"rawSql" : "SELECT * FROM node_details WHERE node_id <> '0' " ,
2024-07-07 07:44:11 -07:00
"refId" : "A" ,
"sql" : {
"columns" : [
{
"parameters" : [
{
"name" : "*" ,
"type" : "functionParameter"
}
] ,
"type" : "function"
}
] ,
"groupBy" : [
{
"property" : {
"type" : "string"
} ,
"type" : "groupBy"
}
] ,
"limit" : 50 ,
"whereJsonTree" : {
"children1" : [
{
"id" : "aa8aab9b-4567-489a-bcde-f190819d6a21" ,
"properties" : {
"field" : "node_id" ,
"fieldSrc" : "field" ,
"operator" : "not_equal" ,
"value" : [
"0"
] ,
"valueSrc" : [
"value"
] ,
"valueType" : [
"text"
]
} ,
"type" : "rule"
}
] ,
"id" : "aab899bb-0123-4456-b89a-b190819173ad" ,
"type" : "group"
} ,
"whereString" : "node_id <> '0'"
} ,
2024-07-26 10:04:22 -07:00
"table" : "node_details"
2024-07-07 07:44:11 -07:00
}
] ,
"title" : "General Information" ,
"transformations" : [
{
"id" : "extractFields" ,
"options" : {
"format" : "json" ,
"keepTime" : false ,
"replace" : true ,
"source" : "Value"
}
} ,
2024-08-09 03:21:13 -07:00
{
"id" : "calculateField" ,
"options" : {
"alias" : "Node ID Hex" ,
"mode" : "reduceRow" ,
"reduce" : {
"include" : [
"node_id"
] ,
"reducer" : "lastNotNull"
}
}
} ,
2024-07-07 07:44:11 -07:00
{
"id" : "organize" ,
"options" : {
2024-08-09 03:21:13 -07:00
"excludeByName" : {
"altitude" : true ,
"latitude" : true ,
"longitude" : true ,
"precision" : true
} ,
2024-07-07 07:44:11 -07:00
"includeByName" : { } ,
2024-08-09 03:21:13 -07:00
"indexByName" : {
"Node ID Hex" : 1 ,
"altitude" : 9 ,
"created_at" : 11 ,
"hardware_model" : 4 ,
"latitude" : 8 ,
"long_name" : 3 ,
"longitude" : 7 ,
"mqtt_status" : 6 ,
"node_id" : 0 ,
"precision" : 10 ,
"role" : 5 ,
"short_name" : 2 ,
"updated_at" : 12
} ,
2024-07-07 07:44:11 -07:00
"renameByName" : {
2024-07-26 10:04:22 -07:00
"created_at" : "Record Created At" ,
2024-07-07 07:44:11 -07:00
"hardware_model" : "Hardware Model" ,
"long_name" : "Long name" ,
"mqtt_status" : "MQTT Status" ,
"node_id" : "Node ID" ,
"role" : "Client Role" ,
2024-08-09 03:21:13 -07:00
"short_name" : "Short Name" ,
"updated_at" : "Last Updated At"
2024-07-07 07:44:11 -07:00
}
}
}
] ,
"type" : "table"
} ,
{
"datasource" : {
2024-07-26 10:04:22 -07:00
"type" : "grafana-postgresql-datasource" ,
"uid" : "PA942B37CCFAF5A81"
2024-07-07 07:44:11 -07:00
} ,
"description" : "Displays the nodes on the map" ,
"fieldConfig" : {
"defaults" : {
"color" : {
"mode" : "thresholds"
} ,
"custom" : {
"hideFrom" : {
"legend" : false ,
"tooltip" : false ,
"viz" : false
}
} ,
"mappings" : [
{
"options" : {
"none" : {
"color" : "blue" ,
"index" : 0 ,
"text" : "⚪️ Unknown"
} ,
"offline" : {
"color" : "red" ,
"index" : 2 ,
"text" : "🛑 Offline"
} ,
"online" : {
"color" : "green" ,
"index" : 1 ,
"text" : "🟢 Online"
}
} ,
"type" : "value"
}
] ,
"thresholds" : {
"mode" : "absolute" ,
"steps" : [
{
"color" : "blue"
}
]
} ,
"unit" : "string"
} ,
2024-08-09 03:21:13 -07:00
"overrides" : [
{
"matcher" : {
"id" : "byName" ,
"options" : "created_at"
} ,
"properties" : [
{
"id" : "unit" ,
"value" : "dateTimeFromNow"
}
]
} ,
{
"matcher" : {
"id" : "byName" ,
"options" : "updated_at"
} ,
"properties" : [
{
"id" : "unit" ,
"value" : "dateTimeFromNow"
}
]
}
]
2024-07-07 07:44:11 -07:00
} ,
"gridPos" : {
2024-07-26 10:04:22 -07:00
"h" : 25 ,
2024-07-07 07:44:11 -07:00
"w" : 24 ,
"x" : 0 ,
2024-10-22 11:32:21 -07:00
"y" : 46
2024-07-07 07:44:11 -07:00
} ,
"id" : 8 ,
"options" : {
"basemap" : {
"config" : { } ,
"name" : "Layer 0" ,
"opacity" : 1 ,
"tooltip" : true ,
"type" : "xyz"
} ,
"controls" : {
"mouseWheelZoom" : true ,
"showAttribution" : true ,
"showDebug" : false ,
"showMeasure" : true ,
"showScale" : true ,
"showZoom" : true
} ,
"layers" : [
{
"config" : {
"showLegend" : true ,
"style" : {
"color" : {
"field" : "mqtt_status" ,
"fixed" : "dark-green"
} ,
2024-08-09 03:21:13 -07:00
"opacity" : 1 ,
2024-07-07 07:44:11 -07:00
"rotation" : {
"fixed" : 0 ,
"max" : 360 ,
"min" : -360 ,
"mode" : "mod"
} ,
"size" : {
2024-08-09 03:21:13 -07:00
"fixed" : 3 ,
2024-07-07 07:44:11 -07:00
"max" : 5 ,
"min" : 1
} ,
"symbol" : {
2024-08-09 03:21:13 -07:00
"fixed" : "img/icons/marker/circle.svg" ,
2024-07-07 07:44:11 -07:00
"mode" : "fixed"
} ,
"symbolAlign" : {
"horizontal" : "center" ,
"vertical" : "top"
} ,
"text" : {
"fixed" : "" ,
"mode" : "field"
} ,
"textConfig" : {
"fontSize" : 12 ,
"offsetX" : 0 ,
"offsetY" : 5 ,
"textAlign" : "center" ,
"textBaseline" : "middle"
}
}
} ,
2024-07-26 10:04:22 -07:00
"filterData" : {
"id" : "byRefId" ,
"options" : "Nodes"
} ,
2024-07-07 07:44:11 -07:00
"location" : {
2024-07-26 10:04:22 -07:00
"latitude" : "latitude_norm" ,
"longitude" : "longitude_norm" ,
2024-07-07 07:44:11 -07:00
"mode" : "coords"
} ,
"name" : "Layer 1" ,
"tooltip" : true ,
"type" : "markers"
}
] ,
"tooltip" : {
"mode" : "details"
} ,
"view" : {
"allLayers" : true ,
"id" : "coords" ,
"lat" : 32.008273 ,
"lon" : 34.969099 ,
"padding" : 30 ,
"zoom" : 8
}
} ,
"pluginVersion" : "11.1.0" ,
"targets" : [
{
"datasource" : {
"type" : "postgres" ,
"uid" : "PA942B37CCFAF5A81"
} ,
"editorMode" : "code" ,
"format" : "table" ,
"hide" : false ,
"rawQuery" : true ,
2024-07-26 10:04:22 -07:00
"rawSql" : "SELECT * FROM node_details WHERE longitude != 0 AND longitude IS NOT NULL" ,
"refId" : "Nodes" ,
2024-07-07 07:44:11 -07:00
"sql" : {
"columns" : [
{
"parameters" : [
{
"name" : "*" ,
"type" : "functionParameter"
}
] ,
"type" : "function"
}
] ,
"groupBy" : [
{
"property" : {
"type" : "string"
} ,
"type" : "groupBy"
}
] ,
"limit" : 50
} ,
2024-07-26 10:04:22 -07:00
"table" : "node_details"
2024-07-07 07:44:11 -07:00
}
] ,
"title" : "Nodes map" ,
"transformations" : [
{
"id" : "organize" ,
"options" : {
"excludeByName" : {
"Time 1" : false ,
"Time 2" : true ,
"Time 3" : true ,
"Time 4" : true ,
"__name__ 1" : true ,
"__name__ 2" : true ,
"hardware_model 2" : true ,
"hardware_model 3" : true ,
"hardware_model 4" : true ,
"hardware_model 5" : true ,
"instance 1" : true ,
"instance 2" : true ,
"instance 3" : true ,
"instance 4" : true ,
"job 1" : true ,
"job 2" : true ,
"job 3" : true ,
"job 4" : true ,
"long_name 2" : true ,
"long_name 3" : true ,
"long_name 4" : true ,
"long_name 5" : true ,
"role 2" : true ,
"role 3" : true ,
"role 4" : true ,
"role 5" : true ,
"short_name 2" : true ,
"short_name 3" : true ,
"short_name 4" : true ,
"short_name 5" : true
} ,
"includeByName" : { } ,
"indexByName" : { } ,
"renameByName" : {
"Time 1" : "Log Time" ,
"__name__ 1" : "" ,
2024-08-09 03:21:13 -07:00
"hardware_model" : "Hardware Model" ,
2024-07-07 07:44:11 -07:00
"hardware_model 1" : "Hardware Model" ,
2024-08-09 03:21:13 -07:00
"long_name" : "Long Name" ,
2024-07-07 07:44:11 -07:00
"long_name 1" : "Long Name" ,
"mqtt_status" : "MQTT_STATUS" ,
"node_id" : "Node ID" ,
2024-08-09 03:21:13 -07:00
"role" : "Client Role" ,
2024-07-07 07:44:11 -07:00
"role 1" : "Client Role" ,
2024-08-09 03:21:13 -07:00
"short_name" : "Short Name" ,
2024-07-07 07:44:11 -07:00
"short_name 1" : "Short Name"
}
}
2024-07-26 10:04:22 -07:00
} ,
{
"id" : "calculateField" ,
"options" : {
"alias" : "longitude_norm" ,
"binary" : {
"left" : "longitude" ,
"operator" : "*" ,
"right" : "1e-7"
2024-07-07 07:44:11 -07:00
} ,
2024-07-26 10:04:22 -07:00
"mode" : "binary" ,
"reduce" : {
"include" : [
"longitude" ,
"latitude"
] ,
"reducer" : "sum"
2024-07-07 07:44:11 -07:00
} ,
2024-07-26 10:04:22 -07:00
"replaceFields" : false
}
2024-07-07 07:44:11 -07:00
} ,
{
2024-07-26 10:04:22 -07:00
"id" : "calculateField" ,
"options" : {
"alias" : "latitude_norm" ,
"binary" : {
"left" : "latitude" ,
"operator" : "*" ,
"right" : "1e-7"
} ,
"mode" : "binary" ,
"reduce" : {
"reducer" : "sum"
}
}
2024-07-07 07:44:11 -07:00
}
] ,
2024-07-26 10:04:22 -07:00
"type" : "geomap"
2024-07-07 07:44:11 -07:00
}
] ,
2024-07-26 10:04:22 -07:00
"refresh" : "5m" ,
2024-07-07 07:44:11 -07:00
"schemaVersion" : 39 ,
"tags" : [ ] ,
"templating" : {
"list" : [
{
"current" : {
"selected" : false ,
"text" : "All" ,
"value" : "$__all"
} ,
"datasource" : {
"type" : "postgres" ,
"uid" : "PA942B37CCFAF5A81"
} ,
2024-07-26 10:04:22 -07:00
"definition" : "SELECT \n concat(long_name, ' (', node_id, ')') as __text, \n node_id as __value \nFROM node_details \nORDER BY long_name" ,
2024-07-07 07:44:11 -07:00
"hide" : 0 ,
"includeAll" : true ,
"label" : "Nodes" ,
"multi" : true ,
"name" : "Nodes" ,
"options" : [ ] ,
2024-07-26 10:04:22 -07:00
"query" : "SELECT \n concat(long_name, ' (', node_id, ')') as __text, \n node_id as __value \nFROM node_details \nORDER BY long_name" ,
2024-07-07 07:44:11 -07:00
"refresh" : 1 ,
"regex" : "" ,
"skipUrlSync" : false ,
"sort" : 0 ,
"type" : "query"
}
]
} ,
"time" : {
2024-08-09 03:21:13 -07:00
"from" : "now-12h" ,
2024-07-07 07:44:11 -07:00
"to" : "now"
} ,
"timepicker" : { } ,
"timezone" : "browser" ,
"title" : "Main Dashboard" ,
"uid" : "edqkge9mf7v28g" ,
2024-10-22 11:32:21 -07:00
"version" : 78 ,
2024-07-07 07:44:11 -07:00
"weekStart" : "sunday"
}