From d5291da70d810806672e414417013b7ddb65ebcc Mon Sep 17 00:00:00 2001 From: Madhur Shrimal Date: Fri, 3 May 2024 13:31:42 -0700 Subject: [PATCH] add graph for rank and stake share (#119) --- holesky/.env.example | 2 +- holesky/run.sh | 2 +- monitoring/dashboards/eigenda-metrics.json | 630 ++++++++++++++++----- 3 files changed, 480 insertions(+), 154 deletions(-) diff --git a/holesky/.env.example b/holesky/.env.example index fe6f58d..f9ead3f 100644 --- a/holesky/.env.example +++ b/holesky/.env.example @@ -1,4 +1,4 @@ -MAIN_SERVICE_IMAGE=ghcr.io/layr-labs/eigenda/opr-node:release-0.6.2 +MAIN_SERVICE_IMAGE=ghcr.io/layr-labs/eigenda/opr-node:0.7.0-rc.1 NETWORK_NAME=eigenda-network MAIN_SERVICE_NAME=eigenda-native-node diff --git a/holesky/run.sh b/holesky/run.sh index 4fd5eb0..7acda5a 100755 --- a/holesky/run.sh +++ b/holesky/run.sh @@ -5,7 +5,7 @@ socket="$NODE_HOSTNAME":"${NODE_DISPERSAL_PORT}"\;"${NODE_RETRIEVAL_PORT}" -node_plugin_image="ghcr.io/layr-labs/eigenda/opr-nodeplugin:release-0.6.2" +node_plugin_image="ghcr.io/layr-labs/eigenda/opr-nodeplugin:0.7.0-rc.1" # In all commands, We have to explicitly set the password again here because # when docker run loads the `.env` file, it keeps the quotes around the password diff --git a/monitoring/dashboards/eigenda-metrics.json b/monitoring/dashboards/eigenda-metrics.json index 9c821ce..1c62b32 100644 --- a/monitoring/dashboards/eigenda-metrics.json +++ b/monitoring/dashboards/eigenda-metrics.json @@ -18,7 +18,7 @@ "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 0, - "id": 4, + "id": 3, "links": [], "liveNow": false, "panels": [ @@ -27,13 +27,11 @@ "type": "prometheus", "uid": "prometheus" }, + "description": "1 being the highest.\n\n0 - you are not opted in that quorum", "fieldConfig": { "defaults": { - "color": { - "mode": "thresholds" - }, "mappings": [], - "noValue": "No batches found - Node is down or unreachable", + "noValue": "Either you are unregistered or something is wrong with setup", "thresholds": { "mode": "absolute", "steps": [ @@ -46,7 +44,8 @@ "value": 80 } ] - } + }, + "unit": "short" }, "overrides": [] }, @@ -56,10 +55,10 @@ "x": 0, "y": 0 }, - "id": 11, + "id": 15, "options": { - "colorMode": "value", - "graphMode": "area", + "colorMode": "background", + "graphMode": "none", "justifyMode": "auto", "orientation": "auto", "reduceOptions": { @@ -69,11 +68,9 @@ "fields": "", "values": false }, - "showPercentChange": false, - "textMode": "auto", - "wideLayout": true + "textMode": "auto" }, - "pluginVersion": "10.4.2", + "pluginVersion": "10.2.0", "targets": [ { "datasource": { @@ -82,18 +79,256 @@ }, "disableTextWrap": false, "editorMode": "builder", - "expr": "sum by(status) (node_eigenda_processed_batches_total{type=\"number\"})", + "exemplar": false, + "expr": "node_registered_quorums_rank", + "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "quorum {{quorum}}", + "range": true, + "refId": "A", + "useBackend": false + } + ], + "title": "Rank in Quorums", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "description": "Divide by 100 to get %age stake.\n\n0 for a quorum means you are opted out of that quorum", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": 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 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 0 + }, + "id": 16, + "options": { + "legend": { + "calcs": [], + "displayMode": "hidden", + "placement": "right", + "showLegend": false + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "10.2.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "disableTextWrap": false, + "editorMode": "builder", + "exemplar": false, + "expr": "node_registered_quorums_stake_share", "fullMetaSearch": false, + "includeNullMetadata": true, + "instant": false, + "interval": "", + "legendFormat": "quorum {{quorum}}", + "range": true, + "refId": "A", + "useBackend": false + } + ], + "title": "Stake Share in Quorums (In Basis Points)", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "description": "Number of signed / Number of received batches\nThis metrics doesn't account for batches you did not receive due to any connectivity issues", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "max": 100, + "min": 0, + "noValue": "Either your node is down or not reachable", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 8 + }, + "id": 17, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "10.2.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "disableTextWrap": false, + "editorMode": "code", + "expr": "increase(node_eigenda_processed_batches_total{type=\"number\", status=\"signed\"}[$__range])", + "fullMetaSearch": false, + "hide": true, "includeNullMetadata": false, "instant": false, "legendFormat": "__auto", "range": true, "refId": "A", "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "disableTextWrap": false, + "editorMode": "code", + "expr": "increase(node_eigenda_processed_batches_total{type=\"number\", status=\"received\"}[$__range])", + "fullMetaSearch": false, + "hide": true, + "includeNullMetadata": false, + "instant": false, + "legendFormat": "__auto", + "range": true, + "refId": "B", + "useBackend": false + }, + { + "datasource": { + "name": "Expression", + "type": "__expr__", + "uid": "__expr__" + }, + "expression": "$A * 100 / $B", + "hide": false, + "refId": "Signing Rate", + "type": "math" } ], - "title": "Batch by status", - "type": "stat" + "title": "Signing Rate", + "type": "timeseries" }, { "datasource": { @@ -136,7 +371,7 @@ "h": 8, "w": 6, "x": 12, - "y": 0 + "y": 8 }, "id": 12, "options": { @@ -154,7 +389,7 @@ "showThresholdMarkers": true, "sizing": "auto" }, - "pluginVersion": "10.4.2", + "pluginVersion": "10.2.0", "targets": [ { "datasource": { @@ -177,10 +412,83 @@ }, "disableTextWrap": false, "editorMode": "builder", - "expr": "node_eigenda_processed_batches_total{type=\"size\"}", + "expr": "node_eigenda_processed_batches_total{type=\"size\"}", + "fullMetaSearch": false, + "hide": true, + "includeNullMetadata": false, + "instant": false, + "legendFormat": "__auto", + "range": true, + "refId": "A", + "useBackend": false + } + ], + "title": "Average processed batch size", + "type": "gauge" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "description": "the total number of node's socket address updates", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 6, + "x": 18, + "y": 8 + }, + "id": 8, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "10.2.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "disableTextWrap": false, + "editorMode": "builder", + "expr": "node_eigenda_node_socket_updates_total", "fullMetaSearch": false, - "hide": true, - "includeNullMetadata": false, + "includeNullMetadata": true, "instant": false, "legendFormat": "__auto", "range": true, @@ -188,21 +496,21 @@ "useBackend": false } ], - "title": "Average processed batch size", - "type": "gauge" + "title": "Total Socket updates", + "type": "stat" }, { "datasource": { "type": "prometheus", "uid": "prometheus" }, - "description": "the total number of node's socket address updates", "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "mappings": [], + "noValue": "No batches found - Node is down or unreachable", "thresholds": { "mode": "absolute", "steps": [ @@ -221,11 +529,11 @@ }, "gridPos": { "h": 8, - "w": 6, - "x": 18, - "y": 0 + "w": 12, + "x": 0, + "y": 16 }, - "id": 8, + "id": 11, "options": { "colorMode": "value", "graphMode": "area", @@ -242,7 +550,7 @@ "textMode": "auto", "wideLayout": true }, - "pluginVersion": "10.4.2", + "pluginVersion": "10.2.0", "targets": [ { "datasource": { @@ -251,9 +559,9 @@ }, "disableTextWrap": false, "editorMode": "builder", - "expr": "node_eigenda_node_socket_updates_total", + "expr": "sum by(status) (node_eigenda_processed_batches_total{type=\"number\"})", "fullMetaSearch": false, - "includeNullMetadata": true, + "includeNullMetadata": false, "instant": false, "legendFormat": "__auto", "range": true, @@ -261,7 +569,7 @@ "useBackend": false } ], - "title": "Total Socket updates", + "title": "Batch by status", "type": "stat" }, { @@ -269,7 +577,7 @@ "type": "prometheus", "uid": "prometheus" }, - "description": "the total number of batches processed by the DA node", + "description": "the total size of batches processed by the DA node", "fieldConfig": { "defaults": { "color": { @@ -320,17 +628,18 @@ "value": 80 } ] - } + }, + "unit": "bytes" }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, - "x": 0, - "y": 8 + "x": 12, + "y": 16 }, - "id": 9, + "id": 5, "options": { "legend": { "calcs": [], @@ -343,7 +652,6 @@ "sort": "none" } }, - "pluginVersion": "10.2.0", "targets": [ { "datasource": { @@ -352,7 +660,7 @@ }, "disableTextWrap": false, "editorMode": "builder", - "expr": "node_eigenda_processed_batches_total{type=\"number\"}", + "expr": "node_eigenda_processed_batches_total{type=\"size\"}", "fullMetaSearch": false, "includeNullMetadata": true, "instant": false, @@ -360,26 +668,9 @@ "range": true, "refId": "A", "useBackend": false - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "disableTextWrap": false, - "editorMode": "builder", - "expr": "node_eigenda_processed_batches_total{type=\"number\", status=\"signed\"}", - "fullMetaSearch": false, - "hide": true, - "includeNullMetadata": true, - "instant": false, - "legendFormat": "{{status}}", - "range": true, - "refId": "B", - "useBackend": false } ], - "title": "EigenDA number of processed batches", + "title": "EigenDA size of processed batches", "type": "timeseries" }, { @@ -387,7 +678,7 @@ "type": "prometheus", "uid": "prometheus" }, - "description": "the total size of batches processed by the DA node", + "description": "the total number of batches processed by the DA node", "fieldConfig": { "defaults": { "color": { @@ -430,26 +721,24 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", "value": 80 } ] - }, - "unit": "bytes" + } }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, - "x": 12, - "y": 8 + "x": 0, + "y": 24 }, - "id": 5, + "id": 9, "options": { "legend": { "calcs": [], @@ -462,6 +751,7 @@ "sort": "none" } }, + "pluginVersion": "10.2.0", "targets": [ { "datasource": { @@ -470,7 +760,7 @@ }, "disableTextWrap": false, "editorMode": "builder", - "expr": "node_eigenda_processed_batches_total{type=\"size\"}", + "expr": "node_eigenda_processed_batches_total{type=\"number\"}", "fullMetaSearch": false, "includeNullMetadata": true, "instant": false, @@ -478,9 +768,26 @@ "range": true, "refId": "A", "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "disableTextWrap": false, + "editorMode": "builder", + "expr": "node_eigenda_processed_batches_total{type=\"number\", status=\"signed\"}", + "fullMetaSearch": false, + "hide": true, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "{{status}}", + "range": true, + "refId": "B", + "useBackend": false } ], - "title": "EigenDA size of processed batches", + "title": "EigenDA number of processed batches", "type": "timeseries" }, { @@ -530,25 +837,25 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", "value": 80 } ] - } + }, + "unit": "bytes" }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, - "x": 0, - "y": 16 + "x": 12, + "y": 24 }, - "id": 13, + "id": 14, "options": { "legend": { "calcs": [], @@ -569,7 +876,7 @@ }, "disableTextWrap": false, "editorMode": "builder", - "expr": "node_eigenda_blobs_total{type=\"number\"}", + "expr": "node_eigenda_blobs_total{type=\"size\"}", "fullMetaSearch": false, "includeNullMetadata": true, "instant": false, @@ -579,7 +886,7 @@ "useBackend": false } ], - "title": "Number of EigenDA Blobs", + "title": "Size of EigenDA Blobs", "type": "timeseries" }, { @@ -629,26 +936,24 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", "value": 80 } ] - }, - "unit": "bytes" + } }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, - "x": 12, - "y": 16 + "x": 0, + "y": 32 }, - "id": 14, + "id": 13, "options": { "legend": { "calcs": [], @@ -669,7 +974,7 @@ }, "disableTextWrap": false, "editorMode": "builder", - "expr": "node_eigenda_blobs_total{type=\"size\"}", + "expr": "node_eigenda_blobs_total{type=\"number\"}", "fullMetaSearch": false, "includeNullMetadata": true, "instant": false, @@ -679,7 +984,7 @@ "useBackend": false } ], - "title": "Size of EigenDA Blobs", + "title": "Number of EigenDA Blobs", "type": "timeseries" }, { @@ -696,8 +1001,8 @@ "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "left", + "axisLabel": "latency (ms)", + "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 0, @@ -729,8 +1034,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -738,17 +1042,42 @@ } ] }, - "unit": "reqps" + "unit": "ms" }, - "overrides": [] + "overrides": [ + { + "__systemRef": "hideSeriesFrom", + "matcher": { + "id": "byNames", + "options": { + "mode": "exclude", + "names": [ + "p99 total" + ], + "prefix": "All except:", + "readOnly": true + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": false, + "tooltip": false, + "viz": true + } + } + ] + } + ] }, "gridPos": { "h": 8, "w": 12, - "x": 0, - "y": 24 + "x": 12, + "y": 32 }, - "id": 4, + "id": 3, "options": { "legend": { "calcs": [], @@ -756,6 +1085,9 @@ "placement": "bottom", "showLegend": true }, + "timezone": [ + "browser" + ], "tooltip": { "mode": "single", "sort": "none" @@ -769,17 +1101,34 @@ }, "disableTextWrap": false, "editorMode": "builder", - "expr": "rate(node_eigenda_rpc_requests_total{method=\"StoreChunks\"}[$__range])", + "expr": "node_request_latency_ms{quantile=\"0.99\", method=\"StoreChunks\"}", "fullMetaSearch": false, - "includeNullMetadata": false, + "includeNullMetadata": true, "instant": false, - "legendFormat": "{{method}}", + "legendFormat": "p99 {{stage}}", "range": true, "refId": "A", "useBackend": false + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "disableTextWrap": false, + "editorMode": "builder", + "expr": "node_request_latency_ms{quantile=\"0.95\", method=\"StoreChunks\"}", + "fullMetaSearch": false, + "hide": false, + "includeNullMetadata": true, + "instant": false, + "legendFormat": "p95 {{stage}}", + "range": true, + "refId": "B", + "useBackend": false } ], - "title": "EigenDA StoreChunks RPC rate", + "title": "Request Latency StoreChunks (ms)", "type": "timeseries" }, { @@ -796,8 +1145,8 @@ "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", - "axisLabel": "latency (ms)", - "axisPlacement": "auto", + "axisLabel": "", + "axisPlacement": "left", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 0, @@ -829,8 +1178,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -838,17 +1186,17 @@ } ] }, - "unit": "ms" + "unit": "reqps" }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, - "x": 12, - "y": 24 + "x": 0, + "y": 40 }, - "id": 3, + "id": 4, "options": { "legend": { "calcs": [], @@ -856,9 +1204,6 @@ "placement": "bottom", "showLegend": true }, - "timezone": [ - "browser" - ], "tooltip": { "mode": "single", "sort": "none" @@ -872,34 +1217,17 @@ }, "disableTextWrap": false, "editorMode": "builder", - "expr": "node_request_latency_ms{quantile=\"0.99\", method=\"StoreChunks\"}", + "expr": "rate(node_eigenda_rpc_requests_total{method=\"StoreChunks\"}[$__range])", "fullMetaSearch": false, - "includeNullMetadata": true, + "includeNullMetadata": false, "instant": false, - "legendFormat": "p99 {{stage}}", + "legendFormat": "{{method}}", "range": true, "refId": "A", "useBackend": false - }, - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "disableTextWrap": false, - "editorMode": "builder", - "expr": "node_request_latency_ms{quantile=\"0.95\", method=\"StoreChunks\"}", - "fullMetaSearch": false, - "hide": false, - "includeNullMetadata": true, - "instant": false, - "legendFormat": "p95 {{stage}}", - "range": true, - "refId": "B", - "useBackend": false } ], - "title": "Request Latency StoreChunks (ms)", + "title": "EigenDA StoreChunks RPC rate", "type": "timeseries" }, { @@ -907,7 +1235,7 @@ "type": "prometheus", "uid": "prometheus" }, - "description": "the total number of batches that have been removed by the DA node", + "description": "the total size of batches that have been removed by the DA node", "fieldConfig": { "defaults": { "color": { @@ -950,25 +1278,25 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", "value": 80 } ] - } + }, + "unit": "deckbytes" }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, - "x": 0, - "y": 32 + "x": 12, + "y": 40 }, - "id": 1, + "id": 10, "options": { "legend": { "calcs": [], @@ -989,7 +1317,7 @@ }, "disableTextWrap": false, "editorMode": "builder", - "expr": "node_eigenda_removed_batches_total{type=\"number\", status=\"removed\"}", + "expr": "node_eigenda_processed_batches_total{type=\"size\", status=\"removed\"} / 1024", "fullMetaSearch": false, "includeNullMetadata": true, "instant": false, @@ -999,7 +1327,7 @@ "useBackend": false } ], - "title": "EigenDA number of removed batches", + "title": "EigenDA size of removed batches", "type": "timeseries" }, { @@ -1007,7 +1335,7 @@ "type": "prometheus", "uid": "prometheus" }, - "description": "the total size of batches that have been removed by the DA node", + "description": "the total number of batches that have been removed by the DA node", "fieldConfig": { "defaults": { "color": { @@ -1050,26 +1378,24 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", "value": 80 } ] - }, - "unit": "deckbytes" + } }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, - "x": 12, - "y": 32 + "x": 0, + "y": 48 }, - "id": 10, + "id": 1, "options": { "legend": { "calcs": [], @@ -1090,7 +1416,7 @@ }, "disableTextWrap": false, "editorMode": "builder", - "expr": "node_eigenda_processed_batches_total{type=\"size\", status=\"removed\"} / 1024", + "expr": "node_eigenda_removed_batches_total{type=\"number\", status=\"removed\"}", "fullMetaSearch": false, "includeNullMetadata": true, "instant": false, @@ -1100,24 +1426,24 @@ "useBackend": false } ], - "title": "EigenDA size of removed batches", + "title": "EigenDA number of removed batches", "type": "timeseries" } ], "refresh": "", - "schemaVersion": 39, + "schemaVersion": 38, "tags": [], "templating": { "list": [] }, "time": { - "from": "now-3h", + "from": "now-30m", "to": "now" }, "timepicker": {}, "timezone": "", "title": "EigenDA", "uid": "dcd9d495-ff1e-4794-b2b6-62634e4b40d1", - "version": 9, + "version": 29, "weekStart": "" -} +} \ No newline at end of file