Browse Source

20171210 dashboard/status*.json.in (Integration der Mesh-Informationen in die Dashboards)

Altlast 7 years ago
parent
commit
8d80167f67

+ 1 - 1
conf/substitutions.conf.franchise

@@ -15,5 +15,5 @@ COMMUNITY_BRIEF		FF-DO
 COMMUNITY_FULL		Freifunk Dortmund
 COMMUNITY_URL		http://www.freifunk-dortmund.de/
 MAP_NODE_URL		https://map.ffdo.de/meshviewer/#!v:m;n:
-MAP_GRAPH_URL		https://map.ffdo.de/meshviewer/#!v:m;l:
+MAP_LINK_URL		https://map.ffdo.de/meshviewer/#!v:m;l:
 N2G_COMMUNITY_URL	http://url.free.de/ffdo/Technik/Netzinfrastruktur/Status

+ 128 - 50
dashboard/status-group-render.json.in

@@ -1,15 +1,24 @@
 {
  "annotations" : {
   "list" : [
-   ]
-  },
+  ]
+ },
  "editable" : true,
  "gnetId" : null,
  "graphTooltip" : 0,
  "hideControls" : false,
  "id" : null,
  "links" : [
-  ],
+  {
+   "icon" : "dashboard",
+   "keepTime" : true,
+   "tags" : [
+   ],
+   "title" : "Mesh",
+   "type" : "link",
+   "url" : "%%DASHBOARD_PATH%%%%DASHBOARD_PREFIX%%status-mesh-render.json?var-mesh_name=[[mesh_name]]"
+  }
+ ],
  "rows" : [
   {
    "collapse" : false,
@@ -17,7 +26,7 @@
    "panels" : [
     {
      "aliasColors" : {
-      },
+     },
      "bars" : false,
      "dashLength" : 10,
      "dashes" : false,
@@ -35,18 +44,18 @@
       "show" : true,
       "total" : false,
       "values" : true
-      },
+     },
      "lines" : true,
      "linewidth" : 1,
      "links" : [
-      ],
+     ],
      "nullPointMode" : "null",
      "percentage" : false,
      "pointradius" : 5,
      "points" : false,
      "renderer" : "flot",
      "seriesOverrides" : [
-      ],
+     ],
      "spaceLength" : 10,
      "span" : 12,
      "stack" : false,
@@ -61,7 +70,7 @@
        "legendFormat" : "{{hostname}}",
        "refId" : "A",
        "step" : 120
-       },
+      },
       {
        "expr" : "sum(%%PROM_STATS_PREFIX%%%%PROM_SEPERATOR%%clients{hostname=~\"([[regex]])\"})",
        "format" : "time_series",
@@ -71,10 +80,10 @@
        "legendFormat" : "Summe",
        "refId" : "B",
        "step" : 120
-       }
-      ],
+      }
+     ],
      "thresholds" : [
-      ],
+     ],
      "timeFrom" : null,
      "timeShift" : null,
      "title" : "[[group]] (clients)",
@@ -82,7 +91,7 @@
       "shared" : true,
       "sort" : 1,
       "value_type" : "individual"
-      },
+     },
      "type" : "graph",
      "xaxis" : {
       "buckets" : null,
@@ -90,8 +99,8 @@
       "name" : null,
       "show" : true,
       "values" : [
-       ]
-      },
+      ]
+     },
      "yaxes" : [
       {
        "decimals" : 0,
@@ -101,7 +110,7 @@
        "max" : null,
        "min" : null,
        "show" : true
-       },
+      },
       {
        "format" : "short",
        "label" : null,
@@ -109,46 +118,46 @@
        "max" : null,
        "min" : null,
        "show" : true
-       }
-      ]
-     }
-    ],
+      }
+     ]
+    }
+   ],
    "repeat" : null,
    "repeatIteration" : null,
    "repeatRowId" : null,
    "showTitle" : false,
    "title" : "Dashboard Row",
    "titleSize" : "h6"
-   },
+  },
   {
    "collapse" : false,
    "height" : "100",
    "panels" : [
     {
-     "content" : "<p>Links zu Router [[hostname]], Node ID [[node_id]]: <a href=\"%%DASHBOARD_PATH%%%%DASHBOARD_PREFIX%%status.json?var-hostname=[[hostname]]&var-node_id=[[node_id]]\">Status Dashboard<\/a>, <a href=\"%%MAP_NODE_URL%%[[node_id]]\">Map<\/a>.<\/p>\n",
+     "content" : "<p>Links zu Router [[hostname]], Node ID [[node_id]]: <a href=\"%%DASHBOARD_PATH%%%%DASHBOARD_PREFIX%%status-render.json?var-hostname=[[hostname]]&var-node_id=[[node_id]]\">Status Dashboard<\/a>, <a href=\"%%MAP_NODE_URL%%[[node_id]]\">Map<\/a>.<\/p>\n",
      "height" : "80px",
      "id" : 4,
      "links" : [
-      ],
+     ],
      "mode" : "html",
      "repeat" : null,
      "span" : 12,
      "title" : "Links zu [[hostname]], Node ID [[node_id]]",
      "type" : "text"
-     }
-    ],
+    }
+   ],
    "repeat" : null,
    "repeatIteration" : null,
    "repeatRowId" : null,
    "showTitle" : false,
    "title" : "Dashboard Row",
    "titleSize" : "h6"
-   }
-  ],
+  }
+ ],
  "schemaVersion" : 14,
  "style" : "dark",
  "tags" : [
-  ],
+ ],
  "templating" : {
   "list" : [
    {
@@ -156,7 +165,7 @@
     "current" : {
      "text" : " - noch keine Auswahl -",
      "value" : null
-     },
+    },
     "datasource" : null,
     "hide" : 0,
     "includeAll" : false,
@@ -164,24 +173,24 @@
     "multi" : false,
     "name" : "group",
     "options" : [
-     ],
+    ],
     "query" : "label_values(%%PROM_GROUPS_PREFIX%%,group)",
     "refresh" : 2,
     "regex" : "",
     "sort" : 1,
     "tagValuesQuery" : "",
     "tags" : [
-     ],
+    ],
     "tagsQuery" : "",
     "type" : "query",
     "useTags" : false
-    },
+   },
    {
     "allValue" : null,
     "current" : {
      "text" : null,
      "value" : null
-     },
+    },
     "datasource" : null,
     "hide" : 2,
     "includeAll" : false,
@@ -189,24 +198,24 @@
     "multi" : false,
     "name" : "regex",
     "options" : [
-     ],
+    ],
     "query" : "query_result(max(%%PROM_GROUPS_PREFIX%%{group=\"[[group]]\"}) by (regex))",
     "refresh" : 2,
     "regex" : "\/.*regex=\"(.*)\".*\/",
     "sort" : 1,
     "tagValuesQuery" : "",
     "tags" : [
-     ],
+    ],
     "tagsQuery" : "",
     "type" : "query",
     "useTags" : false
-    },
+   },
    {
     "allValue" : null,
     "current" : {
      "text" : " - noch keine Auswahl -",
      "value" : null
-     },
+    },
     "datasource" : null,
     "hide" : 0,
     "includeAll" : false,
@@ -214,24 +223,24 @@
     "multi" : false,
     "name" : "hostname",
     "options" : [
-     ],
+    ],
     "query" : "label_values(%%PROM_INFO_PREFIX%%{hostname=~\"[[regex]]\"},hostname)",
     "refresh" : 2,
     "regex" : "",
     "sort" : 1,
     "tagValuesQuery" : "",
     "tags" : [
-     ],
+    ],
     "tagsQuery" : "",
     "type" : "query",
     "useTags" : false
-    },
+   },
    {
     "allValue" : null,
     "current" : {
      "text" : null,
      "value" : null
-     },
+    },
     "datasource" : null,
     "hide" : 0,
     "includeAll" : false,
@@ -239,24 +248,93 @@
     "multi" : false,
     "name" : "node_id",
     "options" : [
-     ],
+    ],
     "query" : "label_values(%%PROM_INFO_PREFIX%%{hostname=\"[[hostname]]\"},node_id)",
     "refresh" : 2,
     "regex" : "",
     "sort" : 1,
     "tagValuesQuery" : "",
     "tags" : [
-     ],
+    ],
     "tagsQuery" : "",
     "type" : "query",
     "useTags" : false
-    }
-   ]
-  },
+   },
+   {
+    "allValue" : null,
+    "current" : {
+    },
+    "datasource" : null,
+    "hide" : 2,
+    "includeAll" : false,
+    "label" : null,
+    "multi" : false,
+    "name" : "link_target_id",
+    "options" : [
+    ],
+    "query" : "query_result(%%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%link{source=\"[[node_id]]\",target=\"[[neighbor_id]]\"} or %%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%link{source=\"[[neighbor_id]]\",target=\"[[node_id]]\"})",
+    "refresh" : 2,
+    "regex" : "\/.*target=\"([^\"]+)\".*\/",
+    "sort" : 0,
+    "tagValuesQuery" : "",
+    "tags" : [
+    ],
+    "tagsQuery" : "",
+    "type" : "query",
+    "useTags" : false
+   },
+   {
+    "allValue" : null,
+    "current" : {
+    },
+    "datasource" : null,
+    "hide" : 2,
+    "includeAll" : false,
+    "label" : null,
+    "multi" : false,
+    "name" : "mesh_id",
+    "options" : [
+    ],
+    "query" : "label_values(%%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh{members=~\".*[[node_id]].*\"},node_id)",
+    "refresh" : 2,
+    "regex" : "",
+    "sort" : 0,
+    "tagValuesQuery" : "",
+    "tags" : [
+    ],
+    "tagsQuery" : "",
+    "type" : "query",
+    "useTags" : false
+   },
+   {
+    "allValue" : null,
+    "current" : {
+    },
+    "datasource" : null,
+    "hide" : 2,
+    "includeAll" : false,
+    "label" : null,
+    "multi" : false,
+    "name" : "mesh_name",
+    "options" : [
+    ],
+    "query" : "label_values(%%PROM_INFO_PREFIX%%{node_id=\"[[mesh_id]]\"},hostname)",
+    "refresh" : 2,
+    "regex" : "",
+    "sort" : 0,
+    "tagValuesQuery" : "",
+    "tags" : [
+    ],
+    "tagsQuery" : "",
+    "type" : "query",
+    "useTags" : false
+   }
+  ]
+ },
  "time" : {
   "from" : "now-24h",
   "to" : "now"
-  },
+ },
  "timepicker" : {
   "refresh_intervals" : [
    "5s",
@@ -269,7 +347,7 @@
    "1h",
    "2h",
    "1d"
-   ],
+  ],
   "time_options" : [
    "5m",
    "15m",
@@ -280,9 +358,9 @@
    "2d",
    "7d",
    "30d"
-   ]
-  },
+  ]
+ },
  "timezone" : "",
  "title" : "%%DASHBOARD_PREFIX%%status-group-render",
  "version" : 9
- }
+}

+ 127 - 49
dashboard/status-group.json.in

@@ -1,15 +1,24 @@
 {
  "annotations" : {
   "list" : [
-   ]
-  },
+  ]
+ },
  "editable" : true,
  "gnetId" : null,
  "graphTooltip" : 0,
  "hideControls" : false,
  "id" : null,
  "links" : [
-  ],
+  {
+   "icon" : "dashboard",
+   "keepTime" : true,
+   "tags" : [
+   ],
+   "title" : "Mesh",
+   "type" : "link",
+   "url" : "%%DASHBOARD_PATH%%%%DASHBOARD_PREFIX%%status-mesh.json?var-mesh_name=[[mesh_name]]"
+  }
+ ],
  "rows" : [
   {
    "collapse" : false,
@@ -17,7 +26,7 @@
    "panels" : [
     {
      "aliasColors" : {
-      },
+     },
      "bars" : false,
      "dashLength" : 10,
      "dashes" : false,
@@ -35,18 +44,18 @@
       "show" : true,
       "total" : false,
       "values" : true
-      },
+     },
      "lines" : true,
      "linewidth" : 1,
      "links" : [
-      ],
+     ],
      "nullPointMode" : "null",
      "percentage" : false,
      "pointradius" : 5,
      "points" : false,
      "renderer" : "flot",
      "seriesOverrides" : [
-      ],
+     ],
      "spaceLength" : 10,
      "span" : 12,
      "stack" : false,
@@ -61,7 +70,7 @@
        "legendFormat" : "{{hostname}}",
        "refId" : "A",
        "step" : 120
-       },
+      },
       {
        "expr" : "sum(%%PROM_STATS_PREFIX%%%%PROM_SEPERATOR%%clients{hostname=~\"([[regex]])\"})",
        "format" : "time_series",
@@ -71,10 +80,10 @@
        "legendFormat" : "Summe",
        "refId" : "B",
        "step" : 120
-       }
-      ],
+      }
+     ],
      "thresholds" : [
-      ],
+     ],
      "timeFrom" : null,
      "timeShift" : null,
      "title" : "[[group]] (clients)",
@@ -82,7 +91,7 @@
       "shared" : true,
       "sort" : 1,
       "value_type" : "individual"
-      },
+     },
      "type" : "graph",
      "xaxis" : {
       "buckets" : null,
@@ -90,8 +99,8 @@
       "name" : null,
       "show" : true,
       "values" : [
-       ]
-      },
+      ]
+     },
      "yaxes" : [
       {
        "decimals" : 0,
@@ -101,7 +110,7 @@
        "max" : null,
        "min" : null,
        "show" : true
-       },
+      },
       {
        "format" : "short",
        "label" : null,
@@ -109,17 +118,17 @@
        "max" : null,
        "min" : null,
        "show" : true
-       }
-      ]
-     }
-    ],
+      }
+     ]
+    }
+   ],
    "repeat" : null,
    "repeatIteration" : null,
    "repeatRowId" : null,
    "showTitle" : false,
    "title" : "Dashboard Row",
    "titleSize" : "h6"
-   },
+  },
   {
    "collapse" : false,
    "height" : "100",
@@ -129,26 +138,26 @@
      "height" : "80px",
      "id" : 4,
      "links" : [
-      ],
+     ],
      "mode" : "html",
      "repeat" : null,
      "span" : 12,
      "title" : "Links zu [[hostname]], Node ID [[node_id]]",
      "type" : "text"
-     }
-    ],
+    }
+   ],
    "repeat" : null,
    "repeatIteration" : null,
    "repeatRowId" : null,
    "showTitle" : false,
    "title" : "Dashboard Row",
    "titleSize" : "h6"
-   }
-  ],
+  }
+ ],
  "schemaVersion" : 14,
  "style" : "dark",
  "tags" : [
-  ],
+ ],
  "templating" : {
   "list" : [
    {
@@ -156,7 +165,7 @@
     "current" : {
      "text" : " - noch keine Auswahl -",
      "value" : null
-     },
+    },
     "datasource" : null,
     "hide" : 0,
     "includeAll" : false,
@@ -164,24 +173,24 @@
     "multi" : false,
     "name" : "group",
     "options" : [
-     ],
+    ],
     "query" : "label_values(%%PROM_GROUPS_PREFIX%%,group)",
     "refresh" : 2,
     "regex" : "",
     "sort" : 1,
     "tagValuesQuery" : "",
     "tags" : [
-     ],
+    ],
     "tagsQuery" : "",
     "type" : "query",
     "useTags" : false
-    },
+   },
    {
     "allValue" : null,
     "current" : {
      "text" : null,
      "value" : null
-     },
+    },
     "datasource" : null,
     "hide" : 2,
     "includeAll" : false,
@@ -189,24 +198,24 @@
     "multi" : false,
     "name" : "regex",
     "options" : [
-     ],
+    ],
     "query" : "query_result(max(%%PROM_GROUPS_PREFIX%%{group=\"[[group]]\"}) by (regex))",
     "refresh" : 2,
     "regex" : "\/.*regex=\"(.*)\".*\/",
     "sort" : 1,
     "tagValuesQuery" : "",
     "tags" : [
-     ],
+    ],
     "tagsQuery" : "",
     "type" : "query",
     "useTags" : false
-    },
+   },
    {
     "allValue" : null,
     "current" : {
      "text" : " - noch keine Auswahl -",
      "value" : null
-     },
+    },
     "datasource" : null,
     "hide" : 0,
     "includeAll" : false,
@@ -214,24 +223,24 @@
     "multi" : false,
     "name" : "hostname",
     "options" : [
-     ],
+    ],
     "query" : "label_values(%%PROM_INFO_PREFIX%%{hostname=~\"[[regex]]\"},hostname)",
     "refresh" : 2,
     "regex" : "",
     "sort" : 1,
     "tagValuesQuery" : "",
     "tags" : [
-     ],
+    ],
     "tagsQuery" : "",
     "type" : "query",
     "useTags" : false
-    },
+   },
    {
     "allValue" : null,
     "current" : {
      "text" : null,
      "value" : null
-     },
+    },
     "datasource" : null,
     "hide" : 0,
     "includeAll" : false,
@@ -239,24 +248,93 @@
     "multi" : false,
     "name" : "node_id",
     "options" : [
-     ],
+    ],
     "query" : "label_values(%%PROM_INFO_PREFIX%%{hostname=\"[[hostname]]\"},node_id)",
     "refresh" : 2,
     "regex" : "",
     "sort" : 1,
     "tagValuesQuery" : "",
     "tags" : [
-     ],
+    ],
     "tagsQuery" : "",
     "type" : "query",
     "useTags" : false
-    }
-   ]
-  },
+   },
+   {
+    "allValue" : null,
+    "current" : {
+    },
+    "datasource" : null,
+    "hide" : 2,
+    "includeAll" : false,
+    "label" : null,
+    "multi" : false,
+    "name" : "link_target_id",
+    "options" : [
+    ],
+    "query" : "query_result(%%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%link{source=\"[[node_id]]\",target=\"[[neighbor_id]]\"} or %%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%link{source=\"[[neighbor_id]]\",target=\"[[node_id]]\"})",
+    "refresh" : 2,
+    "regex" : "\/.*target=\"([^\"]+)\".*\/",
+    "sort" : 0,
+    "tagValuesQuery" : "",
+    "tags" : [
+    ],
+    "tagsQuery" : "",
+    "type" : "query",
+    "useTags" : false
+   },
+   {
+    "allValue" : null,
+    "current" : {
+    },
+    "datasource" : null,
+    "hide" : 2,
+    "includeAll" : false,
+    "label" : null,
+    "multi" : false,
+    "name" : "mesh_id",
+    "options" : [
+    ],
+    "query" : "label_values(%%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh{members=~\".*[[node_id]].*\"},node_id)",
+    "refresh" : 2,
+    "regex" : "",
+    "sort" : 0,
+    "tagValuesQuery" : "",
+    "tags" : [
+    ],
+    "tagsQuery" : "",
+    "type" : "query",
+    "useTags" : false
+   },
+   {
+    "allValue" : null,
+    "current" : {
+    },
+    "datasource" : null,
+    "hide" : 2,
+    "includeAll" : false,
+    "label" : null,
+    "multi" : false,
+    "name" : "mesh_name",
+    "options" : [
+    ],
+    "query" : "label_values(%%PROM_INFO_PREFIX%%{node_id=\"[[mesh_id]]\"},hostname)",
+    "refresh" : 2,
+    "regex" : "",
+    "sort" : 0,
+    "tagValuesQuery" : "",
+    "tags" : [
+    ],
+    "tagsQuery" : "",
+    "type" : "query",
+    "useTags" : false
+   }
+  ]
+ },
  "time" : {
   "from" : "now-24h",
   "to" : "now"
-  },
+ },
  "timepicker" : {
   "refresh_intervals" : [
    "5s",
@@ -269,7 +347,7 @@
    "1h",
    "2h",
    "1d"
-   ],
+  ],
   "time_options" : [
    "5m",
    "15m",
@@ -280,9 +358,9 @@
    "2d",
    "7d",
    "30d"
-   ]
-  },
+  ]
+ },
  "timezone" : "",
  "title" : "%%DASHBOARD_PREFIX%%status-group",
  "version" : 9
- }
+}

+ 505 - 328
dashboard/status-mesh-render.json.in

@@ -1,347 +1,524 @@
 {
-  "annotations": {
-    "list": []
-  },
-  "editable": true,
-  "gnetId": null,
-  "graphTooltip": 0,
-  "hideControls": false,
-  "id": null,
-  "links": [],
-  "links": [
-    {
-      "icon": "info",
-      "tags": [],
-      "title": "[[mesh_count]] Meshes, [[node_sum]] Knoten, [[link_sum]] Links",
-      "type": "link"
-    }
-  ],
-  "rows": [
+ "annotations" : {
+  "list" : [
+  ]
+ },
+ "editable" : true,
+ "gnetId" : null,
+ "graphTooltip" : 0,
+ "hideControls" : false,
+ "id" : null,
+ "links" : [
+ ],
+ "rows" : [
+  {
+   "collapse" : true,
+   "height" : 260,
+   "panels" : [
     {
-      "collapse": false,
-      "height": 278,
-      "panels": [
-        {
-          "aliasColors": {},
-          "bars": false,
-          "dashLength": 10,
-          "dashes": false,
-          "datasource": null,
-          "fill": 0,
-          "id": 3,
-          "legend": {
-            "alignAsTable": true,
-            "avg": true,
-            "current": true,
-            "hideEmpty": true,
-            "max": true,
-            "min": true,
-            "rightSide": false,
-            "show": true,
-            "total": false,
-            "values": true
-          },
-          "lines": true,
-          "linewidth": 1,
-          "links": [],
-          "nullPointMode": "null",
-          "percentage": false,
-          "pointradius": 5,
-          "points": false,
-          "renderer": "flot",
-          "seriesOverrides": [],
-          "spaceLength": 10,
-          "span": 12,
-          "stack": false,
-          "steppedLine": false,
-          "targets": [
-            {
-              "expr": "%%PROM_STATS_PREFIX%%%%PROM_SEPERATOR%%clients{node_id=~\"([[regex]])\"}",
-              "format": "time_series",
-              "hide": false,
-              "interval": "",
-              "intervalFactor": 2,
-              "legendFormat": "{{hostname}}",
-              "refId": "A",
-              "step": 120
-            },
-            {
-              "expr": "sum(%%PROM_STATS_PREFIX%%%%PROM_SEPERATOR%%clients{node_id=~\"([[regex]])\"})",
-              "format": "time_series",
-              "hide": false,
-              "interval": "",
-              "intervalFactor": 2,
-              "legendFormat": "Summe",
-              "refId": "B",
-              "step": 120
-            }
-          ],
-          "thresholds": [],
-          "timeFrom": null,
-          "timeShift": null,
-          "title": "clients im Mesh des Knotens [[mesh_name]]",
-          "tooltip": {
-            "shared": true,
-            "sort": 1,
-            "value_type": "individual"
-          },
-          "type": "graph",
-          "xaxis": {
-            "buckets": null,
-            "mode": "time",
-            "name": null,
-            "show": true,
-            "values": []
-          },
-          "yaxes": [
-            {
-              "decimals": 0,
-              "format": "short",
-              "label": "",
-              "logBase": 1,
-              "max": null,
-              "min": null,
-              "show": true
-            },
-            {
-              "format": "short",
-              "label": null,
-              "logBase": 1,
-              "max": null,
-              "min": null,
-              "show": true
-            }
-          ]
-        }
-      ],
-      "repeat": null,
-      "repeatIteration": null,
-      "repeatRowId": null,
-      "showTitle": false,
-      "title": "Dashboard Row",
-      "titleSize": "h6"
-    },
-    {
-      "collapse": false,
-      "height": "100",
-      "panels": [
-        {
-          "content": "<p>Links zu Router [[hostname]], Node ID [[node_id]]: <a href=\"%%DASHBOARD_PATH%%%%DASHBOARD_PREFIX%%status.json?var-hostname=[[hostname]]&var-node_id=[[node_id]]\">Status Dashboard</a>, <a href=\"https://map.ffdo.de/meshviewer/#!v:m;n:[[node_id]]\">Map</a>.</p>\n",
-          "height": "80px",
-          "id": 4,
-          "links": [],
-          "mode": "html",
-          "repeat": null,
-          "span": 12,
-          "title": "Links zu [[hostname]], Node ID [[node_id]]",
-          "type": "text"
-        }
-      ],
-      "repeat": null,
-      "repeatIteration": null,
-      "repeatRowId": null,
-      "showTitle": false,
-      "title": "Dashboard Row",
-      "titleSize": "h6"
-    }
-  ],
-  "schemaVersion": 14,
-  "style": "dark",
-  "tags": [],
-  "templating": {
-    "list": [
+     "aliasColors" : {
+     },
+     "bars" : false,
+     "dashLength" : 10,
+     "dashes" : false,
+     "datasource" : null,
+     "fill" : 0,
+     "id" : 5,
+     "legend" : {
+      "alignAsTable" : true,
+      "avg" : true,
+      "current" : true,
+      "hideEmpty" : true,
+      "max" : true,
+      "min" : true,
+      "rightSide" : false,
+      "show" : true,
+      "total" : false,
+      "values" : true
+     },
+     "lines" : true,
+     "linewidth" : 1,
+     "links" : [
+     ],
+     "nullPointMode" : "null",
+     "percentage" : false,
+     "pointradius" : 5,
+     "points" : false,
+     "renderer" : "flot",
+     "seriesOverrides" : [
+     ],
+     "spaceLength" : 10,
+     "span" : 9,
+     "stack" : false,
+     "steppedLine" : false,
+     "targets" : [
       {
-        "allValue": null,
-        "current": {},
-        "datasource": null,
-        "hide": 0,
-        "includeAll": false,
-        "label": "Mesh auswählen:",
-        "multi": false,
-        "name": "mesh_name",
-        "options": [],
-        "query": "query_result(%%PROM_INFO_PREFIX%% and on (node_id) %%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh)",
-        "refresh": 2,
-        "regex": "/.*hostname=\"([^\\\"]+)\".*/",
-        "sort": 1,
-        "tagValuesQuery": "",
-        "tags": [],
-        "tagsQuery": "",
-        "type": "query",
-        "useTags": false
+       "expr" : "count(%%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh)",
+       "format" : "time_series",
+       "intervalFactor" : 2,
+       "legendFormat" : "Meshes",
+       "refId" : "A",
+       "step" : 240
       },
       {
-        "allValue": null,
-        "current": {},
-        "datasource": null,
-        "hide": 1,
-        "includeAll": false,
-        "label": null,
-        "multi": false,
-        "name": "mesh_id",
-        "options": [],
-        "query": "label_values(%%PROM_INFO_PREFIX%%{hostname=\"[[mesh_name]]\"},node_id)",
-        "refresh": 2,
-        "regex": "",
-        "sort": 1,
-        "tagValuesQuery": "",
-        "tags": [],
-        "tagsQuery": "",
-        "type": "query",
-        "useTags": false
+       "expr" : "sum(floor(%%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh))",
+       "format" : "time_series",
+       "intervalFactor" : 2,
+       "legendFormat" : "Knoten",
+       "refId" : "B",
+       "step" : 240
       },
       {
-        "allValue": null,
-        "current": {},
-        "datasource": null,
-        "hide": 2,
-        "includeAll": false,
-        "label": null,
-        "multi": false,
-        "name": "regex",
-        "options": [],
-        "query": "label_values(%%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh{node_id=\"[[mesh_id]]\"},members)",
-        "refresh": 2,
-        "regex": "",
-        "sort": 1,
-        "tagValuesQuery": "",
-        "tags": [],
-        "tagsQuery": "",
-        "type": "query",
-        "useTags": false
-      },
+       "expr" : "round(1000 * sum(%%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh - floor(%%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh)))",
+       "format" : "time_series",
+       "intervalFactor" : 2,
+       "legendFormat" : "Links",
+       "refId" : "C",
+       "step" : 240
+      }
+     ],
+     "thresholds" : [
+     ],
+     "timeFrom" : null,
+     "timeShift" : null,
+     "title" : "Meshes, Knoten, Links - zZ [[mesh_count]], [[node_sum]], [[link_sum]]",
+     "tooltip" : {
+      "shared" : true,
+      "sort" : 0,
+      "value_type" : "individual"
+     },
+     "type" : "graph",
+     "xaxis" : {
+      "buckets" : null,
+      "mode" : "time",
+      "name" : null,
+      "show" : true,
+      "values" : [
+      ]
+     },
+     "yaxes" : [
       {
-        "allValue": null,
-        "current": {},
-        "datasource": null,
-        "hide": 0,
-        "includeAll": false,
-        "label": "Knoten auswählen:",
-        "multi": false,
-        "name": "hostname",
-        "options": [],
-        "query": "label_values(%%PROM_INFO_PREFIX%%{node_id=~\"[[regex]]\"},hostname)",
-        "refresh": 2,
-        "regex": "",
-        "sort": 1,
-        "tagValuesQuery": "",
-        "tags": [],
-        "tagsQuery": "",
-        "type": "query",
-        "useTags": false
+       "format" : "short",
+       "label" : null,
+       "logBase" : 1,
+       "max" : null,
+       "min" : "0",
+       "show" : true
       },
       {
-        "allValue": null,
-        "current": {},
-        "datasource": null,
-        "hide": 1,
-        "includeAll": false,
-        "label": null,
-        "multi": false,
-        "name": "node_id",
-        "options": [],
-        "query": "label_values(%%PROM_INFO_PREFIX%%{hostname=\"[[hostname]]\"},node_id)",
-        "refresh": 2,
-        "regex": "",
-        "sort": 1,
-        "tagValuesQuery": "",
-        "tags": [],
-        "tagsQuery": "",
-        "type": "query",
-        "useTags": false
-      },
+       "format" : "short",
+       "label" : null,
+       "logBase" : 1,
+       "max" : null,
+       "min" : null,
+       "show" : true
+      }
+     ]
+    },
+    {
+     "aliasColors" : {
+     },
+     "cacheTimeout" : null,
+     "combine" : {
+      "label" : "Others",
+      "threshold" : 0
+     },
+     "datasource" : null,
+     "fontSize" : "100%",
+     "format" : "short",
+     "id" : 6,
+     "interval" : null,
+     "legend" : {
+      "percentage" : false,
+      "show" : false,
+      "values" : false
+     },
+     "legendType" : "Under graph",
+     "links" : [
+     ],
+     "maxDataPoints" : 3,
+     "nullPointMode" : "connected",
+     "pieType" : "pie",
+     "span" : 3,
+     "strokeWidth" : "0",
+     "targets" : [
+      {
+       "expr" : "count_values(\"size\",floor(%%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh))",
+       "format" : "time_series",
+       "intervalFactor" : 2,
+       "legendFormat" : "{{size}}",
+       "refId" : "A",
+       "step" : 43200
+      }
+     ],
+     "title" : "Meshgr\u00F6\u00DFenverteilung",
+     "type" : "grafana-piechart-panel",
+     "valueName" : "current"
+    }
+   ],
+   "repeat" : null,
+   "repeatIteration" : null,
+   "repeatRowId" : null,
+   "showTitle" : false,
+   "title" : "[[mesh_count]] Meshes mit insgesamt [[node_sum]] Knoten und [[link_sum]] Links",
+   "titleSize" : "h6"
+  },
+  {
+   "collapse" : false,
+   "height" : 278,
+   "panels" : [
+    {
+     "aliasColors" : {
+     },
+     "bars" : false,
+     "dashLength" : 10,
+     "dashes" : false,
+     "datasource" : null,
+     "fill" : 0,
+     "id" : 3,
+     "legend" : {
+      "alignAsTable" : true,
+      "avg" : true,
+      "current" : true,
+      "hideEmpty" : true,
+      "max" : true,
+      "min" : true,
+      "rightSide" : false,
+      "show" : true,
+      "total" : false,
+      "values" : true
+     },
+     "lines" : true,
+     "linewidth" : 1,
+     "links" : [
+     ],
+     "nullPointMode" : "null",
+     "percentage" : false,
+     "pointradius" : 5,
+     "points" : false,
+     "renderer" : "flot",
+     "seriesOverrides" : [
+     ],
+     "spaceLength" : 10,
+     "span" : 12,
+     "stack" : false,
+     "steppedLine" : false,
+     "targets" : [
       {
-        "allValue": null,
-        "current": {},
-        "datasource": null,
-        "hide": 2,
-        "includeAll": false,
-        "label": null,
-        "multi": false,
-        "name": "mesh_count",
-        "options": [],
-        "query": "query_result(count(%%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh))",
-        "refresh": 2,
-        "regex": "/.* ([0-9]+) .*/",
-        "sort": 1,
-        "tagValuesQuery": "",
-        "tags": [],
-        "tagsQuery": "",
-        "type": "query",
-        "useTags": false
+       "expr" : "%%PROM_STATS_PREFIX%%%%PROM_SEPERATOR%%clients{node_id=~\"([[regex]])\"}",
+       "format" : "time_series",
+       "hide" : false,
+       "interval" : "",
+       "intervalFactor" : 2,
+       "legendFormat" : "{{hostname}}",
+       "refId" : "A",
+       "step" : 120
       },
       {
-        "allValue": null,
-        "current": {},
-        "datasource": null,
-        "hide": 2,
-        "includeAll": false,
-        "label": null,
-        "multi": false,
-        "name": "node_sum",
-        "options": [],
-        "query": "query_result(floor(sum(%%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh)))",
-        "refresh": 2,
-        "regex": "/.* ([0-9]+) .*/",
-        "sort": 1,
-        "tagValuesQuery": "",
-        "tags": [],
-        "tagsQuery": "",
-        "type": "query",
-        "useTags": false
+       "expr" : "sum(%%PROM_STATS_PREFIX%%%%PROM_SEPERATOR%%clients{node_id=~\"([[regex]])\"})",
+       "format" : "time_series",
+       "hide" : false,
+       "interval" : "",
+       "intervalFactor" : 2,
+       "legendFormat" : "Summe",
+       "refId" : "B",
+       "step" : 120
+      }
+     ],
+     "thresholds" : [
+     ],
+     "timeFrom" : null,
+     "timeShift" : null,
+     "title" : "clients im Mesh des Knotens [[mesh_name]]",
+     "tooltip" : {
+      "shared" : true,
+      "sort" : 1,
+      "value_type" : "individual"
+     },
+     "type" : "graph",
+     "xaxis" : {
+      "buckets" : null,
+      "mode" : "time",
+      "name" : null,
+      "show" : true,
+      "values" : [
+      ]
+     },
+     "yaxes" : [
+      {
+       "decimals" : 0,
+       "format" : "short",
+       "label" : "",
+       "logBase" : 1,
+       "max" : null,
+       "min" : null,
+       "show" : true
       },
       {
-        "allValue": null,
-        "current": {},
-        "datasource": null,
-        "hide": 2,
-        "includeAll": false,
-        "label": null,
-        "multi": false,
-        "name": "link_sum",
-        "options": [],
-        "query": "query_result(round(1000 * (sum(%%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh) - floor(sum(%%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh)))))",
-        "refresh": 2,
-        "regex": "/.* ([0-9]+) .*/",
-        "sort": 1,
-        "tagValuesQuery": "",
-        "tags": [],
-        "tagsQuery": "",
-        "type": "query",
-        "useTags": false
+       "format" : "short",
+       "label" : null,
+       "logBase" : 1,
+       "max" : null,
+       "min" : null,
+       "show" : true
       }
-    ]
-  },
-  "time": {
-    "from": "now-24h",
-    "to": "now"
+     ]
+    }
+   ],
+   "repeat" : null,
+   "repeatIteration" : null,
+   "repeatRowId" : null,
+   "showTitle" : false,
+   "title" : "Dashboard Row",
+   "titleSize" : "h6"
   },
-  "timepicker": {
-    "refresh_intervals": [
-      "5s",
-      "10s",
-      "30s",
-      "1m",
-      "5m",
-      "15m",
-      "30m",
-      "1h",
-      "2h",
-      "1d"
+  {
+   "collapse" : false,
+   "height" : "100",
+   "panels" : [
+    {
+     "content" : "<p>Links zu Router [[hostname]], Node ID [[node_id]]: <a href=\"%%DASHBOARD_PATH%%%%DASHBOARD_PREFIX%%status.json?var-hostname=[[hostname]]&var-node_id=[[node_id]]\">Status Dashboard<\/a>, <a href=\"%%MAP_NODE_URL%%[[node_id]]\">Map<\/a>.<\/p>\n",
+     "height" : "80px",
+     "id" : 4,
+     "links" : [
+     ],
+     "mode" : "html",
+     "repeat" : null,
+     "span" : 12,
+     "title" : "Links zu [[hostname]], Node ID [[node_id]]",
+     "type" : "text"
+    }
+   ],
+   "repeat" : null,
+   "repeatIteration" : null,
+   "repeatRowId" : null,
+   "showTitle" : false,
+   "title" : "Dashboard Row",
+   "titleSize" : "h6"
+  }
+ ],
+ "schemaVersion" : 14,
+ "style" : "dark",
+ "tags" : [
+ ],
+ "templating" : {
+  "list" : [
+   {
+    "allValue" : null,
+    "current" : {
+    },
+    "datasource" : null,
+    "hide" : 0,
+    "includeAll" : false,
+    "label" : "Mesh ausw\u00E4hlen:",
+    "multi" : false,
+    "name" : "mesh_name",
+    "options" : [
     ],
-    "time_options": [
-      "5m",
-      "15m",
-      "1h",
-      "6h",
-      "12h",
-      "24h",
-      "2d",
-      "7d",
-      "30d"
-    ]
-  },
-  "timezone": "",
-  "title": "%%DASHBOARD_PREFIX%%status-mesh-render",
-  "version": 5
+    "query" : "query_result(%%PROM_INFO_PREFIX%% and on (node_id) %%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh)",
+    "refresh" : 2,
+    "regex" : "\/.*hostname=\"([^\\\"]+)\".*\/",
+    "sort" : 1,
+    "tagValuesQuery" : "",
+    "tags" : [
+    ],
+    "tagsQuery" : "",
+    "type" : "query",
+    "useTags" : false
+   },
+   {
+    "allValue" : null,
+    "current" : {
+    },
+    "datasource" : null,
+    "hide" : 1,
+    "includeAll" : false,
+    "label" : null,
+    "multi" : false,
+    "name" : "mesh_id",
+    "options" : [
+    ],
+    "query" : "label_values(%%PROM_INFO_PREFIX%%{hostname=\"[[mesh_name]]\"},node_id)",
+    "refresh" : 2,
+    "regex" : "",
+    "sort" : 1,
+    "tagValuesQuery" : "",
+    "tags" : [
+    ],
+    "tagsQuery" : "",
+    "type" : "query",
+    "useTags" : false
+   },
+   {
+    "allValue" : null,
+    "current" : {
+    },
+    "datasource" : null,
+    "hide" : 2,
+    "includeAll" : false,
+    "label" : null,
+    "multi" : false,
+    "name" : "regex",
+    "options" : [
+    ],
+    "query" : "label_values(%%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh{node_id=\"[[mesh_id]]\"},members)",
+    "refresh" : 2,
+    "regex" : "",
+    "sort" : 1,
+    "tagValuesQuery" : "",
+    "tags" : [
+    ],
+    "tagsQuery" : "",
+    "type" : "query",
+    "useTags" : false
+   },
+   {
+    "allValue" : null,
+    "current" : {
+    },
+    "datasource" : null,
+    "hide" : 0,
+    "includeAll" : false,
+    "label" : "Knoten ausw\u00E4hlen:",
+    "multi" : false,
+    "name" : "hostname",
+    "options" : [
+    ],
+    "query" : "label_values(%%PROM_INFO_PREFIX%%{node_id=~\"[[regex]]\"},hostname)",
+    "refresh" : 2,
+    "regex" : "",
+    "sort" : 1,
+    "tagValuesQuery" : "",
+    "tags" : [
+    ],
+    "tagsQuery" : "",
+    "type" : "query",
+    "useTags" : false
+   },
+   {
+    "allValue" : null,
+    "current" : {
+    },
+    "datasource" : null,
+    "hide" : 1,
+    "includeAll" : false,
+    "label" : null,
+    "multi" : false,
+    "name" : "node_id",
+    "options" : [
+    ],
+    "query" : "label_values(%%PROM_INFO_PREFIX%%{hostname=\"[[hostname]]\"},node_id)",
+    "refresh" : 2,
+    "regex" : "",
+    "sort" : 1,
+    "tagValuesQuery" : "",
+    "tags" : [
+    ],
+    "tagsQuery" : "",
+    "type" : "query",
+    "useTags" : false
+   },
+   {
+    "allValue" : null,
+    "current" : {
+    },
+    "datasource" : null,
+    "hide" : 2,
+    "includeAll" : false,
+    "label" : null,
+    "multi" : false,
+    "name" : "mesh_count",
+    "options" : [
+    ],
+    "query" : "query_result(count(%%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh))",
+    "refresh" : 2,
+    "regex" : "\/.* ([0-9]+) .*\/",
+    "sort" : 1,
+    "tagValuesQuery" : "",
+    "tags" : [
+    ],
+    "tagsQuery" : "",
+    "type" : "query",
+    "useTags" : false
+   },
+   {
+    "allValue" : null,
+    "current" : {
+    },
+    "datasource" : null,
+    "hide" : 2,
+    "includeAll" : false,
+    "label" : null,
+    "multi" : false,
+    "name" : "node_sum",
+    "options" : [
+    ],
+    "query" : "query_result(sum(floor(%%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh)))",
+    "refresh" : 2,
+    "regex" : "\/.* ([0-9]+) .*\/",
+    "sort" : 1,
+    "tagValuesQuery" : "",
+    "tags" : [
+    ],
+    "tagsQuery" : "",
+    "type" : "query",
+    "useTags" : false
+   },
+   {
+    "allValue" : null,
+    "current" : {
+    },
+    "datasource" : null,
+    "hide" : 2,
+    "includeAll" : false,
+    "label" : null,
+    "multi" : false,
+    "name" : "link_sum",
+    "options" : [
+    ],
+    "query" : "query_result(round(1000 * (sum(%%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh) - sum(floor(%%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh)))))",
+    "refresh" : 2,
+    "regex" : "\/.* ([0-9]+) .*\/",
+    "sort" : 1,
+    "tagValuesQuery" : "",
+    "tags" : [
+    ],
+    "tagsQuery" : "",
+    "type" : "query",
+    "useTags" : false
+   }
+  ]
+ },
+ "time" : {
+  "from" : "now-24h",
+  "to" : "now"
+ },
+ "timepicker" : {
+  "refresh_intervals" : [
+   "5s",
+   "10s",
+   "30s",
+   "1m",
+   "5m",
+   "15m",
+   "30m",
+   "1h",
+   "2h",
+   "1d"
+  ],
+  "time_options" : [
+   "5m",
+   "15m",
+   "1h",
+   "6h",
+   "12h",
+   "24h",
+   "2d",
+   "7d",
+   "30d"
+  ]
+ },
+ "timezone" : "",
+ "title" : "%%DASHBOARD_PREFIX%%status-mesh",
+ "version" : 12
 }

+ 505 - 328
dashboard/status-mesh.json.in

@@ -1,347 +1,524 @@
 {
-  "annotations": {
-    "list": []
-  },
-  "editable": true,
-  "gnetId": null,
-  "graphTooltip": 0,
-  "hideControls": false,
-  "id": null,
-  "links": [],
-  "links": [
-    {
-      "icon": "info",
-      "tags": [],
-      "title": "[[mesh_count]] Meshes, [[node_sum]] Knoten, [[link_sum]] Links",
-      "type": "link"
-    }
-  ],
-  "rows": [
+ "annotations" : {
+  "list" : [
+  ]
+ },
+ "editable" : true,
+ "gnetId" : null,
+ "graphTooltip" : 0,
+ "hideControls" : false,
+ "id" : null,
+ "links" : [
+ ],
+ "rows" : [
+  {
+   "collapse" : true,
+   "height" : 260,
+   "panels" : [
     {
-      "collapse": false,
-      "height": 278,
-      "panels": [
-        {
-          "aliasColors": {},
-          "bars": false,
-          "dashLength": 10,
-          "dashes": false,
-          "datasource": null,
-          "fill": 0,
-          "id": 3,
-          "legend": {
-            "alignAsTable": true,
-            "avg": true,
-            "current": true,
-            "hideEmpty": true,
-            "max": false,
-            "min": false,
-            "rightSide": true,
-            "show": true,
-            "total": false,
-            "values": true
-          },
-          "lines": true,
-          "linewidth": 1,
-          "links": [],
-          "nullPointMode": "null",
-          "percentage": false,
-          "pointradius": 5,
-          "points": false,
-          "renderer": "flot",
-          "seriesOverrides": [],
-          "spaceLength": 10,
-          "span": 12,
-          "stack": false,
-          "steppedLine": false,
-          "targets": [
-            {
-              "expr": "%%PROM_STATS_PREFIX%%%%PROM_SEPERATOR%%clients{node_id=~\"([[regex]])\"}",
-              "format": "time_series",
-              "hide": false,
-              "interval": "",
-              "intervalFactor": 2,
-              "legendFormat": "{{hostname}}",
-              "refId": "A",
-              "step": 120
-            },
-            {
-              "expr": "sum(%%PROM_STATS_PREFIX%%%%PROM_SEPERATOR%%clients{node_id=~\"([[regex]])\"})",
-              "format": "time_series",
-              "hide": false,
-              "interval": "",
-              "intervalFactor": 2,
-              "legendFormat": "Summe",
-              "refId": "B",
-              "step": 120
-            }
-          ],
-          "thresholds": [],
-          "timeFrom": null,
-          "timeShift": null,
-          "title": "clients im Mesh des Knotens [[mesh_name]]",
-          "tooltip": {
-            "shared": true,
-            "sort": 1,
-            "value_type": "individual"
-          },
-          "type": "graph",
-          "xaxis": {
-            "buckets": null,
-            "mode": "time",
-            "name": null,
-            "show": true,
-            "values": []
-          },
-          "yaxes": [
-            {
-              "decimals": 0,
-              "format": "short",
-              "label": "",
-              "logBase": 1,
-              "max": null,
-              "min": null,
-              "show": true
-            },
-            {
-              "format": "short",
-              "label": null,
-              "logBase": 1,
-              "max": null,
-              "min": null,
-              "show": true
-            }
-          ]
-        }
-      ],
-      "repeat": null,
-      "repeatIteration": null,
-      "repeatRowId": null,
-      "showTitle": false,
-      "title": "Dashboard Row",
-      "titleSize": "h6"
-    },
-    {
-      "collapse": false,
-      "height": "100",
-      "panels": [
-        {
-          "content": "<p>Links zu Router [[hostname]], Node ID [[node_id]]: <a href=\"%%DASHBOARD_PATH%%%%DASHBOARD_PREFIX%%status.json?var-hostname=[[hostname]]&var-node_id=[[node_id]]\">Status Dashboard</a>, <a href=\"https://map.ffdo.de/meshviewer/#!v:m;n:[[node_id]]\">Map</a>.</p>\n",
-          "height": "80px",
-          "id": 4,
-          "links": [],
-          "mode": "html",
-          "repeat": null,
-          "span": 12,
-          "title": "Links zu [[hostname]], Node ID [[node_id]]",
-          "type": "text"
-        }
-      ],
-      "repeat": null,
-      "repeatIteration": null,
-      "repeatRowId": null,
-      "showTitle": false,
-      "title": "Dashboard Row",
-      "titleSize": "h6"
-    }
-  ],
-  "schemaVersion": 14,
-  "style": "dark",
-  "tags": [],
-  "templating": {
-    "list": [
+     "aliasColors" : {
+     },
+     "bars" : false,
+     "dashLength" : 10,
+     "dashes" : false,
+     "datasource" : null,
+     "fill" : 0,
+     "id" : 5,
+     "legend" : {
+      "alignAsTable" : false,
+      "avg" : true,
+      "current" : false,
+      "hideEmpty" : true,
+      "max" : false,
+      "min" : false,
+      "rightSide" : false,
+      "show" : true,
+      "total" : false,
+      "values" : true
+     },
+     "lines" : true,
+     "linewidth" : 1,
+     "links" : [
+     ],
+     "nullPointMode" : "null",
+     "percentage" : false,
+     "pointradius" : 5,
+     "points" : false,
+     "renderer" : "flot",
+     "seriesOverrides" : [
+     ],
+     "spaceLength" : 10,
+     "span" : 9,
+     "stack" : false,
+     "steppedLine" : false,
+     "targets" : [
       {
-        "allValue": null,
-        "current": {},
-        "datasource": null,
-        "hide": 0,
-        "includeAll": false,
-        "label": "Mesh auswählen:",
-        "multi": false,
-        "name": "mesh_name",
-        "options": [],
-        "query": "query_result(%%PROM_INFO_PREFIX%% and on (node_id) %%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh)",
-        "refresh": 2,
-        "regex": "/.*hostname=\"([^\\\"]+)\".*/",
-        "sort": 1,
-        "tagValuesQuery": "",
-        "tags": [],
-        "tagsQuery": "",
-        "type": "query",
-        "useTags": false
+       "expr" : "count(%%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh)",
+       "format" : "time_series",
+       "intervalFactor" : 2,
+       "legendFormat" : "Meshes",
+       "refId" : "A",
+       "step" : 240
       },
       {
-        "allValue": null,
-        "current": {},
-        "datasource": null,
-        "hide": 1,
-        "includeAll": false,
-        "label": null,
-        "multi": false,
-        "name": "mesh_id",
-        "options": [],
-        "query": "label_values(%%PROM_INFO_PREFIX%%{hostname=\"[[mesh_name]]\"},node_id)",
-        "refresh": 2,
-        "regex": "",
-        "sort": 1,
-        "tagValuesQuery": "",
-        "tags": [],
-        "tagsQuery": "",
-        "type": "query",
-        "useTags": false
+       "expr" : "sum(floor(%%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh))",
+       "format" : "time_series",
+       "intervalFactor" : 2,
+       "legendFormat" : "Knoten",
+       "refId" : "B",
+       "step" : 240
       },
       {
-        "allValue": null,
-        "current": {},
-        "datasource": null,
-        "hide": 2,
-        "includeAll": false,
-        "label": null,
-        "multi": false,
-        "name": "regex",
-        "options": [],
-        "query": "label_values(%%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh{node_id=\"[[mesh_id]]\"},members)",
-        "refresh": 2,
-        "regex": "",
-        "sort": 1,
-        "tagValuesQuery": "",
-        "tags": [],
-        "tagsQuery": "",
-        "type": "query",
-        "useTags": false
-      },
+       "expr" : "round(1000 * sum(%%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh - floor(%%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh)))",
+       "format" : "time_series",
+       "intervalFactor" : 2,
+       "legendFormat" : "Links",
+       "refId" : "C",
+       "step" : 240
+      }
+     ],
+     "thresholds" : [
+     ],
+     "timeFrom" : null,
+     "timeShift" : null,
+     "title" : "Meshes, Knoten, Links - zZ [[mesh_count]], [[node_sum]], [[link_sum]]",
+     "tooltip" : {
+      "shared" : true,
+      "sort" : 0,
+      "value_type" : "individual"
+     },
+     "type" : "graph",
+     "xaxis" : {
+      "buckets" : null,
+      "mode" : "time",
+      "name" : null,
+      "show" : true,
+      "values" : [
+      ]
+     },
+     "yaxes" : [
       {
-        "allValue": null,
-        "current": {},
-        "datasource": null,
-        "hide": 0,
-        "includeAll": false,
-        "label": "Knoten auswählen:",
-        "multi": false,
-        "name": "hostname",
-        "options": [],
-        "query": "label_values(%%PROM_INFO_PREFIX%%{node_id=~\"[[regex]]\"},hostname)",
-        "refresh": 2,
-        "regex": "",
-        "sort": 1,
-        "tagValuesQuery": "",
-        "tags": [],
-        "tagsQuery": "",
-        "type": "query",
-        "useTags": false
+       "format" : "short",
+       "label" : null,
+       "logBase" : 1,
+       "max" : null,
+       "min" : "0",
+       "show" : true
       },
       {
-        "allValue": null,
-        "current": {},
-        "datasource": null,
-        "hide": 1,
-        "includeAll": false,
-        "label": null,
-        "multi": false,
-        "name": "node_id",
-        "options": [],
-        "query": "label_values(%%PROM_INFO_PREFIX%%{hostname=\"[[hostname]]\"},node_id)",
-        "refresh": 2,
-        "regex": "",
-        "sort": 1,
-        "tagValuesQuery": "",
-        "tags": [],
-        "tagsQuery": "",
-        "type": "query",
-        "useTags": false
-      },
+       "format" : "short",
+       "label" : null,
+       "logBase" : 1,
+       "max" : null,
+       "min" : null,
+       "show" : true
+      }
+     ]
+    },
+    {
+     "aliasColors" : {
+     },
+     "cacheTimeout" : null,
+     "combine" : {
+      "label" : "Others",
+      "threshold" : 0
+     },
+     "datasource" : null,
+     "fontSize" : "100%",
+     "format" : "short",
+     "id" : 6,
+     "interval" : null,
+     "legend" : {
+      "percentage" : false,
+      "show" : false,
+      "values" : false
+     },
+     "legendType" : "Under graph",
+     "links" : [
+     ],
+     "maxDataPoints" : 3,
+     "nullPointMode" : "connected",
+     "pieType" : "pie",
+     "span" : 3,
+     "strokeWidth" : "0",
+     "targets" : [
+      {
+       "expr" : "count_values(\"size\",floor(%%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh))",
+       "format" : "time_series",
+       "intervalFactor" : 2,
+       "legendFormat" : "{{size}}",
+       "refId" : "A",
+       "step" : 43200
+      }
+     ],
+     "title" : "Meshgr\u00F6\u00DFenverteilung",
+     "type" : "grafana-piechart-panel",
+     "valueName" : "current"
+    }
+   ],
+   "repeat" : null,
+   "repeatIteration" : null,
+   "repeatRowId" : null,
+   "showTitle" : false,
+   "title" : "[[mesh_count]] Meshes mit insgesamt [[node_sum]] Knoten und [[link_sum]] Links",
+   "titleSize" : "h6"
+  },
+  {
+   "collapse" : false,
+   "height" : 278,
+   "panels" : [
+    {
+     "aliasColors" : {
+     },
+     "bars" : false,
+     "dashLength" : 10,
+     "dashes" : false,
+     "datasource" : null,
+     "fill" : 0,
+     "id" : 3,
+     "legend" : {
+      "alignAsTable" : true,
+      "avg" : true,
+      "current" : true,
+      "hideEmpty" : true,
+      "max" : false,
+      "min" : false,
+      "rightSide" : true,
+      "show" : true,
+      "total" : false,
+      "values" : true
+     },
+     "lines" : true,
+     "linewidth" : 1,
+     "links" : [
+     ],
+     "nullPointMode" : "null",
+     "percentage" : false,
+     "pointradius" : 5,
+     "points" : false,
+     "renderer" : "flot",
+     "seriesOverrides" : [
+     ],
+     "spaceLength" : 10,
+     "span" : 12,
+     "stack" : false,
+     "steppedLine" : false,
+     "targets" : [
       {
-        "allValue": null,
-        "current": {},
-        "datasource": null,
-        "hide": 2,
-        "includeAll": false,
-        "label": null,
-        "multi": false,
-        "name": "mesh_count",
-        "options": [],
-        "query": "query_result(count(%%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh))",
-        "refresh": 2,
-        "regex": "/.* ([0-9]+) .*/",
-        "sort": 1,
-        "tagValuesQuery": "",
-        "tags": [],
-        "tagsQuery": "",
-        "type": "query",
-        "useTags": false
+       "expr" : "%%PROM_STATS_PREFIX%%%%PROM_SEPERATOR%%clients{node_id=~\"([[regex]])\"}",
+       "format" : "time_series",
+       "hide" : false,
+       "interval" : "",
+       "intervalFactor" : 2,
+       "legendFormat" : "{{hostname}}",
+       "refId" : "A",
+       "step" : 120
       },
       {
-        "allValue": null,
-        "current": {},
-        "datasource": null,
-        "hide": 2,
-        "includeAll": false,
-        "label": null,
-        "multi": false,
-        "name": "node_sum",
-        "options": [],
-        "query": "query_result(floor(sum(%%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh)))",
-        "refresh": 2,
-        "regex": "/.* ([0-9]+) .*/",
-        "sort": 1,
-        "tagValuesQuery": "",
-        "tags": [],
-        "tagsQuery": "",
-        "type": "query",
-        "useTags": false
+       "expr" : "sum(%%PROM_STATS_PREFIX%%%%PROM_SEPERATOR%%clients{node_id=~\"([[regex]])\"})",
+       "format" : "time_series",
+       "hide" : false,
+       "interval" : "",
+       "intervalFactor" : 2,
+       "legendFormat" : "Summe",
+       "refId" : "B",
+       "step" : 120
+      }
+     ],
+     "thresholds" : [
+     ],
+     "timeFrom" : null,
+     "timeShift" : null,
+     "title" : "clients im Mesh des Knotens [[mesh_name]]",
+     "tooltip" : {
+      "shared" : true,
+      "sort" : 1,
+      "value_type" : "individual"
+     },
+     "type" : "graph",
+     "xaxis" : {
+      "buckets" : null,
+      "mode" : "time",
+      "name" : null,
+      "show" : true,
+      "values" : [
+      ]
+     },
+     "yaxes" : [
+      {
+       "decimals" : 0,
+       "format" : "short",
+       "label" : "",
+       "logBase" : 1,
+       "max" : null,
+       "min" : null,
+       "show" : true
       },
       {
-        "allValue": null,
-        "current": {},
-        "datasource": null,
-        "hide": 2,
-        "includeAll": false,
-        "label": null,
-        "multi": false,
-        "name": "link_sum",
-        "options": [],
-        "query": "query_result(round(1000 * (sum(%%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh) - floor(sum(%%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh)))))",
-        "refresh": 2,
-        "regex": "/.* ([0-9]+) .*/",
-        "sort": 1,
-        "tagValuesQuery": "",
-        "tags": [],
-        "tagsQuery": "",
-        "type": "query",
-        "useTags": false
+       "format" : "short",
+       "label" : null,
+       "logBase" : 1,
+       "max" : null,
+       "min" : null,
+       "show" : true
       }
-    ]
-  },
-  "time": {
-    "from": "now-24h",
-    "to": "now"
+     ]
+    }
+   ],
+   "repeat" : null,
+   "repeatIteration" : null,
+   "repeatRowId" : null,
+   "showTitle" : false,
+   "title" : "Dashboard Row",
+   "titleSize" : "h6"
   },
-  "timepicker": {
-    "refresh_intervals": [
-      "5s",
-      "10s",
-      "30s",
-      "1m",
-      "5m",
-      "15m",
-      "30m",
-      "1h",
-      "2h",
-      "1d"
+  {
+   "collapse" : false,
+   "height" : "100",
+   "panels" : [
+    {
+     "content" : "<p>Links zu Router [[hostname]], Node ID [[node_id]]: <a href=\"%%DASHBOARD_PATH%%%%DASHBOARD_PREFIX%%status.json?var-hostname=[[hostname]]&var-node_id=[[node_id]]\">Status Dashboard<\/a>, <a href=\"%%MAP_NODE_URL%%[[node_id]]\">Map<\/a>.<\/p>\n",
+     "height" : "80px",
+     "id" : 4,
+     "links" : [
+     ],
+     "mode" : "html",
+     "repeat" : null,
+     "span" : 12,
+     "title" : "Links zu [[hostname]], Node ID [[node_id]]",
+     "type" : "text"
+    }
+   ],
+   "repeat" : null,
+   "repeatIteration" : null,
+   "repeatRowId" : null,
+   "showTitle" : false,
+   "title" : "Dashboard Row",
+   "titleSize" : "h6"
+  }
+ ],
+ "schemaVersion" : 14,
+ "style" : "dark",
+ "tags" : [
+ ],
+ "templating" : {
+  "list" : [
+   {
+    "allValue" : null,
+    "current" : {
+    },
+    "datasource" : null,
+    "hide" : 0,
+    "includeAll" : false,
+    "label" : "Mesh ausw\u00E4hlen:",
+    "multi" : false,
+    "name" : "mesh_name",
+    "options" : [
     ],
-    "time_options": [
-      "5m",
-      "15m",
-      "1h",
-      "6h",
-      "12h",
-      "24h",
-      "2d",
-      "7d",
-      "30d"
-    ]
-  },
-  "timezone": "",
-  "title": "%%DASHBOARD_PREFIX%%status-mesh",
-  "version": 5
+    "query" : "query_result(%%PROM_INFO_PREFIX%% and on (node_id) %%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh)",
+    "refresh" : 2,
+    "regex" : "\/.*hostname=\"([^\\\"]+)\".*\/",
+    "sort" : 1,
+    "tagValuesQuery" : "",
+    "tags" : [
+    ],
+    "tagsQuery" : "",
+    "type" : "query",
+    "useTags" : false
+   },
+   {
+    "allValue" : null,
+    "current" : {
+    },
+    "datasource" : null,
+    "hide" : 1,
+    "includeAll" : false,
+    "label" : null,
+    "multi" : false,
+    "name" : "mesh_id",
+    "options" : [
+    ],
+    "query" : "label_values(%%PROM_INFO_PREFIX%%{hostname=\"[[mesh_name]]\"},node_id)",
+    "refresh" : 2,
+    "regex" : "",
+    "sort" : 1,
+    "tagValuesQuery" : "",
+    "tags" : [
+    ],
+    "tagsQuery" : "",
+    "type" : "query",
+    "useTags" : false
+   },
+   {
+    "allValue" : null,
+    "current" : {
+    },
+    "datasource" : null,
+    "hide" : 2,
+    "includeAll" : false,
+    "label" : null,
+    "multi" : false,
+    "name" : "regex",
+    "options" : [
+    ],
+    "query" : "label_values(%%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh{node_id=\"[[mesh_id]]\"},members)",
+    "refresh" : 2,
+    "regex" : "",
+    "sort" : 1,
+    "tagValuesQuery" : "",
+    "tags" : [
+    ],
+    "tagsQuery" : "",
+    "type" : "query",
+    "useTags" : false
+   },
+   {
+    "allValue" : null,
+    "current" : {
+    },
+    "datasource" : null,
+    "hide" : 0,
+    "includeAll" : false,
+    "label" : "Knoten ausw\u00E4hlen:",
+    "multi" : false,
+    "name" : "hostname",
+    "options" : [
+    ],
+    "query" : "label_values(%%PROM_INFO_PREFIX%%{node_id=~\"[[regex]]\"},hostname)",
+    "refresh" : 2,
+    "regex" : "",
+    "sort" : 1,
+    "tagValuesQuery" : "",
+    "tags" : [
+    ],
+    "tagsQuery" : "",
+    "type" : "query",
+    "useTags" : false
+   },
+   {
+    "allValue" : null,
+    "current" : {
+    },
+    "datasource" : null,
+    "hide" : 1,
+    "includeAll" : false,
+    "label" : null,
+    "multi" : false,
+    "name" : "node_id",
+    "options" : [
+    ],
+    "query" : "label_values(%%PROM_INFO_PREFIX%%{hostname=\"[[hostname]]\"},node_id)",
+    "refresh" : 2,
+    "regex" : "",
+    "sort" : 1,
+    "tagValuesQuery" : "",
+    "tags" : [
+    ],
+    "tagsQuery" : "",
+    "type" : "query",
+    "useTags" : false
+   },
+   {
+    "allValue" : null,
+    "current" : {
+    },
+    "datasource" : null,
+    "hide" : 2,
+    "includeAll" : false,
+    "label" : null,
+    "multi" : false,
+    "name" : "mesh_count",
+    "options" : [
+    ],
+    "query" : "query_result(count(%%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh))",
+    "refresh" : 2,
+    "regex" : "\/.* ([0-9]+) .*\/",
+    "sort" : 1,
+    "tagValuesQuery" : "",
+    "tags" : [
+    ],
+    "tagsQuery" : "",
+    "type" : "query",
+    "useTags" : false
+   },
+   {
+    "allValue" : null,
+    "current" : {
+    },
+    "datasource" : null,
+    "hide" : 2,
+    "includeAll" : false,
+    "label" : null,
+    "multi" : false,
+    "name" : "node_sum",
+    "options" : [
+    ],
+    "query" : "query_result(sum(floor(%%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh)))",
+    "refresh" : 2,
+    "regex" : "\/.* ([0-9]+) .*\/",
+    "sort" : 1,
+    "tagValuesQuery" : "",
+    "tags" : [
+    ],
+    "tagsQuery" : "",
+    "type" : "query",
+    "useTags" : false
+   },
+   {
+    "allValue" : null,
+    "current" : {
+    },
+    "datasource" : null,
+    "hide" : 2,
+    "includeAll" : false,
+    "label" : null,
+    "multi" : false,
+    "name" : "link_sum",
+    "options" : [
+    ],
+    "query" : "query_result(round(1000 * (sum(%%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh) - sum(floor(%%PROM_GRAPH_PREFIX%%%%PROM_SEPERATOR%%mesh)))))",
+    "refresh" : 2,
+    "regex" : "\/.* ([0-9]+) .*\/",
+    "sort" : 1,
+    "tagValuesQuery" : "",
+    "tags" : [
+    ],
+    "tagsQuery" : "",
+    "type" : "query",
+    "useTags" : false
+   }
+  ]
+ },
+ "time" : {
+  "from" : "now-24h",
+  "to" : "now"
+ },
+ "timepicker" : {
+  "refresh_intervals" : [
+   "5s",
+   "10s",
+   "30s",
+   "1m",
+   "5m",
+   "15m",
+   "30m",
+   "1h",
+   "2h",
+   "1d"
+  ],
+  "time_options" : [
+   "5m",
+   "15m",
+   "1h",
+   "6h",
+   "12h",
+   "24h",
+   "2d",
+   "7d",
+   "30d"
+  ]
+ },
+ "timezone" : "",
+ "title" : "%%DASHBOARD_PREFIX%%status-mesh",
+ "version" : 12
 }

File diff suppressed because it is too large
+ 98 - 3
dashboard/status-render.json.in


File diff suppressed because it is too large
+ 98 - 3
dashboard/status.json.in