Skip to Content

Fibre monitoring

This page covers observability in Fibre v10.4.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. The collector must accept both signals and forward them to your tracing and metrics backends. The celestia-app repository ships a reference collector configuration  and a Docker Compose stack  with Prometheus, Tempo, and Grafana that you can start from. The stack publishes Prometheus on host port 9090, which the setup guide uses for application gRPC. When running it on the validator host, change that mapping in docker-compose.yml, for example to 9091:9090.

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.

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. The same directory has a Fibre runtime dashboard  for Go runtime metrics such as memory and goroutines.

To verify the pipeline, start Fibre with --otel-endpoint set, open the Fibre dashboard, and confirm the server panels populate once uploads or downloads arrive. If they stay empty, work through the troubleshooting table.

Community dashboards

Use these community-maintained dashboards to monitor Fibre on Mocha:

DashboardWhat it monitors
Valopers Registered providers, host reachability, and validator endorsements.
Tensile by Huginn Tech Endpoint reachability, validator TLS identity, and whether validators serve their assigned blob rows during the retention window.

See Tensile’s methodology  for how observations and verdicts are calculated.

Metric reference

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.

Server metrics

MetricTypeAttributesDescription
fibre.server.upload_shard.in_flightUpDownCounter—Concurrent 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_flightUpDownCounter—Concurrent 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.entriesCounter—Entries pruned
fibre.server.prune.durationHistogram (s)successPrune cycle duration

fibre.server.sign.duration measures how long Fibre waits for payment promise endorsements. It is not the metric behind the 10 ms signing latency requirement; that is celestia-app’s cometbft_privval_signing_latency_*, see signing latency on the setup page.

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_flightUpDownCounter—Concurrent 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_collectedHistogram—Signatures 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_flightUpDownCounter—Concurrent 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

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