Overview
This guide covers deploying the Yellowstone gRPC Geyser plugin to a Solana validator. The plugin integrates with the validator’s Geyser interface to stream real-time blockchain data over gRPC.Prerequisites
Before deploying the plugin:- Build and install the plugin
- Configure the plugin
- Have a running Solana validator (Agave-based)
- Ensure the validator has sufficient resources for the plugin’s workload
Deployment Methods
Method 1: Command Line Flag
The simplest method is to pass the plugin configuration as a command-line argument when starting the validator.Start Validator with Plugin
Start your Solana validator with the This loads the plugin when the validator starts.
--geyser-plugin-config flag:Method 2: Systemd Service
For production deployments, integrate the plugin into your systemd service configuration.Edit Systemd Service File
Edit your validator’s systemd service file (usually located at
/etc/systemd/system/solana-validator.service):Add Geyser Plugin Flag
Add the
--geyser-plugin-config flag to the ExecStart line:Update the path to your actual config file location.
Verification
After deployment, verify the plugin is working correctly:Check gRPC Endpoint
Test that the gRPC server is listening:Check Prometheus Metrics
Verify the Prometheus endpoint is accessible:invalid_full_blocks_total: Count of failed block reconstructions- Connection and subscription metrics
- Message processing metrics
Test gRPC Connection
Use a gRPC client to test the connection. Here’s an example using grpcurl:If you have TLS enabled, omit the
-plaintext flag and add appropriate certificate options.Performance Tuning
CPU Affinity
Optimize performance by setting CPU affinity in your configuration:Channel Capacities
Adjust channel capacities based on your workload:Worker Threads
Set worker threads based on available CPU cores:Monitoring
Prometheus Metrics
The plugin exposes metrics at the configured Prometheus endpoint (default:http://localhost:8999/metrics).
Key metrics to monitor:
- invalid_full_blocks_total: Blocks that failed reconstruction
- active_subscriptions: Current number of active client subscriptions
- messages_sent_total: Total messages sent to clients
- messages_dropped_total: Messages dropped due to slow clients
Integration with Monitoring Systems
Configure Prometheus to scrape the metrics endpoint:Logging
Monitor logs for errors and warnings:Block Reconstruction
The plugin reconstructs full blocks from Geyser events. Be aware of the following: By default, failed block reconstructions are logged. You can change this behavior in the configuration:"log": Log an error and incrementinvalid_full_blocks_totalmetric"panic": Panic on reconstruction failure (use with caution)
Security Considerations
TLS Encryption
For production deployments, always enable TLS:Authentication
Enable token-based authentication to restrict access:x-token header.
Network Isolation
Bind to specific interfaces to limit exposure:Firewall Rules
Configure firewall rules to restrict access to the gRPC port:Troubleshooting
Plugin Fails to Load
If the plugin fails to load:- Check the library path in config.json
- Verify the .so file exists and is executable
- Check validator logs for error messages
- Validate configuration with config-check tool
gRPC Server Not Starting
If the gRPC server doesn’t start:- Check if the port is already in use:
netstat -tlnp | grep 10000 - Verify bind address is correct
- Check firewall rules
- Review logs for binding errors
High Memory Usage
If memory usage is high:- Reduce channel capacities in configuration
- Lower worker thread count
- Enable and tune filter limits to prevent abuse
- Monitor active subscriptions
Block Reconstruction Failures
If you see manyinvalid_full_blocks_total increments:
- Check validator logs for related errors
- Verify validator is synced and healthy
- Check if this is due to the known zero-entries issue
- Monitor system resources (CPU, memory, disk I/O)
Maintenance
Updating the Plugin
To update the plugin:Configuration Changes
To change configuration:- Validate the new configuration with config-check
- Stop the validator
- Update config.json
- Start the validator
- Verify the changes took effect
Next Steps
After deploying the plugin:- Learn about filters - Understand how to filter streamed data
- Explore client examples - See example implementations in various languages
- Review the gRPC API - Learn about available RPC methods