onchainMay 7, 2026

How to build an observability pipeline for blockchain data infrastructure using OpenTelemetry. Covers metrics, logs, and traces for Solana trading bots and node operators to detect stale feeds and pipeline failures.

Blockchain Data Observability: When Your Data Pipeline Goes Offline

You’re running a Solana trading bot that depends on real-time, low-latency price feeds. Suddenly, your dashboard shows stale data from 5 minutes ago. Is it a network issue? An API problem? Did your application crash? Or is it just Solana’s network congestion? Without proper insight into what happened or where everything went wrong, you’re flying blind — which, in crypto, equals losing money. What’s more, you need to make sure that you are notified if this issue repeats itself.

Most blockchain developers running their own nodes either to trade, to build onchain data or sell it as service need extensive monitoring.Their business depends on guaranteed uptime SLAs, data accuracy, and operational resilience.

Traditional monitoring doesn’t cover this problem well. That’s where an observability pipeline comes in. Observability means building your system in a way that exposes enough signals (metrics, logs, traces) so you can tell what’s happening inside just by looking at the outputs.

The Solution: Real-Time Observability Pipeline

The answer to this problem is to monitor, trace, and track every step from a node ( or another data provider) to your database. Therefore, in this article, we will see how to build an observability pipeline that streams OHLC/K-line data + technical indicators (SMA/EMA) and USD volumes every second from Bitquery for both Solana and BSC. Here’s what makes it a good starting point:

Complete sample code is available here

The main application code is in sub_test.py, and the commands needed to run the code are in the README file.

Why This Matters: The Observability Gap

Observability bridges this gap, turning blind spots into actionable insights.

The Three Pillars of Observability: Metrics, Traces, and Logs

To understand observability and break it down into actionable tasks, you need to understand 3 things.

What is SigNoz, OTLP, and the OTel Collector?

Flow: App (OTel SDK) → OTLP/gRPC → OTel Collector → SigNoz (OTLP endpoint with ingestion key).

How the Observability Pipeline Works: Step-by-Step Flow

Below is a detailed flow showing how data flows from your application through OpenTelemetry SDK to Signoz observability platform, including the configuration needed.

Data Source

Ingestion App

Telemetry Pipeline

Dashboards

With data ingestion working, the next step is to turn raw counters into usable metrics and dashboards. This is where OpenTelemetry and SigNoz come in.

Flow: App (OTel SDK) → OTLP/gRPC → OTel Collector → SigNoz (OTLP endpoint with ingestion key).

Setting Up Your Observability Stack: Step-by-Step Configuration

  1. Sign up for SigNoz.
  2. Obtain your OTLP endpoint and signoz-ingestion-key — this key uniquely tags the metrics your application emits. Keep your SIGNOZ_INGESTION_KEY secret; inject via env vars or a secret manager.
  3. Configure your OTel Collector to forward these metrics to SigNoz. Sample config_sample.yml is available in the repository.

How it’s monitored (driven by the code)

Our application, implemented in sub_test.py, exposes a set of metrics on message count, and errors that maps cleanly to dashboards and alerts. This is a sample that shows how to use an open source solution to monitor your solution that relies on onchain data.

Setting up Bitquery Price Streams

We will be using two graphQL streams; one for Solana and one for BSC. Run Stream on Bitquery IDE

Code sample to setup a websocket is here. The implementation in sub_test.py demonstrates how to connect to Bitquery’s WebSocket streams and handle subscriptions.

Metrics emitted

To first understand what metrics are available in the OpenTelemetry SDK, you can look it up here

Volume & Rate

Reliability

Freshness probe (internal)

Why this works

Building Actionable Dashboards: What to Monitor and Why

1) Price Feed Messages (5–10 min window)

Am I receiving the expected message rate from each chain?

2) Message Increase (Short Window Burst View)

Did my pipeline keep up during a spike, or did it stall?

3) Reliability

Is the problem on my side, or is the provider/network unstable?

4) Cross-Chain Comparison

Is this failure isolated to Solana as a result of high TPS, or does it affect both chains?

Setting Up Smart Alerts: When and Why to Get Notified

To fix any out-of-the-normal situations, we need to setup alerts that are triggered based on certain conditions. Detailed docs on each type of alert is available here

  1. No new messages (freshness)

    • Condition: increase of bitquery.<network>.messages ≤ 0 for 5 mins
    • Action: Page; annotate dashboard
  2. Error burst

    • Condition: rate of bitquery.<network>.errors > 0.5/s for 2 min
    • Action: Slack + issue
  3. Flapping connections

    • Condition: delta of bitquery.<network>.connections3 in 10 min
    • Action: Investigate upstream or network path

These three cover data stops, bad data risk, and transport instability.

Operating it

The main application logic is in sub_test.py. Key implementation details:

For installation and setup instructions, see the README and commands files. Dependencies are listed in requirements.txt.

Monitoring Post-Upgrade Network Health

Blockchain teams and governance members often vote on new improvements that improve transaction latency or propagation mechanism. For example, the recent Alpenglow upgrade on Solana introduces Rotor, a single-layer relayer system that replaces Turbine’s multi-hop block propagation. Rotor reduces propagation time and variability, so validators receive blocks almost simultaneously. For data teams, that translates to:

Now how do we see the visual result? Expect smoother lines, quicker recovery after bursts, and fewer alert false positives tied to propagation delays.

What the charts told us

Final Thoughts

We started with a problem: trading bots running on stale data with no visibility into what’s happening. We’ve solved it with an observability pipeline that monitors the application’s blockchain data ingestion. For the onchain data that feeds these pipelines, see Using Onchain Trades to Identify Regime Changes and TRON Node Gossip Simulation.

What You Now Have:

Ready to Test: The complete codebase is available at GitHub.

Explore the code:

Questions? Issues? Contributions? Open an issue or PR on the repository.


Learn More

New to blockchain data? Check out the Beginner’s Guide to Blockchain Data: How to Get Started with the Basics ebook for a comprehensive introduction to working with onchain data, APIs, and building your first blockchain data pipelines.

Understanding Solana vs EVM differences? Explore the Solana vs EVM: Data Structures - Complete Guide ebook for a detailed breakdown of how Solana and EVM chains (Ethereum, BNB, etc.) differ in their transaction execution and data structures.


Read more from Cryptogrammar