-
Sam Roberts authoredSam Roberts authored
homedashboard.py 43.36 KiB
def render_homedashboard(staff):
return {
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": True,
"hide": True,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard",
}
]
},
"editable": True,
"gnetId": None,
"graphTooltip": 0,
"id": 49,
"uid": "home",
"iteration": 1595947519970,
"links": _render_links(staff),
"panels": _render_panels(staff),
"schemaVersion": 26,
"style": "dark",
"tags": [],
"templating": {
"list": (
[
{
"allValue": None,
"datasource": "PollerInfluxDB",
"definition": "SHOW TAG VALUES WITH KEY=hostname",
"hide": 0,
"includeAll": False,
"label": "Router:",
"multi": False,
"name": "hostname",
"options": [],
"query": "SHOW TAG VALUES WITH KEY=hostname",
"refresh": 1,
"regex": "",
"skipUrlSync": False,
"sort": 0,
"tagValuesQuery": "",
"tags": [],
"tagsQuery": "",
"type": "query",
"useTags": False,
},
{
"allValue": None,
"datasource": "PollerInfluxDB",
"definition": "SHOW TAG VALUES WITH KEY IN (interface_name) WHERE hostname =~ /$hostname/ ",
"hide": 0,
"includeAll": False,
"label": "Interface :",
"multi": False,
"name": "interface_name",
"options": [],
"query": "SHOW TAG VALUES WITH KEY IN (interface_name) WHERE hostname =~ /$hostname/ ",
"refresh": 1,
"regex": "",
"skipUrlSync": False,
"sort": 0,
"tagValuesQuery": "",
"tags": [],
"tagsQuery": "",
"type": "query",
"useTags": False,
},
]
if staff
else []
)
},
"time": {"from": "now-6h", "to": "now"},
"timepicker": {
"refresh_intervals": [
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d",
]
},
"timezone": "",
"title": "Home",
"version": 1,
}
def _render_links(staff):
result = [
{
"asDropdown": True,
"icon": "external link",
"tags": ["services"],
"targetBlank": True,
"title": "Services",
"type": "dashboards",
},
{
"asDropdown": True,
"icon": "external link",
"tags": ["infrastructure"],
"targetBlank": True,
"title": "Infrastructure",
"type": "dashboards",
},
{
"asDropdown": True,
"icon": "external link",
"tags": ["customers"],
"targetBlank": True,
"title": "NREN Access",
"type": "dashboards",
},
]
if staff:
result.append(
{
"asDropdown": True,
"icon": "external link",
"tags": ["customerslegacy"],
"targetBlank": True,
"title": "NREN Access LEGACY",
"type": "dashboards",
}
)
result.append(
{
"asDropdown": True,
"icon": "external link",
"tags": ["peers"],
"targetBlank": True,
"title": "Peers",
"type": "dashboards",
}
)
return result
def _render_panels(staff):
if staff:
return [
{
"aliasColors": {},
"bars": False,
"dashLength": 10,
"dashes": False,
"datasource": "PollerInfluxDB",
"fieldConfig": {"defaults": {"custom": {}}, "overrides": []},
"fill": 1,
"fillGradient": 3,
"gridPos": {"h": 14, "w": 12, "x": 0, "y": 0},
"hiddenSeries": False,
"id": 2,
"legend": {
"alignAsTable": True,
"avg": True,
"current": True,
"max": True,
"min": False,
"rightSide": False,
"show": True,
"total": False,
"values": True,
},
"lines": True,
"linewidth": 1,
"nullPointMode": "null",
"percentage": False,
"pluginVersion": "7.1.1",
"pointradius": 2,
"points": False,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": False,
"steppedLine": False,
"targets": [
{
"alias": "Ingress Traffic",
"groupBy": [
{"params": ["5m"], "type": "time"},
{"params": ["linear"], "type": "fill"},
],
"measurement": "interface_rates",
"orderByTime": "ASC",
"policy": "default",
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{"params": ["ingress"], "type": "field"},
{"params": [], "type": "mean"},
{"params": ["*8"], "type": "math"},
]
],
"tags": [
{
"key": "hostname",
"operator": "=~",
"value": "/^$hostname$/",
},
{
"condition": "AND",
"key": "interface_name",
"operator": "=",
"value": "$interface_name",
},
],
},
{
"alias": "Egress Traffic",
"groupBy": [
{"params": ["5m"], "type": "time"},
{"params": ["linear"], "type": "fill"},
],
"measurement": "interface_rates",
"orderByTime": "ASC",
"policy": "default",
"refId": "B",
"resultFormat": "time_series",
"select": [
[
{"params": ["egress"], "type": "field"},
{"params": [], "type": "mean"},
{"params": ["*8"], "type": "math"},
]
],
"tags": [
{
"key": "hostname",
"operator": "=~",
"value": "/^$hostname$/",
},
{
"condition": "AND",
"key": "interface_name",
"operator": "=",
"value": "$interface_name",
},
],
},
{
"alias": "Ingress 95th Percentile",
"groupBy": [],
"measurement": "interface_rates",
"orderByTime": "ASC",
"policy": "default",
"refId": "C",
"resultFormat": "time_series",
"select": [
[
{"params": ["ingress"], "type": "field"},
{"params": [95], "type": "percentile"},
{"params": ["*8"], "type": "math"},
]
],
"tags": [
{
"condition": None,
"key": "hostname",
"operator": "=~",
"value": "/^$hostname$/",
},
{
"condition": "AND",
"key": "interface_name",
"operator": "=",
"value": "$interface_name",
},
],
},
{
"alias": "Egress 95th Percentile",
"groupBy": [],
"measurement": "interface_rates",
"orderByTime": "ASC",
"policy": "default",
"refId": "D",
"resultFormat": "time_series",
"select": [
[
{"params": ["egress"], "type": "field"},
{"params": [95], "type": "percentile"},
{"params": ["*8"], "type": "math"},
]
],
"tags": [
{
"condition": None,
"key": "hostname",
"operator": "=~",
"value": "/^$hostname$/",
},
{
"condition": "AND",
"key": "interface_name",
"operator": "=",
"value": "$interface_name",
},
],
},
],
"thresholds": [],
"timeFrom": None,
"timeRegions": [],
"timeShift": None,
"title": "$hostname - $interface_name - Traffic",
"tooltip": {"shared": True, "sort": 0, "value_type": "individual"},
"type": "graph",
"xaxis": {
"buckets": None,
"mode": "time",
"name": None,
"show": True,
"values": [],
},
"yaxes": [
{
"format": "bps",
"label": "bits per second",
"logBase": 1,
"max": None,
"min": None,
"show": True,
},
{
"format": "bps",
"label": "bits per second",
"logBase": 1,
"max": None,
"min": None,
"show": True,
},
],
"yaxis": {"align": False, "alignLevel": None},
},
{
"aliasColors": {},
"bars": False,
"dashLength": 10,
"dashes": False,
"datasource": "PollerInfluxDB",
"fieldConfig": {"defaults": {"custom": {}}, "overrides": []},
"fill": 1,
"fillGradient": 3,
"gridPos": {"h": 14, "w": 12, "x": 12, "y": 0},
"hiddenSeries": False,
"id": 3,
"legend": {
"alignAsTable": True,
"avg": True,
"current": True,
"max": True,
"min": False,
"rightSide": False,
"show": True,
"total": False,
"values": True,
},
"lines": True,
"linewidth": 1,
"nullPointMode": "null",
"percentage": False,
"pluginVersion": "7.1.1",
"pointradius": 2,
"points": False,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": False,
"steppedLine": False,
"targets": [
{
"alias": "Inbound",
"groupBy": [
{"params": ["5m"], "type": "time"},
{"params": ["linear"], "type": "fill"},
],
"measurement": "interface_rates",
"orderByTime": "ASC",
"policy": "default",
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{"params": ["ingressv6"], "type": "field"},
{"params": [], "type": "mean"},
{"params": ["*8"], "type": "math"},
]
],
"tags": [
{
"key": "hostname",
"operator": "=~",
"value": "/^$hostname$/",
},
{
"condition": "AND",
"key": "interface_name",
"operator": "=",
"value": "$interface_name",
},
],
},
{
"alias": "Outbound",
"groupBy": [
{"params": ["5m"], "type": "time"},
{"params": ["linear"], "type": "fill"},
],
"measurement": "interface_rates",
"orderByTime": "ASC",
"policy": "default",
"refId": "B",
"resultFormat": "time_series",
"select": [
[
{"params": ["egressv6"], "type": "field"},
{"params": [], "type": "mean"},
{"params": ["*8"], "type": "math"},
]
],
"tags": [
{
"key": "hostname",
"operator": "=~",
"value": "/^$hostname$/",
},
{
"condition": "AND",
"key": "interface_name",
"operator": "=",
"value": "$interface_name",
},
],
},
{
"alias": "Ingress 95th Percentile",
"groupBy": [],
"measurement": "interface_rates",
"orderByTime": "ASC",
"policy": "default",
"refId": "C",
"resultFormat": "time_series",
"select": [
[
{"params": ["ingressv6"], "type": "field"},
{"params": [95], "type": "percentile"},
{"params": ["*8"], "type": "math"},
]
],
"tags": [
{
"condition": None,
"key": "hostname",
"operator": "=~",
"value": "/^$hostname$/",
},
{
"condition": "AND",
"key": "interface_name",
"operator": "=",
"value": "$interface_name",
},
],
},
{
"alias": "Egress 95th Percentile",
"groupBy": [],
"measurement": "interface_rates",
"orderByTime": "ASC",
"policy": "default",
"refId": "D",
"resultFormat": "time_series",
"select": [
[
{"params": ["egressv6"], "type": "field"},
{"params": [95], "type": "percentile"},
{"params": ["*8"], "type": "math"},
]
],
"tags": [
{
"condition": None,
"key": "hostname",
"operator": "=~",
"value": "/^$hostname$/",
},
{
"condition": "AND",
"key": "interface_name",
"operator": "=",
"value": "$interface_name",
},
],
},
],
"thresholds": [],
"timeFrom": None,
"timeRegions": [],
"timeShift": None,
"title": "$hostname - $interface_name - IPv6 Traffic",
"tooltip": {"shared": True, "sort": 0, "value_type": "individual"},
"type": "graph",
"xaxis": {
"buckets": None,
"mode": "time",
"name": None,
"show": True,
"values": [],
},
"yaxes": [
{
"format": "bps",
"label": "bits per second",
"logBase": 1,
"max": None,
"min": None,
"show": True,
},
{
"format": "bps",
"label": "bits per second",
"logBase": 1,
"max": None,
"min": None,
"show": True,
},
],
"yaxis": {"align": False, "alignLevel": None},
},
{
"aliasColors": {},
"bars": False,
"dashLength": 10,
"dashes": False,
"datasource": "PollerInfluxDB",
"decimals": 2,
"fill": 1,
"fillGradient": 10,
"gridPos": {"h": 14, "w": 12, "x": 0, "y": 14},
"hiddenSeries": False,
"id": 4,
"legend": {
"alignAsTable": True,
"avg": True,
"current": True,
"max": True,
"min": False,
"rightSide": False,
"show": True,
"total": False,
"values": True,
},
"lines": True,
"linewidth": 1,
"nullPointMode": "null",
"options": {"alertThreshold": True},
"percentage": False,
"pluginVersion": "8.2.5",
"pointradius": 2,
"points": False,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": False,
"steppedLine": False,
"targets": [
{
"alias": "Ingress Errors",
"groupBy": [
{"params": ["5m"], "type": "time"},
{"params": ["linear"], "type": "fill"},
],
"measurement": "interface_rates",
"orderByTime": "ASC",
"policy": "default",
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{"params": ["errorsIn"], "type": "field"},
{"params": [], "type": "mean"},
]
],
"tags": [
{
"key": "hostname",
"operator": "=~",
"value": "/^$hostname$/",
},
{
"condition": "AND",
"key": "interface_name",
"operator": "=",
"value": "$interface_name",
},
],
},
{
"alias": "Egress Errors",
"groupBy": [
{"params": ["5m"], "type": "time"},
{"params": ["linear"], "type": "fill"},
],
"measurement": "interface_rates",
"orderByTime": "ASC",
"policy": "default",
"refId": "B",
"resultFormat": "time_series",
"select": [
[
{"params": ["errorsOut"], "type": "field"},
{"params": [], "type": "mean"},
]
],
"tags": [
{
"key": "hostname",
"operator": "=~",
"value": "/^$hostname$/",
},
{
"condition": "AND",
"key": "interface_name",
"operator": "=",
"value": "$interface_name",
},
],
},
{
"alias": "Ingress Discards",
"groupBy": [
{"params": ["5m"], "type": "time"},
{"params": ["linear"], "type": "fill"},
],
"measurement": "interface_rates",
"orderByTime": "ASC",
"policy": "default",
"refId": "C",
"resultFormat": "time_series",
"select": [
[
{"params": ["discardsIn"], "type": "field"},
{"params": [], "type": "mean"},
]
],
"tags": [
{
"condition": None,
"key": "hostname",
"operator": "=~",
"value": "/^$hostname$/",
},
{
"condition": "AND",
"key": "interface_name",
"operator": "=",
"value": "$interface_name",
},
],
},
{
"alias": "Egress Discards",
"groupBy": [
{"params": ["5m"], "type": "time"},
{"params": ["linear"], "type": "fill"},
],
"hide": False,
"measurement": "interface_rates",
"orderByTime": "ASC",
"policy": "default",
"refId": "D",
"resultFormat": "time_series",
"select": [
[
{"params": ["discardsOut"], "type": "field"},
{"params": [], "type": "mean"},
]
],
"tags": [
{
"condition": None,
"key": "hostname",
"operator": "=~",
"value": "/^$hostname$/",
},
{
"condition": "AND",
"key": "interface_name",
"operator": "=",
"value": "$interface_name",
},
],
},
],
"thresholds": [],
"timeFrom": None,
"timeRegions": [],
"timeShift": None,
"title": "$hostname - $interface_name - errors",
"tooltip": {"shared": True, "sort": 0, "value_type": "individual"},
"type": "graph",
"xaxis": {
"buckets": None,
"mode": "time",
"name": None,
"show": True,
"values": [],
},
"yaxes": [
{
"$$hashKey": "object:45",
"format": "none",
"label": "errors and discards per second",
"logBase": 1,
"max": None,
"min": "0",
"show": True,
},
{
"$$hashKey": "object:46",
"format": "none",
"label": "errors and discards per second",
"logBase": 1,
"max": None,
"min": "0",
"show": True,
},
],
"yaxis": {"align": False, "alignLevel": None},
},
]
return [
{
"aliasColors": {},
"bars": False,
"dashLength": 10,
"dashes": False,
"datasource": None,
"fieldConfig": {"defaults": {"custom": {}}, "overrides": []},
"fill": 1,
"fillGradient": 0,
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 0},
"hiddenSeries": False,
"id": 6,
"legend": {
"avg": False,
"current": False,
"max": False,
"min": False,
"show": True,
"total": False,
"values": False,
},
"lines": True,
"linewidth": 1,
"nullPointMode": "null",
"options": {"alertThreshold": True},
"percentage": False,
"pluginVersion": "7.2.1",
"pointradius": 2,
"points": False,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": True,
"steppedLine": False,
"targets": [
{
"alias": "Private",
"groupBy": [
{"params": ["15m"], "type": "time"},
{"params": ["linear"], "type": "fill"},
],
"measurement": "interface_rates",
"orderByTime": "ASC",
"policy": "default",
"refId": "B",
"resultFormat": "time_series",
"select": [
[
{"params": ["ingress"], "type": "field"},
{"params": [], "type": "mean"},
{"params": ["*8"], "type": "math"},
]
],
"tags": [
{
"key": "interface_name",
"operator": "=",
"value": "PHY_PRIVATE",
}
],
},
{
"alias": "R&E Interconnect",
"groupBy": [
{"params": ["15m"], "type": "time"},
{"params": ["null"], "type": "fill"},
],
"measurement": "interface_rates",
"orderByTime": "ASC",
"policy": "default",
"refId": "C",
"resultFormat": "time_series",
"select": [
[
{"params": ["ingress"], "type": "field"},
{"params": [], "type": "mean"},
{"params": ["* 8"], "type": "math"},
]
],
"tags": [
{
"key": "interface_name",
"operator": "=",
"value": "PHY_RE_INTERCONNECT",
}
],
},
{
"alias": "Public",
"groupBy": [
{"params": ["15m"], "type": "time"},
{"params": ["null"], "type": "fill"},
],
"measurement": "interface_rates",
"orderByTime": "ASC",
"policy": "default",
"refId": "D",
"resultFormat": "time_series",
"select": [
[
{"params": ["ingress"], "type": "field"},
{"params": [], "type": "mean"},
{"params": ["* 8"], "type": "math"},
]
],
"tags": [
{
"key": "interface_name",
"operator": "=",
"value": "PHY_PUBLIC",
}
],
},
{
"alias": "Upstream",
"groupBy": [
{"params": ["15m"], "type": "time"},
{"params": ["null"], "type": "fill"},
],
"measurement": "interface_rates",
"orderByTime": "ASC",
"policy": "default",
"refId": "E",
"resultFormat": "time_series",
"select": [
[
{"params": ["ingress"], "type": "field"},
{"params": [], "type": "mean"},
{"params": ["* 8"], "type": "math"},
]
],
"tags": [
{
"key": "interface_name",
"operator": "=",
"value": "PHY_UPSTREAM",
}
],
},
{
"alias": "Customer",
"groupBy": [
{"params": ["15m"], "type": "time"},
{"params": ["linear"], "type": "fill"},
],
"measurement": "interface_rates",
"orderByTime": "ASC",
"policy": "default",
"query": (
'SELECT mean("ingress") *8 FROM "interface_rates" WHERE ("interface_name" ='
" 'PHY_CUSTOMER') AND $timeFilter GROUP BY time($__interval) fill(linear)"
),
"rawQuery": False,
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{"params": ["ingress"], "type": "field"},
{"params": [], "type": "mean"},
{"params": ["*8"], "type": "math"},
]
],
"tags": [
{
"key": "interface_name",
"operator": "=",
"value": "PHY_CUSTOMER",
}
],
},
],
"thresholds": [],
"timeFrom": None,
"timeRegions": [],
"timeShift": None,
"title": "Network Aggregate (Ingress)",
"tooltip": {"shared": True, "sort": 0, "value_type": "individual"},
"type": "graph",
"xaxis": {
"buckets": None,
"mode": "time",
"name": None,
"show": True,
"values": [],
},
"yaxes": [
{
"format": "bps",
"label": None,
"logBase": 1,
"max": None,
"min": None,
"show": True,
},
{
"format": "short",
"label": None,
"logBase": 1,
"max": None,
"min": None,
"show": True,
},
],
"yaxis": {"align": False, "alignLevel": None},
},
{
"aliasColors": {},
"bars": False,
"dashLength": 10,
"dashes": False,
"datasource": None,
"fieldConfig": {"defaults": {"custom": {}}, "overrides": []},
"fill": 1,
"fillGradient": 0,
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 0},
"hiddenSeries": False,
"id": 7,
"legend": {
"avg": False,
"current": False,
"max": False,
"min": False,
"show": True,
"total": False,
"values": False,
},
"lines": True,
"linewidth": 1,
"nullPointMode": "null",
"options": {"alertThreshold": True},
"percentage": False,
"pluginVersion": "7.2.1",
"pointradius": 2,
"points": False,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": True,
"steppedLine": False,
"targets": [
{
"alias": "Private",
"groupBy": [
{"params": ["15m"], "type": "time"},
{"params": ["linear"], "type": "fill"},
],
"measurement": "interface_rates",
"orderByTime": "ASC",
"policy": "default",
"refId": "B",
"resultFormat": "time_series",
"select": [
[
{"params": ["egress"], "type": "field"},
{"params": [], "type": "mean"},
{"params": ["*8"], "type": "math"},
]
],
"tags": [
{
"key": "interface_name",
"operator": "=",
"value": "PHY_PRIVATE",
}
],
},
{
"alias": "R&E Interconnect",
"groupBy": [
{"params": ["15m"], "type": "time"},
{"params": ["null"], "type": "fill"},
],
"measurement": "interface_rates",
"orderByTime": "ASC",
"policy": "default",
"refId": "C",
"resultFormat": "time_series",
"select": [
[
{"params": ["egress"], "type": "field"},
{"params": [], "type": "mean"},
{"params": ["* 8"], "type": "math"},
]
],
"tags": [
{
"key": "interface_name",
"operator": "=",
"value": "PHY_RE_INTERCONNECT",
}
],
},
{
"alias": "Public",
"groupBy": [
{"params": ["15m"], "type": "time"},
{"params": ["null"], "type": "fill"},
],
"measurement": "interface_rates",
"orderByTime": "ASC",
"policy": "default",
"refId": "D",
"resultFormat": "time_series",
"select": [
[
{"params": ["egress"], "type": "field"},
{"params": [], "type": "mean"},
{"params": ["* 8"], "type": "math"},
]
],
"tags": [
{
"key": "interface_name",
"operator": "=",
"value": "PHY_PUBLIC",
}
],
},
{
"alias": "Upstream",
"groupBy": [
{"params": ["15m"], "type": "time"},
{"params": ["null"], "type": "fill"},
],
"measurement": "interface_rates",
"orderByTime": "ASC",
"policy": "default",
"refId": "E",
"resultFormat": "time_series",
"select": [
[
{"params": ["egress"], "type": "field"},
{"params": [], "type": "mean"},
{"params": ["* 8"], "type": "math"},
]
],
"tags": [
{
"key": "interface_name",
"operator": "=",
"value": "PHY_UPSTREAM",
}
],
},
{
"alias": "Customer",
"groupBy": [
{"params": ["15m"], "type": "time"},
{"params": ["linear"], "type": "fill"},
],
"measurement": "interface_rates",
"orderByTime": "ASC",
"policy": "default",
"query": (
'SELECT mean("ingress") *8 FROM "interface_rates" WHERE ("interface_name" ='
" 'PHY_CUSTOMER') AND $timeFilter GROUP BY time($__interval) fill(linear)"
),
"rawQuery": False,
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{"params": ["egress"], "type": "field"},
{"params": [], "type": "mean"},
{"params": ["*8"], "type": "math"},
]
],
"tags": [
{
"key": "interface_name",
"operator": "=",
"value": "PHY_CUSTOMER",
}
],
},
],
"thresholds": [],
"timeFrom": None,
"timeRegions": [],
"timeShift": None,
"title": "Network Aggregate (Egress)",
"tooltip": {"shared": True, "sort": 0, "value_type": "individual"},
"type": "graph",
"xaxis": {
"buckets": None,
"mode": "time",
"name": None,
"show": True,
"values": [],
},
"yaxes": [
{
"format": "bps",
"label": None,
"logBase": 1,
"max": None,
"min": None,
"show": True,
},
{
"format": "short",
"label": None,
"logBase": 1,
"max": None,
"min": None,
"show": True,
},
],
"yaxis": {"align": False, "alignLevel": None},
},
]