def dashboard_row_wireguard(panel_id, node): return { 'title': 'wireguard', 'collapse': False, 'editable': False, 'height': '250px', 'panels': [ { 'aliasColors': {}, 'bars': False, 'dashLength': 10, 'dashes': False, 'datasource': None, 'fieldConfig': { 'defaults': { 'displayName': '${__field.labels.public_key}' }, 'overrides': [] }, 'fill': 1, 'fillGradient': 0, 'hiddenSeries': False, 'id': next(panel_id), 'legend': { 'alignAsTable': False, 'avg': False, 'current': False, 'max': False, 'min': False, 'rightSide': False, 'show': True, 'total': False, 'values': False }, 'lines': True, 'linewidth': 1, 'NonePointMode': 'None', 'options': { 'alertThreshold': True }, 'percentage': False, 'pluginVersion': '7.5.5', 'pointradius': 2, 'points': False, 'renderer': 'flot', 'seriesOverrides': [], 'spaceLength': 10, 'span': 6, 'stack': False, 'steppedLine': False, 'targets': [{ 'groupBy': [ {'type': 'time', 'params': ['$__interval']}, {'type': 'fill', 'params': ['linear']}, ], 'orderByTime': "ASC", 'policy': "default", 'query': f"""from(bucket: "telegraf") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "wireguard_peer" and r["_field"] == "last_handshake_time_ns" and r["host"] == "{node.name}" ) |> map(fn: (r) => ({{ r with _value: r._value / 1000000000 }}) ) |> derivative(unit: 1s, nonNegative: true) |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) |> yield(name: "last_handshake_time_ns")""", 'resultFormat': 'time_series', 'select': [[ {'type': 'field', 'params': ['value']}, {'type': 'mean', 'params': []}, ]], "tags": [] }], 'thresholds': [], 'timeRegions': [], 'title': 'wireguard last handshake time', 'tooltip': { 'shared': True, 'sort': 0, 'value_type': 'individual' }, 'type': 'graph', 'xaxis': { 'buckets': None, 'mode': 'time', 'name': None, 'show': True, 'values': [] }, 'yaxes': [ { 'format': 's', 'label': None, 'logBase': 1, 'max': None, 'min': None, 'show': True, }, { 'format': 'short', 'label': None, 'logBase': 1, 'max': None, 'min': None, 'show': False, } ], 'yaxis': { 'align': False, 'alignLevel': None } }, { 'aliasColors': {}, 'bars': False, 'dashLength': 10, 'dashes': False, 'datasource': None, 'fieldConfig': { 'defaults': { 'displayName': '${__field.name} ${__field.labels.public_key}' }, 'overrides': [] }, 'fill': 1, 'fillGradient': 0, 'hiddenSeries': False, 'id': next(panel_id), 'legend': { 'alignAsTable': False, 'avg': False, 'current': False, 'max': False, 'min': False, 'rightSide': False, 'show': True, 'total': False, 'values': False }, 'lines': True, 'linewidth': 1, 'NonePointMode': 'None', 'options': { 'alertThreshold': True }, 'percentage': False, 'pluginVersion': '7.5.5', 'pointradius': 2, 'points': False, 'renderer': 'flot', 'seriesOverrides': [], 'spaceLength': 10, 'span': 6, 'stack': False, 'steppedLine': False, 'targets': [ { 'groupBy': [ {'type': 'time', 'params': ['$__interval']}, {'type': 'fill', 'params': ['linear']}, ], 'orderByTime': "ASC", 'policy': "default", 'query': f"""from(bucket: "telegraf") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "wireguard_peer" and r["_field"] == "rx_bytes" and r["host"] == "{node.name}" ) |> derivative(unit: 1s) |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) |> yield(name: "in")""", 'resultFormat': 'time_series', 'select': [[ {'type': 'field', 'params': ['value']}, {'type': 'mean', 'params': []}, ]], "tags": [] }, { 'groupBy': [ {'type': 'time', 'params': ['$__interval']}, {'type': 'fill', 'params': ['linear']}, ], 'orderByTime': "ASC", 'policy': "default", 'query': f"""from(bucket: "telegraf") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "wireguard_peer" and r["_field"] == "tx_bytes" and r["host"] == "{node.name}" ) |> map(fn: (r) => ({{ r with _value: r._value * -1 }}) ) |> derivative(unit: 1s) |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) |> yield(name: "out")""", 'resultFormat': 'time_series', 'select': [[ {'type': 'field', 'params': ['value']}, {'type': 'mean', 'params': []}, ]], "tags": [] }, ], 'thresholds': [], 'timeRegions': [], 'title': 'wireguard traffic', 'tooltip': { 'shared': True, 'sort': 0, 'value_type': 'individual' }, 'type': 'graph', 'xaxis': { 'buckets': None, 'mode': 'time', 'name': None, 'show': True, 'values': [] }, 'yaxes': [ { 'format': 'binBps', 'label': None, 'logBase': 1, 'max': None, 'min': None, 'show': True, 'decimals': 0, }, { 'format': 'short', 'label': None, 'logBase': 1, 'max': None, 'min': None, 'show': False, } ], 'yaxis': { 'align': False, 'alignLevel': None } }, ], }