Skip to content

Expose metrics for each service #144

@hackaugusto

Description

@hackaugusto

Add metrics for each component, this will change but here is an initial list:

  • All
    • Collect metrics from the event loop, e.g. tokio-metrics
    • Collect metrics from gRPC / tonic / axum
      • Number of requests, with status (200, 404, 500, etc), per request handler
      • Timing for request handlers with percentile (at least 99, 95, 50)
      • Request/Response sizes with percentiles
    • Timing for downstream requests with percentile
    • Number of seconds the service has been running
    • Metrics from the control plane
      • Number of operations performed
      • Configuration reload
  • Store
    • Number of blocks persisted so far
    • Number of leaves in the MMR
    • Number of non-empty leaves in the Nullifier tree
    • Number of accounts created
    • Number of transactions persisted so far (not sure if we have this)
    • Size of the chain (could be approximated by the size of the sqlite db file)
    • Percentiles for queries
      • This overlaps with the spans from the distributed tracer, ideally we should reuse the data from the tracer for metrics too
  • Block Producer
    • Number of known provers, with status (e.g. healthy/unhealthy, or responsive/unresponsive)
    • Number of locally proven transactions waiting in the queue
    • Number of chain transactions waiting in the queue
    • Number of batches in the queue
    • Number of accounts with in-flight transactions
    • Number of in-flight notes
    • Timing for proving times with percentile (at least 99, 95, 50)
      • for the chain transactions
      • for the batches
      • for the block
    • Age of the oldest transaction waiting to be included in a batch (this is probably the best strategy to trigger when to increase the number of batch prover machines)
  • RPC

Node metrics (cpu, memory, disk usage, etc) should not be exposed here, this should be done by an external agent (e.g. https://prometheus.io/docs/instrumenting/exporters/)

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions