Skip to Content

Fibre metrics and monitoring

This page covers observability in Fibre v10.2.0-mocha. Complete the server setup first. Add the flags below to your existing start command, keeping your home and node addresses. All observability flags apply to every subcommand.

Logging

FlagEnvironment variableDefaultValues
--log-levelFIBRE_LOG_LEVELinfodebug, info, warn, error
--log-formatFIBRE_LOG_FORMATtexttext, json
fibre start --log-level debug --log-format json

Tracing and metrics

Fibre sends traces and metrics over OTLP/HTTP to an OpenTelemetry collector, such as Grafana Alloy or the OTel Collector. Configure the collector to receive both signals and forward them to your tracing and metrics backends.

FlagEnvironment variableDefault
--otel-endpointFIBRE_OTEL_ENDPOINTDisabled
fibre start --otel-endpoint http://localhost:4318

Use the collector’s base URL. Fibre appends /v1/traces and /v1/metrics itself. For example, https://collector.example.com/otel sends data to /otel/v1/traces and /otel/v1/metrics. Remove either signal suffix from an existing endpoint when upgrading.

Traces

Fibre samples 10% of root spans and respects upstream sampling decisions, using ParentBased(TraceIDRatioBased(0.1)). W3C TraceContext and Baggage propagation carry trace context across gRPC and HTTP calls.

Each trace includes service.name=fibre, service.version, and service.instance.id (the hostname).

Metrics

Metrics are exported periodically over OTLP. Duration histograms include a success attribute, so their counts can be used to calculate error rates. Metric exemplars link observations to traces; in Grafana, select an exemplar to open its trace.

The tables below list the original OTLP metric names. Your collector or backend may convert dots to underscores and add unit suffixes.

Client metrics

These metrics come from instrumented Fibre clients. Collect client telemetry alongside server telemetry to measure end-to-end uploads and downloads.

MetricTypeAttributesDescription
fibre.client.upload.in_flightUpDownCounterConcurrent uploads
fibre.client.upload.durationHistogram (s)success, blob_sizeUpload latency
fibre.client.upload.bytesCounter (By)Uploaded bytes, including row padding
fibre.client.upload.data_bytesCounter (By)Original data bytes, without padding or coding overhead
fibre.client.upload.network_bytesCounter (By)Bytes sent to all validators, including shard duplication
fibre.client.upload.signatures_collectedHistogramSignatures collected per upload
fibre.client.upload_to.durationHistogram (s)success, blob_size, validator_addressUpload duration per validator
fibre.client.upload_to.rpc_latencyHistogram (s)success, validator_addressUpload RPC network latency per validator
fibre.client.download.in_flightUpDownCounterConcurrent downloads
fibre.client.download.durationHistogram (s)success, blob_sizeDownload latency
fibre.client.download.bytesCounter (By)Downloaded bytes
fibre.client.download_from.durationHistogram (s)success, validator_addressDownload duration per validator
fibre.client.download_from.rpc_latencyHistogram (s)success, validator_addressDownload RPC network latency per validator

Server metrics

MetricTypeAttributesDescription
fibre.server.upload_shard.in_flightUpDownCounterConcurrent UploadShard RPCs
fibre.server.upload_shard.durationHistogram (s)success, upload_sizeUploadShard RPC latency
fibre.server.upload_shard.bytesCounter (By)Bytes received
fibre.server.download_shard.in_flightUpDownCounterConcurrent DownloadShard RPCs
fibre.server.download_shard.durationHistogram (s)success, shard_sizeDownloadShard RPC latency
fibre.server.download_shard.bytesCounter (By)Bytes sent
fibre.server.store.put.durationHistogram (s)successStore write latency
fibre.server.store.get.durationHistogram (s)successStore read latency
fibre.server.sign.durationHistogram (s)successPayment promise signing latency
fibre.server.prune.entriesCounterEntries pruned
fibre.server.prune.durationHistogram (s)successPrune cycle duration

Grafana dashboard

Import the release’s Fibre dashboard JSON  into Grafana. The dashboard expects a Prometheus data source with UID prometheus; use that UID or update the dashboard to match your data source. Client panels need telemetry from Fibre clients as well as the server.

Profiling with pprof

Enable the HTTP profiling server when you need to inspect CPU use, memory, goroutines, or contention:

fibre start --pprof

The default address is localhost:6060. To use a different local port:

fibre start --pprof=localhost:7070
EndpointDescription
/debug/pprof/Profile index
/debug/pprof/goroutineGoroutine stack traces
/debug/pprof/heapHeap memory allocations
/debug/pprof/allocsPast memory allocations
/debug/pprof/blockGoroutine blocking events
/debug/pprof/mutexMutex contention
/debug/pprof/profile30-second CPU profile
/debug/pprof/traceExecution trace

Mutex and block profiling start automatically with the pprof server, using mutex fraction 5 and block rate 1.

Continuous profiling with Pyroscope

Fibre can push profiles to a Pyroscope server. When tracing and Pyroscope are both enabled, goroutine labels include span IDs so Grafana can link traces to profiles. Profiles have version and hostname tags for filtering.

FlagEnvironment variableDefault
--pyroscope-endpointFIBRE_PYROSCOPE_ENDPOINTDisabled
--pyroscope-basic-auth-userFIBRE_PYROSCOPE_BASIC_AUTH_USERNone
--pyroscope-basic-auth-passwordFIBRE_PYROSCOPE_BASIC_AUTH_PASSWORDNone
fibre start --pyroscope-endpoint http://localhost:4040

For an endpoint that requires authentication:

fibre start \ --pyroscope-endpoint https://<pyroscope_host> \ --pyroscope-basic-auth-user <user_id> \ --pyroscope-basic-auth-password <api_key>

Troubleshooting

SymptomCheck
No metrics or tracesSet --otel-endpoint to the collector’s base URL, confirm it is reachable, and check that both signal pipelines are configured.
No client metrics on the dashboardEnable telemetry on the Fibre clients generating traffic; server telemetry only supplies server metrics.
No pprof endpointAdd --pprof to the start command and connect to its configured address on the Fibre host.
No continuous profilesCheck the Pyroscope endpoint, authentication values, and Fibre logs for export errors.

See the release’s observability reference  for more details.

Feel stuck? Go to our Discord!

Last updated on