From 3d77bfee9a8e32d363818e8155280c863a2683e0 Mon Sep 17 00:00:00 2001 From: Lion - dapplion <35266934+dapplion@users.noreply.github.com> Date: Wed, 31 May 2023 18:51:14 +0300 Subject: [PATCH] chore: update dashboards to support network worker (#5593) update dashboards to support network worker --- dashboards/lodestar_libp2p.json | 8 +- dashboards/lodestar_networking.json | 200 ++++++++- dashboards/lodestar_validator_client.json | 6 +- dashboards/lodestar_vm_host.json | 511 ++++++++++++++++------ 4 files changed, 584 insertions(+), 141 deletions(-) diff --git a/dashboards/lodestar_libp2p.json b/dashboards/lodestar_libp2p.json index a9adcd5b71d8..bd3480e698b0 100644 --- a/dashboards/lodestar_libp2p.json +++ b/dashboards/lodestar_libp2p.json @@ -1,12 +1,12 @@ { "__inputs": [ { - "name": "DS_PROMETHEUS", - "label": "Prometheus", "description": "", - "type": "datasource", + "label": "Prometheus", + "name": "DS_PROMETHEUS", "pluginId": "prometheus", - "pluginName": "Prometheus" + "pluginName": "Prometheus", + "type": "datasource" } ], "annotations": { diff --git a/dashboards/lodestar_networking.json b/dashboards/lodestar_networking.json index a8e970fa6691..461e651f8f5f 100644 --- a/dashboards/lodestar_networking.json +++ b/dashboards/lodestar_networking.json @@ -5435,7 +5435,7 @@ } ] }, - "unit": "s" + "unit": "none" }, "overrides": [] }, @@ -5445,6 +5445,198 @@ "x": 0, "y": 195 }, + "id": 605, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "exemplar": false, + "expr": "60 * (\n rate(beacon_reqresp_incoming_request_handler_time_seconds_count [$rate_interval])\n - on(method)\n rate(beacon_reqresp_incoming_request_handler_time_seconds_bucket{le=\"5\"} [$rate_interval])\n)", + "interval": "", + "legendFormat": "{{method}}", + "range": true, + "refId": "A" + } + ], + "title": "Incoming request handler time > 5 sec (req / min)", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "graph": false, + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 195 + }, + "id": 606, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "exemplar": false, + "expr": "60 * (\n rate(beacon_reqresp_outgoing_request_roundtrip_time_seconds_count [$rate_interval])\n - on(method)\n rate(beacon_reqresp_outgoing_request_roundtrip_time_seconds_bucket{le=\"5\"} [$rate_interval])\n)", + "interval": "", + "legendFormat": "{{method}}", + "range": true, + "refId": "A" + } + ], + "title": "Outgoing request roundtrip time > 5 sec (req / min)", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "graph": false, + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 203 + }, "id": 498, "options": { "legend": { @@ -5537,7 +5729,7 @@ "h": 8, "w": 12, "x": 12, - "y": 195 + "y": 203 }, "id": 500, "options": { @@ -5631,7 +5823,7 @@ "h": 8, "w": 12, "x": 0, - "y": 203 + "y": 211 }, "id": 184, "options": { @@ -5725,7 +5917,7 @@ "h": 8, "w": 12, "x": 12, - "y": 203 + "y": 211 }, "id": 501, "options": { diff --git a/dashboards/lodestar_validator_client.json b/dashboards/lodestar_validator_client.json index 8136a5793860..2ffbd923d59c 100644 --- a/dashboards/lodestar_validator_client.json +++ b/dashboards/lodestar_validator_client.json @@ -9,11 +9,11 @@ "type": "datasource" }, { + "description": "", + "label": "Validator client job name", "name": "VAR_VALIDATOR_JOB", "type": "constant", - "label": "Validator client job name", - "value": "validator", - "description": "" + "value": "validator" } ], "annotations": { diff --git a/dashboards/lodestar_vm_host.json b/dashboards/lodestar_vm_host.json index 0021a7216b56..a5a3a579535e 100644 --- a/dashboards/lodestar_vm_host.json +++ b/dashboards/lodestar_vm_host.json @@ -7,13 +7,6 @@ "pluginId": "prometheus", "pluginName": "Prometheus", "type": "datasource" - }, - { - "description": "", - "label": "Beacon node job name", - "name": "VAR_BEACON_JOB", - "type": "constant", - "value": "beacon" } ], "annotations": { @@ -172,9 +165,11 @@ "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, + "editorMode": "code", "expr": "nodejs_heap_space_size_used_bytes", "interval": "", "legendFormat": "{{space}}", + "range": true, "refId": "A" }, { @@ -188,6 +183,30 @@ "interval": "", "legendFormat": "external_memory", "refId": "B" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "network_worker_nodejs_heap_size_total_bytes", + "hide": false, + "legendFormat": "network_worker_heap_total", + "range": true, + "refId": "C" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "discv5_worker_nodejs_heap_size_total_bytes", + "hide": false, + "legendFormat": "discv5_worker_heap_total", + "range": true, + "refId": "D" } ], "title": "Heap Space Used + external_memory", @@ -245,24 +264,7 @@ }, "unit": "percentunit" }, - "overrides": [ - { - "matcher": { - "id": "byFrameRefID", - "options": "B" - }, - "properties": [ - { - "id": "custom.axisPlacement", - "value": "right" - }, - { - "id": "unit", - "value": "decbytes" - } - ] - } - ] + "overrides": [] }, "gridPos": { "h": 8, @@ -270,7 +272,7 @@ "x": 12, "y": 1 }, - "id": 58, + "id": 525, "options": { "legend": { "calcs": [], @@ -290,10 +292,12 @@ "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, + "editorMode": "code", "exemplar": false, - "expr": "rate(nodejs_gc_pause_seconds_total[$rate_interval])", + "expr": "rate(nodejs_gc_duration_seconds_sum[$rate_interval])", "interval": "", - "legendFormat": "{{gctype}}", + "legendFormat": "main_thread_{{kind}}", + "range": true, "refId": "A" }, { @@ -301,12 +305,24 @@ "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "exemplar": false, - "expr": "rate(nodejs_gc_reclaimed_bytes_total[$rate_interval])", + "editorMode": "code", + "expr": "rate(network_worker_nodejs_gc_duration_seconds_sum[$rate_interval])", "hide": false, - "interval": "", - "legendFormat": "{{gctype}}", + "legendFormat": "network_worker_{{kind}}", + "range": true, "refId": "B" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "rate(discv5_worker_nodejs_gc_duration_seconds_sum[$rate_interval])", + "hide": false, + "legendFormat": "discv5_worker_{{kind}}", + "range": true, + "refId": "C" } ], "title": "GC pause time rate + reclaimed bytes", @@ -329,8 +345,8 @@ "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", - "fillOpacity": 20, - "gradientMode": "opacity", + "fillOpacity": 10, + "gradientMode": "none", "hideFrom": { "graph": false, "legend": false, @@ -344,7 +360,7 @@ "type": "linear" }, "showPoints": "never", - "spanNulls": false, + "spanNulls": true, "stacking": { "group": "A", "mode": "none" @@ -367,7 +383,7 @@ } ] }, - "unit": "decbytes" + "unit": "short" }, "overrides": [] }, @@ -377,7 +393,7 @@ "x": 0, "y": 9 }, - "id": 44, + "id": 64, "options": { "graph": {}, "legend": { @@ -398,72 +414,13 @@ "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "editorMode": "code", - "exemplar": false, - "expr": "process_heap_bytes{job=~\"$beacon_job|beacon\"}", + "expr": "nodejs_active_requests", "interval": "", - "legendFormat": "process_heap_bytes", - "range": true, + "legendFormat": "{{type}}", "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "nodejs_heap_size_total_bytes{job=~\"$beacon_job|beacon\"}", - "hide": false, - "interval": "", - "legendFormat": "heap_total", - "range": true, - "refId": "B" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "nodejs_heap_size_used_bytes{job=~\"$beacon_job|beacon\"}", - "hide": false, - "interval": "", - "legendFormat": "heap_used", - "range": true, - "refId": "C" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "nodejs_external_memory_bytes{job=~\"$beacon_job|beacon\"}", - "hide": false, - "interval": "", - "legendFormat": "external_memory", - "range": true, - "refId": "D" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "process_resident_memory_bytes{job=~\"$beacon_job|beacon\"}", - "hide": false, - "interval": "", - "legendFormat": "rss", - "range": true, - "refId": "E" } ], - "title": "Memory Usage", + "title": "Active requests", "type": "timeseries" }, { @@ -543,7 +500,7 @@ "x": 12, "y": 9 }, - "id": 525, + "id": 58, "options": { "legend": { "calcs": [], @@ -564,10 +521,22 @@ "uid": "${DS_PROMETHEUS}" }, "exemplar": false, - "expr": "rate(nodejs_gc_duration_seconds_sum[$rate_interval])", + "expr": "rate(nodejs_gc_pause_seconds_total[$rate_interval])", "interval": "", - "legendFormat": "{{kind}}", + "legendFormat": "{{gctype}}", "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "exemplar": false, + "expr": "rate(nodejs_gc_reclaimed_bytes_total[$rate_interval])", + "hide": false, + "interval": "", + "legendFormat": "{{gctype}}", + "refId": "B" } ], "title": "GC pause time rate + reclaimed bytes", @@ -590,8 +559,8 @@ "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", - "fillOpacity": 10, - "gradientMode": "none", + "fillOpacity": 20, + "gradientMode": "opacity", "hideFrom": { "graph": false, "legend": false, @@ -605,7 +574,7 @@ "type": "linear" }, "showPoints": "never", - "spanNulls": true, + "spanNulls": false, "stacking": { "group": "A", "mode": "none" @@ -628,7 +597,7 @@ } ] }, - "unit": "short" + "unit": "decbytes" }, "overrides": [] }, @@ -638,7 +607,7 @@ "x": 0, "y": 17 }, - "id": 64, + "id": 44, "options": { "graph": {}, "legend": { @@ -659,13 +628,72 @@ "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "expr": "nodejs_active_requests", + "editorMode": "code", + "exemplar": false, + "expr": "process_heap_bytes{job=~\"$beacon_job|beacon\"}", "interval": "", - "legendFormat": "{{type}}", + "legendFormat": "process_heap_bytes", + "range": true, "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "exemplar": false, + "expr": "nodejs_heap_size_total_bytes{job=~\"$beacon_job|beacon\"}", + "hide": false, + "interval": "", + "legendFormat": "heap_total", + "range": true, + "refId": "B" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "exemplar": false, + "expr": "nodejs_heap_size_used_bytes{job=~\"$beacon_job|beacon\"}", + "hide": false, + "interval": "", + "legendFormat": "heap_used", + "range": true, + "refId": "C" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "exemplar": false, + "expr": "nodejs_external_memory_bytes{job=~\"$beacon_job|beacon\"}", + "hide": false, + "interval": "", + "legendFormat": "external_memory", + "range": true, + "refId": "D" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "exemplar": false, + "expr": "process_resident_memory_bytes{job=~\"$beacon_job|beacon\"}", + "hide": false, + "interval": "", + "legendFormat": "rss", + "range": true, + "refId": "E" } ], - "title": "Active requests", + "title": "Memory Usage", "type": "timeseries" }, { @@ -863,10 +891,36 @@ "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, + "editorMode": "code", "expr": "nodejs_active_handles", "interval": "", - "legendFormat": "{{type}}", + "legendFormat": "main_thread_{{type}}", + "range": true, "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "network_worker_nodejs_active_handles", + "hide": false, + "legendFormat": "network_worker_{{type}}", + "range": true, + "refId": "B" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "discv5_worker_nodejs_active_handles", + "hide": false, + "legendFormat": "discv5_worker_{{type}}", + "range": true, + "refId": "C" } ], "title": "Active Handles", @@ -901,7 +955,8 @@ "lineWidth": 1, "pointSize": 5, "scaleDistribution": { - "type": "linear" + "log": 2, + "type": "log" }, "showPoints": "never", "spanNulls": false, @@ -960,7 +1015,7 @@ "calcs": [], "displayMode": "list", "placement": "bottom", - "showLegend": false + "showLegend": true }, "tooltip": { "mode": "multi", @@ -974,13 +1029,39 @@ "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, + "editorMode": "code", "expr": "nodejs_eventloop_lag_seconds", "interval": "", - "legendFormat": "event loop lag", + "legendFormat": "main_thread", + "range": true, "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "network_worker_nodejs_eventloop_lag_seconds", + "hide": false, + "legendFormat": "network_worker", + "range": true, + "refId": "B" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "discv5_worker_nodejs_eventloop_lag_seconds", + "hide": false, + "legendFormat": "discv5_worker", + "range": true, + "refId": "C" } ], - "title": "Event Loop Lag", + "title": "Event Loop Lag - (metric A) eventloop_lag_seconds", "type": "timeseries" }, { @@ -1043,7 +1124,7 @@ "gridPos": { "h": 8, "w": 12, - "x": 12, + "x": 0, "y": 33 }, "id": 268, @@ -1075,6 +1156,144 @@ "title": "UnhandledPromiseRejection rate", "type": "timeseries" }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 30, + "gradientMode": "opacity", + "hideFrom": { + "graph": false, + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "log": 2, + "type": "log" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "event loop lag" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "dark-yellow", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 33 + }, + "id": 538, + "options": { + "graph": {}, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "7.4.5", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "nodejs_eventloop_lag_mean_seconds", + "interval": "", + "legendFormat": "main_thread", + "range": true, + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "network_worker_nodejs_eventloop_lag_mean_seconds", + "hide": false, + "legendFormat": "network_worker", + "range": true, + "refId": "B" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + }, + "editorMode": "code", + "expr": "discv5_worker_nodejs_eventloop_lag_mean_seconds", + "hide": false, + "legendFormat": "discv5_worker", + "range": true, + "refId": "C" + } + ], + "title": "Event Loop Lag - (metric B) eventloop_lag_mean_seconds", + "type": "timeseries" + }, { "collapsed": false, "datasource": { @@ -1683,6 +1902,8 @@ "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "bytes read (-) / write (+)", "axisPlacement": "auto", "barAlignment": 0, @@ -1715,7 +1936,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -1786,6 +2008,8 @@ "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, @@ -1820,7 +2044,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -2309,6 +2534,8 @@ "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, @@ -2341,7 +2568,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -2411,6 +2639,8 @@ "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "left", "barAlignment": 0, @@ -2443,7 +2673,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -2530,6 +2761,8 @@ "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, @@ -2562,7 +2795,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -3391,6 +3625,8 @@ "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, @@ -3423,7 +3659,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -3493,6 +3730,8 @@ "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, @@ -3525,7 +3764,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -3582,6 +3822,8 @@ "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, @@ -3614,7 +3856,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -3671,6 +3914,8 @@ "mode": "palette-classic" }, "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, @@ -3703,7 +3948,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -4015,7 +4261,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -4111,7 +4358,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -4205,7 +4453,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -4322,7 +4571,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -4440,7 +4690,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red",