panurus

Grafana dashboards

panurus.json — Panurus Overview

A single overview dashboard covering every metric Panurus exports: 20 panels across 9 rows, one row per subsystem (driver services, transaction lifecycle, finality listener, envelope sessions, auditor, token selection, certification and identity caches, signer resolution and cache provisioning, Fabric-X finality queue).

Import

  1. Grafana → Dashboards → New → Import → Upload JSON file.
  2. Pick the Prometheus data source that scrapes the node’s metrics endpoint when prompted for DS_PROMETHEUS.

The dashboard declares four template variables — network, channel, namespace and method — whose values are discovered with label_values. network, channel and namespace come from panurus_core_common_metrics_transfer_service_operations_total; method is unioned across all five driver services with a __name__ matcher, because each service reports a disjoint set of method names and a method list taken from one of them would filter the other four down to nothing.

All four set allValue: ".*", so the default “All” selection matches every series rather than interpolating to an empty string. This matters on a node that has never transferred a token: it exports no series for the source metric, the pickers stay empty, and without allValue a selector such as network=~"" would match nothing and blank every filtered panel.

Requires Grafana 9.0 or later (schemaVersion 37).

Not covered

Changing it

Every query in this file is checked by token/services/metricsdoc, which asserts that

These are the failure modes a dashboard cannot report itself: Grafana does not error on an unknown metric or an absent label, it renders No data, which is indistinguishable from an idle node. An earlier version of this dashboard (#1749) had every one of its 51 panel queries and 4 variable queries written against bare option names from the Go source, so not one of them matched a series; it closed unmerged.

So: after editing a query, run

go test ./token/services/metricsdoc/...

If you add a panel for a metric that does not exist yet, add the metric first — see Metrics Reference for the exported names and testdata/metrics.golden for the machine-readable list.