diff --git a/charts/eth-validator-watcher/Chart.yaml b/charts/eth-validator-watcher/Chart.yaml index 92554233..76c12ea2 100644 --- a/charts/eth-validator-watcher/Chart.yaml +++ b/charts/eth-validator-watcher/Chart.yaml @@ -1,10 +1,9 @@ apiVersion: v2 -description: A Helm chart for running eth-validator-watcher -name: eth-validator-watcher +name: ethereum-validator-watcher +description: A Helm chart to deploy ethereum-validator-watcher on Kubernetes type: application -version: 1.3.0 -appVersion: 0.7.1 +version: 2.0.0 +appVersion: mxs-0.0.8-beta1 maintainers: - - name: Alluvial - email: contact@alluvial.finance - url: https://alluvial.finance + - name: kiln + email: contact@kiln.fi diff --git a/charts/eth-validator-watcher/README.md b/charts/eth-validator-watcher/README.md index f213405f..6f0537b6 100644 --- a/charts/eth-validator-watcher/README.md +++ b/charts/eth-validator-watcher/README.md @@ -1,67 +1,60 @@ -# eth-validator-watcher +# ethereum-validator-watcher -![Version: 1.3.0](https://img.shields.io/badge/Version-1.3.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.7.1](https://img.shields.io/badge/AppVersion-0.7.1-informational?style=flat-square) +![Version: 6.0.1](https://img.shields.io/badge/Version-6.0.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: mxs-0.0.8-beta1](https://img.shields.io/badge/AppVersion-mxs--0.0.8--beta1-informational?style=flat-square) -A Helm chart for running eth-validator-watcher +A Helm chart to deploy ethereum-validator-watcher on Kubernetes ## Maintainers | Name | Email | Url | | ---- | ------ | --- | -| Alluvial | | | +| kiln | | | ## Values | Key | Type | Default | Description | |-----|------|---------|-------------| | affinity | object | `{}` | | -| config.beaconType | string | `"other"` | | -| config.beaconUrl | string | `"http://localhost:5052"` | | -| config.watchedKeys | list | `[]` | List of public keys to watch. See https://github.com/kilnfi/eth-validator-watcher/blob/main/README.md#command-lines-examples | -| env | object | `{}` | | -| envFrom | object | `{}` | | -| extraArgs | list | `[]` | | -| extraInitContainers | list | `[]` | | +| config.beacon_timeout_sec | int | `90` | | +| config.beacon_url | string | `"http://beacon-url:5051"` | | +| config.metrics_port | int | `8000` | | +| config.network | string | `"network-name"` | | +| config.watched_keys[0].labels[0] | string | `"operator:kiln"` | | +| config.watched_keys[0].labels[1] | string | `"vc:prysm-validator-1"` | | +| config.watched_keys[0].public_key[0] | string | `"989fa046d04b41fc95a04dabb7ab8b64e84afaa85c0aa49e1c6878d7b2814094402d62ae42dfbf3ac72e6770ee0926a8"` | | +| deploymentAnnotations | object | `{}` | | +| extraArgs | object | `{}` | | | fullnameOverride | string | `""` | | | image.pullPolicy | string | `"IfNotPresent"` | | | image.repository | string | `"ghcr.io/kilnfi/eth-validator-watcher"` | | -| image.tag | string | `""` | | -| imagePullSecrets | list | `[]` | | -| livenessProbe.failureThreshold | int | `1` | | -| livenessProbe.initialDelaySeconds | int | `60` | | +| image.tag | string | `"1.0.0-beta8"` | | +| livenessProbe.failureThreshold | int | `10` | | +| livenessProbe.httpGet.path | string | `"/"` | | +| livenessProbe.httpGet.port | int | `8000` | | +| livenessProbe.initialDelaySeconds | int | `600` | | | livenessProbe.periodSeconds | int | `60` | | -| livenessProbe.successThreshold | int | `1` | | -| livenessProbe.timeoutSeconds | int | `1` | | +| livenessProbe.timeoutSeconds | int | `60` | | | nameOverride | string | `""` | | | nodeSelector | object | `{}` | | | podAnnotations | object | `{}` | | | podLabels | object | `{}` | | | podMonitor.additionalLabels | object | `{}` | | -| podMonitor.enabled | bool | `false` | | +| podMonitor.enabled | bool | `true` | | | podMonitor.interval | string | `"12s"` | | | podMonitor.relabelings | list | `[]` | | | podMonitor.scheme | string | `"http"` | | | podMonitor.tlsConfig | object | `{}` | | | podSecurityContext | object | `{}` | | -| readinessProbe.failureThreshold | int | `1` | | -| readinessProbe.initialDelaySeconds | int | `60` | | -| readinessProbe.periodSeconds | int | `60` | | -| readinessProbe.successThreshold | int | `1` | | -| readinessProbe.timeoutSeconds | int | `1` | | +| readinessProbe | object | `{}` | | | replicaCount | int | `1` | | -| resources.limits.memory | string | `"2400Mi"` | | -| resources.requests.cpu | string | `"100m"` | | -| resources.requests.memory | string | `"1200Mi"` | | +| resources | object | `{}` | | | securityContext | object | `{}` | | -| service.port | int | `80` | | -| service.type | string | `"ClusterIP"` | | | serviceAccount.annotations | object | `{}` | | | serviceAccount.create | bool | `true` | | | serviceAccount.labels | object | `{}` | | | serviceAccount.name | string | `""` | | +| startupProbe | object | `{}` | | | tolerations | list | `[]` | | -| volumeMounts | object | `{}` | | -| volumes | object | `{}` | | ---------------------------------------------- -Autogenerated from chart metadata using [helm-docs v1.11.0](https://github.com/norwoodj/helm-docs/releases/v1.11.0) +Autogenerated from chart metadata using [helm-docs v1.14.2](https://github.com/norwoodj/helm-docs/releases/v1.14.2) diff --git a/charts/eth-validator-watcher/templates/_helpers.tpl b/charts/eth-validator-watcher/templates/_helpers.tpl index b390d6bb..8842ace0 100644 --- a/charts/eth-validator-watcher/templates/_helpers.tpl +++ b/charts/eth-validator-watcher/templates/_helpers.tpl @@ -30,35 +30,33 @@ Create chart name and version as used by the chart label. {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} {{- end }} -{{/* -Create the name of the service account to use -*/}} -{{- define "ethereum-validator-watcher.serviceAccountName" -}} -{{- if .Values.serviceAccount.create }} -{{- default (include "ethereum-validator-watcher.fullname" .) .Values.serviceAccount.name }} -{{- else }} - -{{- default "default" .Values.serviceAccount.name }} -{{- end }} -{{- end }} - {{/* Common labels */}} {{- define "ethereum-validator-watcher.labels" -}} -app.kubernetes.io/name: {{ include "ethereum-validator-watcher.name" . }} helm.sh/chart: {{ include "ethereum-validator-watcher.chart" . }} -app.kubernetes.io/instance: ethereum-validator-watcher -app.kubernetes.io/managed-by: {{ .Release.Service }} +{{ include "ethereum-validator-watcher.selectorLabels" . }} {{- if .Chart.AppVersion }} app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} {{- end }} -{{- end -}} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} {{/* Selector labels */}} -{{- define "ethereum-validator-watcher.matchLabels" -}} +{{- define "ethereum-validator-watcher.selectorLabels" -}} app.kubernetes.io/name: {{ include "ethereum-validator-watcher.name" . }} app.kubernetes.io/instance: {{ .Release.Name }} -{{- end -}} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "ethereum-validator-watcher.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "ethereum-validator-watcher.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/charts/eth-validator-watcher/templates/configmap.yaml b/charts/eth-validator-watcher/templates/configmap.yaml index fd82689f..13222e93 100644 --- a/charts/eth-validator-watcher/templates/configmap.yaml +++ b/charts/eth-validator-watcher/templates/configmap.yaml @@ -1,13 +1,9 @@ -{{- if .Values.config.watchedKeys }} apiVersion: v1 kind: ConfigMap metadata: - name: {{ include "ethereum-validator-watcher.fullname" . }} + name: {{ include "ethereum-validator-watcher.fullname" . }}-config labels: {{- include "ethereum-validator-watcher.labels" . | nindent 4 }} data: - watched-keys.txt: | - {{- range .Values.config.watchedKeys }} - {{- . | nindent 4 }} - {{- end }} -{{- end }} + config.yaml: |- + {{ .Values.config | nindent 4 }} diff --git a/charts/eth-validator-watcher/templates/deployment.yaml b/charts/eth-validator-watcher/templates/deployment.yaml index bf99fc9f..ec9c1b4f 100644 --- a/charts/eth-validator-watcher/templates/deployment.yaml +++ b/charts/eth-validator-watcher/templates/deployment.yaml @@ -5,29 +5,33 @@ metadata: namespace: {{ .Release.Namespace }} labels: {{- include "ethereum-validator-watcher.labels" . | nindent 4 }} - {{- with .Values.podAnnotations }} + {{- with .Values.deploymentAnnotations }} annotations: {{- toYaml . | nindent 4 }} {{- end }} spec: + strategy: + type: Recreate replicas: {{ .Values.replicaCount }} selector: matchLabels: - {{- include "ethereum-validator-watcher.matchLabels" . | nindent 6 }} + {{- include "ethereum-validator-watcher.selectorLabels" . | nindent 6 }} template: metadata: labels: - {{- include "ethereum-validator-watcher.matchLabels" . | nindent 8 }} + {{- include "ethereum-validator-watcher.labels" . | nindent 8 }} {{- with .Values.podLabels }} {{- tpl (toYaml .) $ | nindent 8 }} {{- end }} - {{- with .Values.podAnnotations }} - annotations: {{ tpl (toYaml .) $ | nindent 8 }} - {{- end }} + annotations: + checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} + {{- with .Values.podAnnotations }} + {{ tpl (toYaml .) $ | nindent 8 }} + {{- end }} spec: containers: - name: validator-watcher - image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" imagePullPolicy: {{ .Values.image.pullPolicy }} {{- with .Values.resources }} resources: @@ -36,71 +40,52 @@ spec: ports: - name: metrics containerPort: 8000 - args: - {{- if .Values.config.watchedKeys }} - - --pubkeys-file-path=/data/keys/watched-keys.txt - {{- end }} - - --beacon-url={{ .Values.config.beaconUrl }} - - --beacon-type={{ .Values.config.beaconType }} - - --liveness-file=/tmp/liveness - {{- with .Values.extraArgs }} - {{- toYaml . | nindent 10 }} - {{- end }} + {{- with .Values.env }} env: - {{- with .Values.envFrom }} - {{- range $key, $value := . }} - - name: {{ $key }} + {{- range $name, $value := . }} + {{- $type := typeOf $value }} + - name: {{ $name }} + {{- if eq $type "string" }} + value: {{ $value | quote }} + {{- else }} {{- toYaml $value | nindent 12 }} {{- end }} {{- end }} - {{- with .Values.env }} - {{- range $key, $value := . }} - - name: {{ $key }} - value: {{ $value | quote }} - {{- end }} {{- end }} + args: + - --config=/config/config.yaml + {{- range $key, $value := .Values.extraArgs }} + {{- if eq ($value | quote | len) 2 }} + - --{{ $key }} + {{- else }} + - --{{ $key }}={{ $value }} + {{- end }} + {{- end }} {{- with .Values.livenessProbe }} livenessProbe: - exec: - command: - - /usr/bin/python3.11 - - /usr/local/bin/liveness_check.py - - /tmp/liveness - initialDelaySeconds: {{ .initialDelaySeconds }} - periodSeconds: {{ .periodSeconds }} - timeoutSeconds: {{ .timeoutSeconds }} - successThreshold: {{ .successThreshold }} - failureThreshold: {{ .failureThreshold }} + {{- toYaml . | nindent 10 }} + {{- end }} + {{- with .Values.startupProbe }} + startupProbe: + {{- toYaml . | nindent 10 }} {{- end }} {{- with .Values.readinessProbe }} readinessProbe: - exec: - command: - - /usr/bin/python3.11 - - /usr/local/bin/liveness_check.py - - /tmp/liveness - initialDelaySeconds: {{ .initialDelaySeconds }} - periodSeconds: {{ .periodSeconds }} - timeoutSeconds: {{ .timeoutSeconds }} - successThreshold: {{ .successThreshold }} - failureThreshold: {{ .failureThreshold }} + {{- toYaml . | nindent 10 }} {{- end }} volumeMounts: - {{- if .Values.config.watchedKeys }} - - name: "watched-keys" - mountPath: "/data/keys" - readOnly: true - {{- end }} - {{- with .Values.volumeMounts }} - {{- toYaml . | nindent 12 }} - {{- end }} + - name: config + mountPath: /config serviceAccountName: {{ include "ethereum-validator-watcher.serviceAccountName" . }} - volumes: - {{- if .Values.config.watchedKeys }} - - name: "watched-keys" - configMap: - name: {{ include "ethereum-validator-watcher.fullname" . }} - {{- end }} - {{- with .Values.volumes }} + {{- with .Values.nodeSelector }} + nodeSelector: {{- toYaml . | nindent 8 }} {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 6 }} + {{- end }} + volumes: + - name: config + configMap: + name: {{ include "ethereum-validator-watcher.fullname" . }}-config diff --git a/charts/eth-validator-watcher/templates/podmonitor.yaml b/charts/eth-validator-watcher/templates/podmonitor.yaml index 723bf149..63df5a5e 100644 --- a/charts/eth-validator-watcher/templates/podmonitor.yaml +++ b/charts/eth-validator-watcher/templates/podmonitor.yaml @@ -9,7 +9,7 @@ metadata: spec: selector: matchLabels: - {{- include "ethereum-validator-watcher.matchLabels" . | nindent 8 }} + {{- include "ethereum-validator-watcher.selectorLabels" . | nindent 8 }} podMetricsEndpoints: - port: metrics {{- if .Values.podMonitor.interval }} @@ -23,11 +23,11 @@ spec: scheme: {{ .Values.podMonitor.scheme }} {{- end }} {{- if .Values.podMonitor.tlsConfig }} - tlsConfig: + tlsConfig: {{- toYaml .Values.podMonitor.tlsConfig | nindent 6 }} {{- end }} {{- if .Values.podMonitor.relabelings }} - relabelings: + relabelings: {{ toYaml .Values.podMonitor.relabelings | nindent 6 }} {{- end }} {{- end }} diff --git a/charts/eth-validator-watcher/values.yaml b/charts/eth-validator-watcher/values.yaml index c91c7cd0..ccf7d2c6 100644 --- a/charts/eth-validator-watcher/values.yaml +++ b/charts/eth-validator-watcher/values.yaml @@ -1,66 +1,62 @@ +# Kubernetes config, likely no need to tweak those unless you know +# what you are doing and need specific tweaks. + replicaCount: 1 + image: repository: ghcr.io/kilnfi/eth-validator-watcher pullPolicy: IfNotPresent - tag: "" + tag: 1.0.0-beta.8 -imagePullSecrets: [] nameOverride: "" fullnameOverride: "" -config: - beaconUrl: "http://localhost:5052" - beaconType: "other" - # -- List of public keys to watch. See https://github.com/kilnfi/eth-validator-watcher/blob/main/README.md#command-lines-examples - watchedKeys: [] - -env: {} -envFrom: {} -extraArgs: [] +extraArgs: {} +deploymentAnnotations: {} podAnnotations: {} podLabels: {} podSecurityContext: {} securityContext: {} -resources: - requests: - cpu: 100m - memory: 1200Mi - limits: - memory: 2400Mi +resources: {} +startupProbe: {} +readinessProbe: {} livenessProbe: + httpGet: + path: / + port: 8000 + initialDelaySeconds: 600 + failureThreshold: 10 periodSeconds: 60 - initialDelaySeconds: 60 - timeoutSeconds: 1 - failureThreshold: 1 - successThreshold: 1 -readinessProbe: - periodSeconds: 60 - initialDelaySeconds: 60 - timeoutSeconds: 1 - failureThreshold: 1 - successThreshold: 1 + timeoutSeconds: 60 -extraInitContainers: [] -volumeMounts: {} -volumes: {} nodeSelector: {} tolerations: [] affinity: {} + serviceAccount: create: true annotations: {} name: "" labels: {} -service: - type: ClusterIP - port: 80 podMonitor: - enabled: false + enabled: true interval: 12s additionalLabels: {} scheme: http tlsConfig: {} relabelings: [] + +# Here is the actual configuration of the watcher. This needs to be +# edited to your environment / setup / keys. + +config: | + beacon_url: http://beacon-url:5051 + beacon_timeout_sec: 90 + network: network-name + metrics_port: 8000 + watched_keys: + - public_key: '989fa046d04b41fc95a04dabb7ab8b64e84afaa85c0aa49e1c6878d7b2814094402d62ae42dfbf3ac72e6770ee0926a8' + labels: ['operator:kiln', 'vc:prysm-validator-1'] diff --git a/grafana/dashboard-breakdown.json b/grafana/dashboard-breakdown.json index 23f8ec80..c1084744 100644 --- a/grafana/dashboard-breakdown.json +++ b/grafana/dashboard-breakdown.json @@ -21,7 +21,7 @@ "type": "grafana", "id": "grafana", "name": "Grafana", - "version": "11.5.1" + "version": "11.5.2" }, { "type": "panel", @@ -127,7 +127,7 @@ "content": "\n- [open an issue](https://github.com/kilnfi/eth-validator-watcher/issues/new)\n- [github repository](https://github.com/kilnfi/eth-validator-watcher)\n- [beaconcha.in](https://beaconcha.in/)\n- [bageth.xyz](https://www.bageth.xyz/)\n- [etherscan.io](https://etherscan.io/)", "mode": "markdown" }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "title": "Quick Links", "type": "text" }, @@ -184,7 +184,7 @@ "sort": "none" } }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -259,7 +259,7 @@ "sort": "none" } }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -339,7 +339,7 @@ "sizing": "auto", "valueMode": "text" }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -476,7 +476,7 @@ "sort": "none" } }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -559,7 +559,7 @@ "reverse": false } }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -677,7 +677,7 @@ "sort": "none" } }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -692,7 +692,7 @@ "refId": "A" } ], - "title": "Real-time duties", + "title": "Attestation Rate (real-time)", "type": "timeseries" }, { @@ -782,7 +782,7 @@ "sort": "none" } }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -797,7 +797,7 @@ "refId": "A" } ], - "title": "Missed Attestations Per Epoch", + "title": "Missed Attestations Per Epoch (with 1 epoch delay)", "type": "timeseries" }, { @@ -887,7 +887,7 @@ "sort": "none" } }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -902,7 +902,7 @@ "refId": "A" } ], - "title": "Consecutive Missed Attestations Per Epoch", + "title": "Consecutive Missed Attestations Per Epoch (with 1 epoch delay)", "type": "timeseries" }, { @@ -980,7 +980,7 @@ "sizing": "auto", "valueMode": "text" }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -1077,7 +1077,7 @@ "sizing": "auto", "valueMode": "text" }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -1174,7 +1174,7 @@ "sizing": "auto", "valueMode": "text" }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -1292,7 +1292,7 @@ "sort": "none" } }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -1396,7 +1396,7 @@ "sort": "none" } }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -1500,7 +1500,7 @@ "sort": "none" } }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -1610,7 +1610,7 @@ }, "timezone": "utc", "title": "Ethereum Kiln Breakdown", - "uid": "aa3b3d43-e0f9-445a-be20-856c00610e08", - "version": 6, + "uid": "aa3b3d43-e0f9-445a-be20-856c00620e08", + "version": 4, "weekStart": "monday" } \ No newline at end of file diff --git a/grafana/dashboard-overview.json b/grafana/dashboard-overview.json index ec7750f0..510fb139 100644 --- a/grafana/dashboard-overview.json +++ b/grafana/dashboard-overview.json @@ -11,12 +11,6 @@ ], "__elements": {}, "__requires": [ - { - "type": "panel", - "id": "bargauge", - "name": "Bar gauge", - "version": "" - }, { "type": "panel", "id": "gauge", @@ -27,7 +21,13 @@ "type": "grafana", "id": "grafana", "name": "Grafana", - "version": "11.5.1" + "version": "11.5.2" + }, + { + "type": "panel", + "id": "piechart", + "name": "Pie chart", + "version": "" }, { "type": "datasource", @@ -127,7 +127,7 @@ "content": "\n- [open an issue](https://github.com/kilnfi/eth-validator-watcher/issues/new)\n- [github repository](https://github.com/kilnfi/eth-validator-watcher)\n- [beaconcha.in](https://beaconcha.in/)\n- [bageth.xyz](https://www.bageth.xyz/)\n- [etherscan.io](https://etherscan.io/)", "mode": "markdown" }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "title": "Quick Links", "type": "text" }, @@ -181,7 +181,7 @@ "textMode": "auto", "wideLayout": true }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -189,10 +189,12 @@ "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", + "exemplar": false, "expr": "max(eth_epoch{network=\"${network}\"})", "hide": false, + "instant": true, "legendFormat": "__auto", - "range": true, + "range": false, "refId": "A" } ], @@ -210,7 +212,9 @@ "color": { "mode": "thresholds" }, + "fieldMinMax": false, "mappings": [], + "noValue": "-", "thresholds": { "mode": "absolute", "steps": [ @@ -249,7 +253,7 @@ "textMode": "auto", "wideLayout": true }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -313,7 +317,7 @@ "showThresholdMarkers": true, "sizing": "auto" }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -335,7 +339,6 @@ "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "description": "Estimation of the entry queue time. Add ~12 hours for actual entry time.", "fieldConfig": { "defaults": { "color": { @@ -346,12 +349,12 @@ "mode": "absolute", "steps": [ { - "color": "super-light-purple", + "color": "light-green", "value": null } ] }, - "unit": "s" + "unit": "currencyUSD" }, "overrides": [] }, @@ -361,11 +364,11 @@ "x": 16, "y": 1 }, - "id": 35, + "id": 39, "options": { "colorMode": "value", "graphMode": "area", - "justifyMode": "auto", + "justifyMode": "center", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { @@ -375,12 +378,11 @@ "fields": "", "values": false }, - "showPercentChange": false, - "text": {}, + "showPercentChange": true, "textMode": "auto", "wideLayout": true }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -388,13 +390,13 @@ "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", - "expr": "(max(eth_validator_status_count{scope=\"scope:network\", status=\"pending_queued\", network=\"${network}\"} or vector(0)) / 8) * (12*32)", + "expr": "max(eth_current_price_dollars{network=\"${network}\"})", "legendFormat": "__auto", "range": true, "refId": "A" } ], - "title": "Entry Queue Time", + "title": "ETH price", "type": "stat" }, { @@ -402,6 +404,7 @@ "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, + "description": "Estimation of the entry queue time. Add ~12 hours for actual entry time.", "fieldConfig": { "defaults": { "color": { @@ -412,12 +415,12 @@ "mode": "absolute", "steps": [ { - "color": "light-green", + "color": "super-light-purple", "value": null } ] }, - "unit": "currencyUSD" + "unit": "s" }, "overrides": [] }, @@ -427,11 +430,11 @@ "x": 20, "y": 1 }, - "id": 39, + "id": 35, "options": { "colorMode": "value", "graphMode": "area", - "justifyMode": "center", + "justifyMode": "auto", "orientation": "auto", "percentChangeColorMode": "standard", "reduceOptions": { @@ -441,11 +444,12 @@ "fields": "", "values": false }, - "showPercentChange": true, + "showPercentChange": false, + "text": {}, "textMode": "auto", "wideLayout": true }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -453,13 +457,13 @@ "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", - "expr": "max(eth_current_price_dollars{network=\"${network}\"})", + "expr": "((max(eth_pending_deposits_value{network=\"$network\"}) / 1e9) * (12*32)) / 256", "legendFormat": "__auto", "range": true, "refId": "A" } ], - "title": "ETH price", + "title": "Entry Queue Time", "type": "stat" }, { @@ -525,7 +529,7 @@ "textMode": "value_and_name", "wideLayout": true }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -589,7 +593,7 @@ }, "gridPos": { "h": 6, - "w": 4, + "w": 5, "x": 4, "y": 7 }, @@ -611,7 +615,7 @@ "textMode": "auto", "wideLayout": true }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -684,7 +688,7 @@ "gridPos": { "h": 12, "w": 4, - "x": 8, + "x": 9, "y": 7 }, "id": 77, @@ -703,7 +707,7 @@ "showThresholdMarkers": false, "sizing": "auto" }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -761,8 +765,8 @@ }, "gridPos": { "h": 4, - "w": 4, - "x": 12, + "w": 5, + "x": 13, "y": 7 }, "id": 79, @@ -784,7 +788,7 @@ "textMode": "auto", "wideLayout": true }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -820,88 +824,109 @@ "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "description": "", "fieldConfig": { "defaults": { "color": { - "mode": "thresholds" + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "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" + } }, - "fieldMinMax": false, "mappings": [], - "min": 0, "thresholds": { - "mode": "percentage", + "mode": "absolute", "steps": [ { - "color": "red", + "color": "green", "value": null }, { - "color": "orange", - "value": 85 - }, - { - "color": "yellow", - "value": 90 - }, - { - "color": "green", - "value": 95 + "color": "red", + "value": 80 } ] - }, - "unit": "percent" + } }, "overrides": [] }, "gridPos": { - "h": 4, - "w": 8, - "x": 16, + "h": 6, + "w": 6, + "x": 18, "y": 7 }, - "id": 68, + "id": 103, "options": { - "displayMode": "basic", "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": false }, - "maxVizHeight": 184, - "minVizHeight": 19, - "minVizWidth": 0, - "namePlacement": "top", - "orientation": "horizontal", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "showUnfilled": true, - "sizing": "auto", - "valueMode": "color" + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ + { + "editorMode": "code", + "exemplar": false, + "expr": "eth_pending_deposits_count{network=\"$network\"}", + "format": "time_series", + "instant": false, + "legendFormat": "Deposits", + "range": true, + "refId": "A", + "datasource": { + "type": "prometheus", + "uid": "${DS_PROMETHEUS}" + } + }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", - "exemplar": false, - "expr": "100.0 - sum(avg_over_time(eth_suboptimal_heads_rate{scope=\"scope:network\", network=\"${network}\"}[$__interval]))", - "format": "time_series", + "expr": "eth_pending_consolidations_count{network=\"$network\"}", "hide": false, - "instant": true, - "interval": "", - "legendFormat": "network", - "range": false, - "refId": "IDEAL" + "instant": false, + "legendFormat": "Consolidations", + "range": true, + "refId": "B" }, { "datasource": { @@ -909,16 +934,16 @@ "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", - "expr": "100.0 - sum(avg_over_time(eth_suboptimal_heads_rate{scope=\"scope:watched\", network=\"${network}\"}[$__interval]))", + "expr": "eth_pending_withdrawals_count{network=\"$network\"}", "hide": false, "instant": false, - "legendFormat": "watched", + "legendFormat": "Withdrawals", "range": true, - "refId": "A" + "refId": "C" } ], - "title": "Head Votes", - "type": "bargauge" + "title": "Operations", + "type": "timeseries" }, { "datasource": { @@ -936,7 +961,7 @@ "mode": "absolute", "steps": [ { - "color": "yellow", + "color": "red", "value": null } ] @@ -951,7 +976,7 @@ "x": 0, "y": 11 }, - "id": 96, + "id": 95, "options": { "colorMode": "background", "graphMode": "area", @@ -970,7 +995,7 @@ "textMode": "value_and_name", "wideLayout": true }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -979,7 +1004,7 @@ }, "editorMode": "code", "exemplar": false, - "expr": "max(eth_validator_status${scale}_count{status=~\"pending_queued\", scope=\"scope:all-network\", network=\"${network}\"} or vector(0)) ", + "expr": "max(eth_slashed_validators{scope=\"scope:all-network\", network=\"${network}\"} or vector(0))", "hide": false, "instant": false, "legendFormat": "network", @@ -992,7 +1017,7 @@ "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", - "expr": "max(eth_validator_status${scale}_count{status=~\"pending_queued\", scope=\"scope:watched\", network=\"${network}\"} or vector(0))", + "expr": "max(eth_slashed_validators{scope=\"scope:watched\", network=\"${network}\"} or vector(0))", "hide": false, "instant": false, "legendFormat": "watched", @@ -1000,7 +1025,7 @@ "refId": "B" } ], - "title": "Queued Validators", + "title": "Slashed Validators", "type": "stat" }, { @@ -1029,8 +1054,8 @@ }, "gridPos": { "h": 4, - "w": 4, - "x": 12, + "w": 5, + "x": 13, "y": 11 }, "id": 5, @@ -1052,7 +1077,7 @@ "textMode": "auto", "wideLayout": true }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -1094,54 +1119,37 @@ "color": { "mode": "thresholds" }, - "fieldMinMax": false, "mappings": [], - "min": 0, "thresholds": { - "mode": "percentage", + "mode": "absolute", "steps": [ { - "color": "red", + "color": "blue", "value": null }, { - "color": "orange", - "value": 85 - }, - { - "color": "yellow", - "value": 90 - }, - { - "color": "green", - "value": 95 + "color": "purple", + "value": 80 } ] }, - "unit": "percent" + "unit": "%" }, "overrides": [] }, "gridPos": { - "h": 4, - "w": 8, - "x": 16, - "y": 11 + "h": 6, + "w": 5, + "x": 4, + "y": 13 }, - "id": 97, + "id": 4, "options": { - "displayMode": "basic", - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": false - }, - "maxVizHeight": 184, - "minVizHeight": 19, - "minVizWidth": 0, - "namePlacement": "top", - "orientation": "horizontal", + "colorMode": "value", + "graphMode": "area", + "justifyMode": "center", + "orientation": "auto", + "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" @@ -1149,11 +1157,12 @@ "fields": "", "values": false }, - "showUnfilled": true, - "sizing": "auto", - "valueMode": "color" + "showPercentChange": true, + "text": {}, + "textMode": "auto", + "wideLayout": true }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -1161,15 +1170,11 @@ "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", - "exemplar": false, - "expr": "100.0 - sum(avg_over_time(eth_suboptimal_sources_rate{scope=\"scope:network\", network=\"${network}\"}[$__interval]))", - "format": "time_series", + "expr": "((max(eth_validator_status_scaled_count{status=~\"active_ongoing|active_exiting\", scope=\"scope:all-network\", network=\"${network}\"}) or vector(0)) / (max(eth_validator_status_scaled_count{status=~\"active_ongoing|active_exiting\", scope=\"scope:all-network\", network=\"${network}\"}) or vector(0))) * 100.0", "hide": false, - "instant": true, - "interval": "", "legendFormat": "network", - "range": false, - "refId": "IDEAL" + "range": true, + "refId": "A" }, { "datasource": { @@ -1177,59 +1182,55 @@ "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", - "expr": "100.0 - sum(avg_over_time(eth_suboptimal_sources_rate{scope=\"scope:watched\", network=\"${network}\"}[$__interval]))", + "expr": "((max(eth_validator_status_scaled_count{status=~\"active_ongoing|active_exiting\", scope=\"scope:watched\", network=\"${network}\"}) or vector(0)) / (max(eth_validator_status_scaled_count{status=~\"active_ongoing|active_exiting\", scope=\"scope:all-network\", network=\"${network}\"}) or vector(0))) * 100.0", "hide": false, "instant": false, "legendFormat": "watched", "range": true, - "refId": "A" + "refId": "B" } ], - "title": "Source Votes", - "type": "bargauge" + "title": "Share of the network", + "type": "stat" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "description": "", "fieldConfig": { "defaults": { "color": { - "mode": "thresholds" + "mode": "palette-classic" }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "blue", - "value": null - }, - { - "color": "purple", - "value": 80 - } - ] + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + } }, - "unit": "%" + "mappings": [] }, "overrides": [] }, "gridPos": { "h": 6, - "w": 4, - "x": 4, + "w": 3, + "x": 18, "y": 13 }, - "id": 4, + "id": 102, "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "center", - "orientation": "auto", - "percentChangeColorMode": "standard", + "displayLabels": [ + "name" + ], + "legend": { + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "pieType": "pie", "reduceOptions": { "calcs": [ "lastNotNull" @@ -1237,80 +1238,69 @@ "fields": "", "values": false }, - "showPercentChange": true, - "text": {}, - "textMode": "auto", - "wideLayout": true + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, "editorMode": "code", - "expr": "((max(eth_validator_status_scaled_count{status=~\"active_ongoing|active_exiting\", scope=\"scope:all-network\", network=\"${network}\"}) or vector(0)) / (max(eth_validator_status_scaled_count{status=~\"active_ongoing|active_exiting\", scope=\"scope:all-network\", network=\"${network}\"}) or vector(0))) * 100.0", - "hide": false, - "legendFormat": "network", + "exemplar": false, + "expr": "max by (type) (eth_validator_type${scale}_count{scope=\"scope:watched\"})", + "instant": false, + "legendFormat": "0x0{{type}}", "range": true, - "refId": "A" - }, - { + "refId": "A", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "((max(eth_validator_status_scaled_count{status=~\"active_ongoing|active_exiting\", scope=\"scope:watched\", network=\"${network}\"}) or vector(0)) / (max(eth_validator_status_scaled_count{status=~\"active_ongoing|active_exiting\", scope=\"scope:all-network\", network=\"${network}\"}) or vector(0))) * 100.0", - "hide": false, - "instant": false, - "legendFormat": "watched", - "range": true, - "refId": "B" + } } ], - "title": "Share of the network", - "type": "stat" + "title": "Watched Validator Types", + "type": "piechart" }, { "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" }, - "description": "", "fieldConfig": { "defaults": { "color": { - "mode": "thresholds" + "mode": "palette-classic" }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "red", - "value": null - } - ] + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + } }, - "unit": "short" + "mappings": [] }, "overrides": [] }, "gridPos": { - "h": 4, - "w": 4, - "x": 0, - "y": 15 + "h": 6, + "w": 3, + "x": 21, + "y": 13 }, - "id": 95, + "id": 101, "options": { - "colorMode": "background", - "graphMode": "area", - "justifyMode": "center", - "orientation": "auto", - "percentChangeColorMode": "standard", + "displayLabels": [ + "name" + ], + "legend": { + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "pieType": "pie", "reduceOptions": { "calcs": [ "lastNotNull" @@ -1318,43 +1308,30 @@ "fields": "", "values": false }, - "showPercentChange": true, - "text": {}, - "textMode": "value_and_name", - "wideLayout": true + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, "editorMode": "code", "exemplar": false, - "expr": "max(eth_slashed_validators{scope=\"scope:all-network\", network=\"${network}\"} or vector(0))", - "hide": false, + "expr": "max by (type) (eth_validator_type${scale}_count{scope=\"scope:all-network\"})", "instant": false, - "legendFormat": "network", + "legendFormat": "0x0{{type}}", "range": true, - "refId": "A" - }, - { + "refId": "A", "datasource": { "type": "prometheus", "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "max(eth_slashed_validators{scope=\"scope:watched\", network=\"${network}\"} or vector(0))", - "hide": false, - "instant": false, - "legendFormat": "watched", - "range": true, - "refId": "B" + } } ], - "title": "Slashed Validators", - "type": "stat" + "title": "Network Validator Types", + "type": "piechart" }, { "datasource": { @@ -1372,24 +1349,25 @@ "mode": "absolute", "steps": [ { - "color": "green", + "color": "yellow", "value": null } ] - } + }, + "unit": "none" }, "overrides": [] }, "gridPos": { "h": 4, "w": 4, - "x": 12, + "x": 0, "y": 15 }, - "id": 99, + "id": 96, "options": { - "colorMode": "value", - "graphMode": "none", + "colorMode": "background", + "graphMode": "area", "justifyMode": "center", "orientation": "auto", "percentChangeColorMode": "standard", @@ -1400,12 +1378,12 @@ "fields": "", "values": false }, - "showPercentChange": false, + "showPercentChange": true, "text": {}, - "textMode": "auto", + "textMode": "value_and_name", "wideLayout": true }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -1413,27 +1391,16 @@ "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", - "expr": "max(increase(eth_block_proposals_finalized_total{scope=\"scope:all-network\", network=\"${network}\"}[$__range]))", + "exemplar": false, + "expr": "max(eth_pending_deposits_value{network=\"${network}\"}) / (32*1e9)", "hide": false, + "instant": false, "legendFormat": "network", "range": true, "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "max(increase(eth_block_proposals_finalized_total{scope=\"scope:watched\", network=\"${network}\"}[$__range]))", - "hide": false, - "instant": false, - "legendFormat": "watched", - "range": true, - "refId": "B" } ], - "title": "Block Proposed", + "title": "Queued Validators", "type": "stat" }, { @@ -1447,54 +1414,32 @@ "color": { "mode": "thresholds" }, - "fieldMinMax": false, "mappings": [], - "min": 0, "thresholds": { - "mode": "percentage", + "mode": "absolute", "steps": [ - { - "color": "red", - "value": null - }, - { - "color": "orange", - "value": 85 - }, - { - "color": "yellow", - "value": 90 - }, { "color": "green", - "value": 95 + "value": null } ] - }, - "unit": "percent" + } }, "overrides": [] }, "gridPos": { "h": 4, - "w": 8, - "x": 16, + "w": 5, + "x": 13, "y": 15 }, - "id": 98, + "id": 99, "options": { - "displayMode": "basic", - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": false - }, - "maxVizHeight": 184, - "minVizHeight": 19, - "minVizWidth": 0, - "namePlacement": "top", - "orientation": "horizontal", + "colorMode": "value", + "graphMode": "none", + "justifyMode": "center", + "orientation": "auto", + "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" @@ -1502,11 +1447,12 @@ "fields": "", "values": false }, - "showUnfilled": true, - "sizing": "auto", - "valueMode": "color" + "showPercentChange": false, + "text": {}, + "textMode": "auto", + "wideLayout": true }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -1514,15 +1460,11 @@ "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", - "exemplar": false, - "expr": "100.0 - sum(avg_over_time(eth_suboptimal_targets_rate{scope=\"scope:network\", network=\"${network}\"}[$__interval]))", - "format": "time_series", + "expr": "max(increase(eth_block_proposals_finalized_total{scope=\"scope:all-network\", network=\"${network}\"}[$__range]))", "hide": false, - "instant": true, - "interval": "", "legendFormat": "network", - "range": false, - "refId": "IDEAL" + "range": true, + "refId": "A" }, { "datasource": { @@ -1530,16 +1472,16 @@ "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", - "expr": "100.0 - sum(avg_over_time(eth_suboptimal_targets_rate{scope=\"scope:watched\", network=\"${network}\"}[$__interval]))", + "expr": "max(increase(eth_block_proposals_finalized_total{scope=\"scope:watched\", network=\"${network}\"}[$__range]))", "hide": false, "instant": false, "legendFormat": "watched", "range": true, - "refId": "A" + "refId": "B" } ], - "title": "Target Votes", - "type": "bargauge" + "title": "Block Proposed", + "type": "stat" }, { "collapsed": false, @@ -1572,7 +1514,7 @@ "axisGridShow": true, "axisLabel": "", "axisPlacement": "right", - "axisSoftMin": 0, + "axisSoftMin": -4, "barAlignment": 0, "barWidthFactor": 0.6, "drawStyle": "line", @@ -1589,7 +1531,7 @@ "fill": "solid" }, "lineWidth": 1, - "pointSize": 5, + "pointSize": 2, "scaleDistribution": { "type": "linear" }, @@ -1603,6 +1545,7 @@ "mode": "off" } }, + "fieldMinMax": false, "mappings": [], "thresholds": { "mode": "absolute", @@ -1621,18 +1564,20 @@ "overrides": [] }, "gridPos": { - "h": 15, - "w": 12, + "h": 9, + "w": 8, "x": 0, "y": 20 }, "id": 86, "options": { "legend": { - "calcs": [], - "displayMode": "list", + "calcs": [ + "lastNotNull" + ], + "displayMode": "table", "placement": "bottom", - "showLegend": true + "showLegend": false }, "tooltip": { "hideZeros": false, @@ -1641,7 +1586,7 @@ "sort": "none" } }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -1739,12 +1684,12 @@ "overrides": [] }, "gridPos": { - "h": 5, - "w": 12, - "x": 12, + "h": 9, + "w": 8, + "x": 8, "y": 20 }, - "id": 85, + "id": 88, "options": { "legend": { "calcs": [], @@ -1759,7 +1704,7 @@ "sort": "none" } }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -1767,7 +1712,7 @@ "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", - "expr": "max(eth_suboptimal_heads_rate{scope=\"scope:network\", network=\"${network}\"})", + "expr": "max(increase(eth_missed_block_proposals_finalized_total{scope=\"scope:network\", network=\"${network}\"}[24h]))", "instant": false, "legendFormat": "scope:network", "range": true, @@ -1779,7 +1724,8 @@ "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", - "expr": "max(eth_suboptimal_heads_rate{scope=\"scope:watched\", network=\"${network}\"})", + "exemplar": false, + "expr": "max(increase(eth_missed_block_proposals_finalized_total{scope=\"scope:watched\", network=\"${network}\"}[24h]))", "hide": false, "instant": false, "legendFormat": "scope:watched", @@ -1787,7 +1733,7 @@ "refId": "B" } ], - "title": "Untimely or bad head vote (%)", + "title": "Missed blocks last 24H (count)", "type": "timeseries" }, { @@ -1843,7 +1789,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -1855,10 +1802,10 @@ "overrides": [] }, "gridPos": { - "h": 5, - "w": 12, - "x": 12, - "y": 25 + "h": 6, + "w": 8, + "x": 16, + "y": 20 }, "id": 83, "options": { @@ -1875,7 +1822,7 @@ "sort": "none" } }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -1959,7 +1906,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -1971,10 +1919,10 @@ "overrides": [] }, "gridPos": { - "h": 5, - "w": 12, - "x": 12, - "y": 30 + "h": 6, + "w": 8, + "x": 16, + "y": 26 }, "id": 84, "options": { @@ -1991,7 +1939,7 @@ "sort": "none" } }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -2076,7 +2024,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -2088,10 +2037,10 @@ "overrides": [] }, "gridPos": { - "h": 10, + "h": 9, "w": 8, "x": 0, - "y": 35 + "y": 29 }, "id": 100, "options": { @@ -2108,7 +2057,7 @@ "sort": "none" } }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -2193,7 +2142,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -2205,10 +2155,10 @@ "overrides": [] }, "gridPos": { - "h": 10, + "h": 9, "w": 8, "x": 8, - "y": 35 + "y": 29 }, "id": 87, "options": { @@ -2225,7 +2175,7 @@ "sort": "none" } }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -2310,7 +2260,8 @@ "mode": "absolute", "steps": [ { - "color": "green" + "color": "green", + "value": null }, { "color": "red", @@ -2322,12 +2273,12 @@ "overrides": [] }, "gridPos": { - "h": 10, + "h": 6, "w": 8, "x": 16, - "y": 35 + "y": 32 }, - "id": 88, + "id": 85, "options": { "legend": { "calcs": [], @@ -2342,7 +2293,7 @@ "sort": "none" } }, - "pluginVersion": "11.5.1", + "pluginVersion": "11.5.2", "targets": [ { "datasource": { @@ -2350,7 +2301,7 @@ "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", - "expr": "max(increase(eth_missed_block_proposals_finalized_total{scope=\"scope:network\", network=\"${network}\"}[24h]))", + "expr": "max(eth_suboptimal_heads_rate{scope=\"scope:network\", network=\"${network}\"})", "instant": false, "legendFormat": "scope:network", "range": true, @@ -2362,8 +2313,7 @@ "uid": "${DS_PROMETHEUS}" }, "editorMode": "code", - "exemplar": false, - "expr": "max(increase(eth_missed_block_proposals_finalized_total{scope=\"scope:watched\", network=\"${network}\"}[24h]))", + "expr": "max(eth_suboptimal_heads_rate{scope=\"scope:watched\", network=\"${network}\"})", "hide": false, "instant": false, "legendFormat": "scope:watched", @@ -2371,7 +2321,7 @@ "refId": "B" } ], - "title": "Missed blocks last 24H (count)", + "title": "Untimely or bad head vote (%)", "type": "timeseries" } ], @@ -2427,7 +2377,7 @@ ] }, "time": { - "from": "now-1h", + "from": "now-3h", "to": "now" }, "timepicker": { @@ -2443,7 +2393,7 @@ }, "timezone": "utc", "title": "Ethereum Kiln Overview", - "uid": "acc6771c-f2fb-4735-b747-6eb197064745", - "version": 30, + "uid": "acc6771c-f2fb-4735-b747-6eb197064746", + "version": 13, "weekStart": "monday" } \ No newline at end of file