diff --git a/bundles/grafana/dashboard-rows/cpu.py b/bundles/grafana/dashboard-rows/cpu.py index c0609c7..e370d5e 100644 --- a/bundles/grafana/dashboard-rows/cpu.py +++ b/bundles/grafana/dashboard-rows/cpu.py @@ -24,6 +24,11 @@ def dashboard_row_cpu(panel_id, node): r["_field"] == "usage_{measurement}" and r["host"] == "{node.name}" ) + |> map(fn: (r) => ({{ + r with + _field: "{measurement}" + }}) + ) |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) |> yield(name: "{measurement}")""", 'resultFormat': 'time_series', diff --git a/bundles/grafana/dashboard-rows/ip_traffic.py b/bundles/grafana/dashboard-rows/ip_traffic.py new file mode 100644 index 0000000..3da8f2d --- /dev/null +++ b/bundles/grafana/dashboard-rows/ip_traffic.py @@ -0,0 +1,583 @@ +def dashboard_row_ip_traffic(panel_id, node): + return { + 'title': 'ip traffic', + 'collapse': False, + 'editable': False, + 'height': '250px', + 'panels': [ + { + 'aliasColors': {}, + 'bars': False, + 'dashLength': 10, + 'dashes': False, + 'datasource': None, + 'fieldConfig': { + 'defaults': { + 'displayName': '${__field.name} ${__field.labels.interface}' + }, + '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"] == "net" and + r["_field"] == "bytes_recv" and + r["host"] == "{node.name}" + ) + |> map(fn: (r) => ({{ + r with + _field: "in" + }}) + ) + |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) + |> derivative(unit: 1s) + |> 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"] == "net" and + r["_field"] == "bytes_sent" and + r["host"] == "{node.name}" + ) + |> map(fn: (r) => ({{ + r with + _value: r._value * -1, + _field: "out" + }}) + ) + |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) + |> derivative(unit: 1s) + |> yield(name: "out")""", + 'resultFormat': 'time_series', + 'select': [[ + {'type': 'field', 'params': ['value']}, + {'type': 'mean', 'params': []}, + ]], + "tags": [] + }, + ], + 'thresholds': [], + 'timeRegions': [], + 'title': 'bytes per interface', + '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, + }, + { + '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.interface}' + }, + '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"] == "net" and + r["_field"] == "packets_recv" and + r["host"] == "{node.name}" + ) + |> map(fn: (r) => ({{ + r with + _field: "in" + }}) + ) + |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) + |> derivative(unit: 1s) + |> 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"] == "net" and + r["_field"] == "packets_sent" and + r["host"] == "{node.name}" + ) + |> map(fn: (r) => ({{ + r with + _value: r._value * -1, + _field: "out" + }}) + ) + |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) + |> derivative(unit: 1s) + |> yield(name: "out")""", + 'resultFormat': 'time_series', + 'select': [[ + {'type': 'field', 'params': ['value']}, + {'type': 'mean', 'params': []}, + ]], + "tags": [] + }, + ], + 'thresholds': [], + 'timeRegions': [], + 'title': 'packets per interface', + 'tooltip': { + 'shared': True, + 'sort': 0, + 'value_type': 'individual' + }, + 'type': 'graph', + 'xaxis': { + 'buckets': None, + 'mode': 'time', + 'name': None, + 'show': True, + 'values': [] + }, + 'yaxes': [ + { + 'format': 'short', + '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 + } + }, + { + 'aliasColors': {}, + 'bars': False, + 'dashLength': 10, + 'dashes': False, + 'datasource': None, + 'fieldConfig': { + 'defaults': { + 'displayName': '${__field.name}' + }, + '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"] == "nstat" and + r["_field"] == "IpExtInOctets" and + r["host"] == "{node.name}" + ) + |> map(fn: (r) => ({{ + r with + _field: "in" + }}) + ) + |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) + |> derivative(unit: 1s) + |> 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"] == "nstat" and + r["_field"] == "IpExtOutOctets" and + r["host"] == "{node.name}" + ) + |> map(fn: (r) => ({{ + r with + _value: r._value * -1, + _field: "out" + }}) + ) + |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) + |> derivative(unit: 1s) + |> yield(name: "out")""", + 'resultFormat': 'time_series', + 'select': [[ + {'type': 'field', 'params': ['value']}, + {'type': 'mean', 'params': []}, + ]], + "tags": [] + }, + ], + 'thresholds': [], + 'timeRegions': [], + 'title': 'IPv4', + '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, + }, + { + '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}' + }, + '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"] == "nstat" and + r["_field"] == "Ip6InOctets" and + r["host"] == "{node.name}" + ) + |> map(fn: (r) => ({{ + r with + _field: "in" + }}) + ) + |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) + |> derivative(unit: 1s) + |> 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"] == "nstat" and + r["_field"] == "Ip6OutOctets" and + r["host"] == "{node.name}" + ) + |> map(fn: (r) => ({{ + r with + _value: r._value * -1, + _field: "out" + }}) + ) + |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) + |> derivative(unit: 1s) + |> yield(name: "out")""", + 'resultFormat': 'time_series', + 'select': [[ + {'type': 'field', 'params': ['value']}, + {'type': 'mean', 'params': []}, + ]], + "tags": [] + }, + ], + 'thresholds': [], + 'timeRegions': [], + 'title': 'IPv6', + '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 + } + }, + ], + } diff --git a/bundles/grafana/dashboard-rows/postgresql.py b/bundles/grafana/dashboard-rows/postgresql.py index 99045ec..51ca14b 100644 --- a/bundles/grafana/dashboard-rows/postgresql.py +++ b/bundles/grafana/dashboard-rows/postgresql.py @@ -23,6 +23,11 @@ def dashboard_row_postgresql(panel_id, node): r["_field"] == "xact_{measurement}" and r["host"] == "{node.name}" ) + |> map(fn: (r) => ({{ + r with + _field: "{measurement}" + }}) + ) |> derivative(unit: 1s) |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) |> yield(name: "{measurement}")""", @@ -55,6 +60,11 @@ def dashboard_row_postgresql(panel_id, node): r["_field"] == "tup_{measurement}" and r["host"] == "{node.name}" ) + |> map(fn: (r) => ({{ + r with + _field: "{measurement}" + }}) + ) |> derivative(unit: 1s) |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) |> yield(name: "{measurement}")""", @@ -113,6 +123,11 @@ def dashboard_row_postgresql(panel_id, node): r["_field"] == "blks_{measurement}" and r["host"] == "{node.name}" ) + |> map(fn: (r) => ({{ + r with + _field: "{measurement}" + }}) + ) |> derivative(unit: 1s) |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) |> yield(name: "{measurement}")""", @@ -124,13 +139,13 @@ def dashboard_row_postgresql(panel_id, node): "tags": [] }) - for measurement in [ - 'alloc', - 'backend', - 'backend_fsync', - 'checkpoint', - 'clean' - ]: + for measurement, alias in { + 'alloc': 'allocated', + 'backend': 'written by backend', + 'backend_fsync': 'fsync by backend', + 'checkpoint': 'written during checkpoints', + 'clean': 'written by background writer', + }.items(): queries_buffers.append({ 'groupBy': [ {'type': 'time', 'params': ['$__interval']}, @@ -145,6 +160,11 @@ def dashboard_row_postgresql(panel_id, node): r["_field"] == "buffers_{measurement}" and r["host"] == "{node.name}" ) + |> map(fn: (r) => ({{ + r with + _field: "{alias}" + }}) + ) |> derivative(unit: 1s) |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) |> yield(name: "{measurement}")""", @@ -160,7 +180,7 @@ def dashboard_row_postgresql(panel_id, node): 'title': 'postgresql', 'collapse': False, 'editable': False, - 'height': '250px', + 'height': '200px', 'panels': [ { 'aliasColors': {}, diff --git a/bundles/grafana/dashboard-rows/traffic_by_ip_version.py b/bundles/grafana/dashboard-rows/traffic_by_ip_version.py deleted file mode 100644 index fa8bdbc..0000000 --- a/bundles/grafana/dashboard-rows/traffic_by_ip_version.py +++ /dev/null @@ -1,284 +0,0 @@ -def dashboard_row_ip_traffic(panel_id, node): - return { - 'title': 'ip traffic', - 'collapse': False, - 'editable': False, - 'height': '250px', - 'panels': [ - { - 'aliasColors': {}, - 'bars': False, - 'dashLength': 10, - 'dashes': False, - 'datasource': None, - 'fieldConfig': { - 'defaults': { - 'displayName': '${__field.name}' - }, - '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': True, - '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"] == "nstat" and - r["_field"] == "IpExtInOctets" and - r["host"] == "{node.name}" - ) - |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) - |> derivative(unit: 1s) - |> 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"] == "nstat" and - r["_field"] == "IpExtOutOctets" and - r["host"] == "{node.name}" - ) - |> map(fn: (r) => ({{ - r with - _value: r._value * -1 - }}) - ) - |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) - |> derivative(unit: 1s) - |> yield(name: "out")""", - 'resultFormat': 'time_series', - 'select': [[ - {'type': 'field', 'params': ['value']}, - {'type': 'mean', 'params': []}, - ]], - "tags": [] - }, - ], - 'thresholds': [], - 'timeRegions': [], - 'title': 'IPv4', - '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, - }, - { - '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}' - }, - '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"] == "nstat" and - r["_field"] == "Ip6InOctets" and - r["host"] == "{node.name}" - ) - |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) - |> derivative(unit: 1s) - |> 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"] == "nstat" and - r["_field"] == "Ip6OutOctets" and - r["host"] == "{node.name}" - ) - |> map(fn: (r) => ({{ - r with - _value: r._value * -1 - }}) - ) - |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) - |> derivative(unit: 1s) - |> yield(name: "out")""", - 'resultFormat': 'time_series', - 'select': [[ - {'type': 'field', 'params': ['value']}, - {'type': 'mean', 'params': []}, - ]], - "tags": [] - }, - ], - 'thresholds': [], - 'timeRegions': [], - 'title': 'IPv6', - '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 - } - }, - ], - }