-
Notifications
You must be signed in to change notification settings - Fork 1k
feat(blob|state): Blob submission metrics #4549
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #4549 +/- ##
==========================================
- Coverage 44.83% 35.55% -9.29%
==========================================
Files 265 305 +40
Lines 14620 20502 +5882
==========================================
+ Hits 6555 7289 +734
- Misses 7313 12253 +4940
- Partials 752 960 +208 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Solid. Mainly one comment about metrics duplication. Also wonder if you tested this on Graphana, so we don't accidentally get nil ptr or a metrics that doesn work
yes tested locally on grafana. |
- Remove unsupported broadcast control options from bitswap - Add missing HashOnRead method to BlockstoreWithMetrics - Enable metrics flags in tastora framework for bridge and light nodes
The HashOnRead method is not part of the current boxo Blockstore interface
- Change nodeImage to use local celestia-node-local image - Update defaultNodeTag to use our commit 6bc2316 with metrics fixes
The interface check was failing because HashOnRead method was removed from the Blockstore interface
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- pls make sure go mods for our internal deps (celestiaorg) match what's on main branch (like don't update go-square)
- I'd prefer to do metric observations (time it took) in the helper methods themselves instead of inline in the submission code path as the submission code path is already extremely long and convoluted
Resolved conflicts in: - nodebuilder/header/config.go: Fixed return value in trustedPeers function - share/root.go: Fixed return value in RowsWithNamespace function - state/core_access.go: Kept metrics-related code from HEAD - state/core_access_test.go: Kept metrics parameter in NewCoreAccessor - nodebuilder/tests/tastora/go.mod: Used origin/main versions - nodebuilder/tests/tastora/go.sum: Used origin/main versions
- Fixed estimateGasForBlobs function call to match new signature - Properly declared author variable to avoid redeclaration - Maintained metrics functionality while fixing function signature changes
- Applied goimports-reviser formatting to all Go files - Fixed import grouping and ordering according to project standards - This addresses the lint-imports failures after the merge
- Reordered imports to match goimports-reviser expectations - Grouped imports: standard library, third-party, external project, local project - This resolves the lint-imports failure
- Fix duplicate // indirect comment in go.mod - Fix compilation error in state/core_access_test.go where accounts[0].Name was called on a string
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- Lint errors that need resolving
- thank you for adding grafana dashboard, I UTACK that
- might need to be rebased
- bunch of root level files that do not belong at root
- some of my comments re necessity of some of the metrics not addressed - pls let's not overbloat w unnecessary metrics.
cb476b3 to
c373bd9
Compare
|
closing in favor of #4664 |
Add Comprehensive Metrics for Blob Submission Path
Overview
This PR adds comprehensive OpenTelemetry metrics to track performance and behavior of the blob submission path in both the
blobandstatemodules. The metrics provide detailed insights into submission timing, error rates, gas estimation performance, and resource usage.What's Added
Blob Module Metrics (
blob/metrics.go)Note: Submission metrics are handled by the state module to avoid duplication.
State Module Metrics (
state/metrics.go)Key Metrics
Blob Metrics
Note: Blob submission metrics are tracked in the state module to avoid duplication.
State Metrics
How to Use
1. Enable Metrics in Node Configuration
# Start node with OTLP metrics enabled ./celestia bridge start --metrics --metrics.endpoint localhost:4318 --metrics.tls=false ./celestia light start --metrics --metrics.endpoint localhost:4318 --metrics.tls=false2. Set Up OTLP Collector (Required for Grafana)
Create
otel-collector-config.yaml:Run OTLP collector:
docker run -p 4318:4318 -p 8889:8889 -v $(pwd)/otel-collector-config.yaml:/etc/otel-collector-config.yaml otel/opentelemetry-collector-contrib:latest --config=/etc/otel-collector-config.yaml3. Query Metrics Endpoint
4. Monitor Specific Operations
5. Prometheus Integration
Add to your
prometheus.yml:6. Grafana Dashboard
Configure Grafana to use Prometheus datasource pointing to
http://localhost:8889Create dashboards to visualize:
7. Architecture Overview
Example Metrics Output
Note: Metrics are prefixed with
celestia_and include OpenTelemetry scope information when exported through the OTLP collector.Fixes #4538