Solana Microscope: self-hosted program monitoring logoSolana Microscope: self-hosted program monitoring
just up. Grafana localhost:3000. Keep Yellowstone and Seer.
devrels.xyz/a/330Solana Microscope is self-hosted monitoring and alerting for Solana programs. It consumes confirmed transactions from Yellowstone gRPC or a polling JSON-RPC endpoint, decodes with Carbon, and exposes Prometheus, Loki, and Grafana. You run the stack. Solana Foundation does not host it or receive deployment data.
One deployment watches one program and, optionally, one Squads multisig (v3, v4, or Smart Account/v5). Raw program-log string matching is not supported. Alerts target decoded instructions, decoded events, or normalized Squads activity. MIT. Seer stays as the debugger.
Signals
| Signal | Record |
|---|---|
| Instruction | program_instruction |
| Event | program_event |
| Multisig | multisig_activity |
| Decode failure | event_decode_failure |
Decoder is compiled in. program_id and the IDL are build inputs. At startup the indexer refuses a config that names a different program or IDL. Run just generate after changing either. Teaching example in-repo: Jupiter Lend. Foundation does not operate it.
Local stack
git clone https://github.com/solana-foundation/solana-microscope.git
cd solana-microscope
cp microscope.toml.example microscope.toml
just upGrafana: http://localhost:3000. Metrics: :9090/metrics. Health: :9091/healthz and /readyz. Local Prometheus/Loki retention is 30 days unless PROMETHEUS_RETENTION overrides. Grafana reloads alert provisioning only at process start; just up recreates Grafana. Direct docker compose up can leave old rules.
Default datasource is Yellowstone (GEYSER_URL, optional GEYSER_X_TOKEN). Set RPC_URL so restarts and gaps past the replay window can be filled. RPC-only mode: mode = "rpc", poll interval 5s, replay window 300 slots in the example. Alerts: kinds event, instruction, multisig. Channels Slack, Telegram, PagerDuty. Names must match the IDL or a Squads action or startup rejects them.
Cloud
Terraform under infra/aws and infra/gcp. Grafana stays on VM loopback, reached over SSH (IAP or SSM, no public inbound). Pin repository_ref to a SHA in production. Prebuilt images: fork and run Publish Docker Image; one image, one program, one IDL. Kubernetes notes in docs/kubernetes.md. Grafana Cloud overlay exists; give each deployment its own token.
Resources
Keep reading
Point a Yellowstone client at a LaserStream region, pass the API key, subscribe. Helius runs the nodes, replay, and failover.
Self-hosted Metis router binary — github.com/jup-ag/metis-binary, metis.builders docs, BINARY_KEY + RPC + optional Yellowstone, local :8080 quote/swap.
Cold storage reduces malware risk; it does not invent randomness. Pick Solana-capable hardware, generate seeds on-device, and treat entropy like tier-0 security.
Get new articles in your inbox
Technical deep-dives on Solana tooling, infrastructure, and ecosystem. No noise.
