Prometheus

Storage Map v101 → v411 Changed in v411

Prometheus endpoint info for neurons.

Explore chain
Queried by: validatorssubnet ownersdevelopersanalytics

The Big Picture

Prometheus endpoints expose operational metrics from neurons - inference latency, request counts, error rates, resource usage, etc. This enables observability across the network. Validators can use this data to make better weight decisions, and operators can debug issues.

Why This Matters

Beyond just connecting to miners, you want to know how they're performing. Prometheus endpoints give you operational metrics - how fast, how reliable, how loaded is this neuron?

Example Scenario

Query Prometheus(netuid=1, uid=47) returns { ip: '1.2.3.4', port: 9090, ip_type: 4, version: 1, block: 7000000 }. Scrape http://1.2.3.4:9090/metrics for Prometheus-format metrics.

Common Questions

Is Prometheus required?
No, it's optional. Neurons can participate without exposing metrics. But providing metrics can build trust with validators who value transparency.
What metrics should neurons expose?
Common: inference_latency, request_count, error_rate, queue_depth. Subnet-specific metrics depend on the task. Follow Prometheus naming conventions.
Can validators use this for scoring?
Yes, sophisticated validators can scrape metrics to inform weight decisions - rewarding neurons with better performance characteristics.

Use Cases

  • Build network-wide monitoring dashboards
  • Scrape neuron performance metrics for analysis
  • Debug neuron health and performance issues
  • Create alerting systems based on neuron metrics
  • Research network behavior through metrics aggregation

From Chain Metadata

MAP ( netuid, hotkey ) --> prometheus_info

Purpose & Usage

Purpose

Store metrics endpoint location for monitoring and observability.

Common Query Patterns

  • Query by netuid-uid for a specific neuron's metrics endpoint
  • Iterate to discover all available metrics endpoints
  • Build monitoring systems that scrape neuron metrics

Query Keys

#NameTypeDescription
1
netuid
u16 netuid (u16, hashed key component)
2
hotkey
AccountId hotkey (AccountId, hashed key component) (hex -> SS58)

Stored Value

prometheus_info (PrometheusInfo)

Relationships

Code Examples

import { createClient, Binary } from "polkadot-api";
import { getWsProvider } from "polkadot-api/ws";
import { sub } from "@polkadot-api/descriptors"; // generated by: npx papi add sub -w wss://entrypoint-finney.opentensor.ai:443

const client = createClient(getWsProvider("wss://entrypoint-finney.opentensor.ai:443"));
const api = client.getTypedApi(sub);

// Query Prometheus storage
const netuid = 1;
const hotkey = "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY";

const result = await api.query.SubtensorModule.Prometheus.getValue(netuid, hotkey);
console.log("Prometheus:", result);

Version History

v101 block 1 Added
v120 block 315,568 Internal re-bind
v123 block 720,235 Internal re-bind
v128–v132 · runtime versions skipped on chain (never deployed)
v133 block 1,404,224 Internal re-bind
v136 block 1,756,781 Internal re-bind
v138 block 1,907,363 Internal re-bind
v140 block 1,929,216 Internal re-bind
v146 block 2,848,978 Internal re-bind
v149 block 3,014,339 Internal re-bind
v154 block 3,308,611 Internal re-bind
v166–v194 · runtime versions skipped on chain (never deployed)
v195 block 3,791,350 Internal re-bind
v202 block 3,848,823 Internal re-bind
v203–v204 · runtime versions skipped on chain (never deployed)
v205 block 4,209,446 Internal re-bind
v207–v209 · runtime versions skipped on chain (never deployed)
v210 block 4,345,556 Internal re-bind
v213–v215 · runtime versions skipped on chain (never deployed)
v216 block 4,510,996 Internal re-bind
v220–v232 · runtime versions skipped on chain (never deployed)
v233 block 4,920,350 Internal re-bind
v235–v237 · runtime versions skipped on chain (never deployed)
v238 block 4,936,550 Internal re-bind
v241–v243 · runtime versions skipped on chain (never deployed)
v244 block 4,999,897 Internal re-bind
v266–v272 · runtime versions skipped on chain (never deployed)
v273 block 5,659,032 Internal re-bind
v275–v275 · runtime versions skipped on chain (never deployed)
v276 block 5,781,672 Internal re-bind
v278–v289 · runtime versions skipped on chain (never deployed)
v290 block 5,947,548 Internal re-bind
v293–v296 · runtime versions skipped on chain (never deployed)
v297 block 6,067,943 Internal re-bind
v307–v314 · runtime versions skipped on chain (never deployed)
v315 block 6,414,634 Internal re-bind
v316–v319 · runtime versions skipped on chain (never deployed)
v320 block 6,523,566 Internal re-bind
v327–v333 · runtime versions skipped on chain (never deployed)
v334 block 6,811,690 Internal re-bind
v353–v360 · runtime versions skipped on chain (never deployed)
v361 block 7,063,679 Internal re-bind
v363–v364 · runtime versions skipped on chain (never deployed)
v365 block 7,135,419 Internal re-bind
v386–v390 · runtime versions skipped on chain (never deployed)
v391 block 7,782,857 Internal re-bind
v394–v400 · runtime versions skipped on chain (never deployed)
v401 block 8,036,576 Internal re-bind
v403–v410 · runtime versions skipped on chain (never deployed)
v411 block 8,283,784 Internal re-bind Current

Runtime Info

View Source
Pallet
SubtensorModule
Storage Kind
Map
First Version
v101
Current Version
v411