Skip to main content

Validator Operations

This guide covers the common operations you’ll perform when running a validator.

Starting and Stopping

Starting the Validator

If running as a systemd service:
sudo systemctl start agave-validator
If running manually:
agave-validator --config ~/validator.conf

Stopping the Validator

Always perform a graceful shutdown to avoid corruption and ensure proper tower state saving.
If running as a systemd service:
sudo systemctl stop agave-validator
If running manually, send SIGINT (Ctrl+C) or SIGTERM:
pkill -SIGTERM agave-validator
Wait for the validator to shut down gracefully. Check logs to confirm:
sudo journalctl -u agave-validator -f

Restarting the Validator

sudo systemctl restart agave-validator

Monitoring Status

Check Validator Status

View your validator in the gossip network:
solana gossip | grep $(solana-keygen pubkey ~/validator-keypair.json)
Check catchup status:
solana catchup $(solana-keygen pubkey ~/validator-keypair.json)
Expected output when caught up:
Slot: 12345678 (100.00% complete)
Your validator is caught up.

Monitor Vote Account

View your vote account details:
solana vote-account $(solana-keygen pubkey ~/vote-account-keypair.json)
This shows:
  • Current vote credits
  • Commission rate
  • Last vote slot
  • Root slot
  • Active stake

Check Block Production

View recent block production:
solana block-production
Filter to your validator:
solana block-production | grep $(solana-keygen pubkey ~/validator-keypair.json)

View Validator Balance

Check your validator identity balance:
solana balance ~/validator-keypair.json
Check vote account balance:
solana balance $(solana-keygen pubkey ~/vote-account-keypair.json)

Health Checks

RPC Health Check

If you’re running RPC, check health via HTTP:
curl -X POST -H "Content-Type: application/json" -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "getHealth"
}' http://localhost:8899
Expected response:
{"jsonrpc":"2.0","result":"ok","id":1}

Admin RPC Commands

The validator provides admin RPC commands for management. These require access to the admin RPC socket.

Check Contact Info

View your validator’s contact information:
agave-validator contact-info

Exit Validator

Gracefully exit the validator:
agave-validator exit
With forced exit:
agave-validator exit --force

Monitor Validator

Continuously monitor validator status:
agave-validator monitor

Process Health

Check if the validator process is running:
ps aux | grep agave-validator
Check system resource usage:
top -p $(pgrep agave-validator)

Log Management

View Logs

If using systemd:
sudo journalctl -u agave-validator -f
If logging to a file (specified with --log):
tail -f ~/validator.log

Filter Logs

Show only errors:
sudo journalctl -u agave-validator | grep ERROR
Show warnings:
sudo journalctl -u agave-validator | grep WARN
Search for specific terms:
sudo journalctl -u agave-validator | grep "vote"

Log Rotation

Systemd automatically handles log rotation. For file-based logs, configure logrotate. Create /etc/logrotate.d/agave-validator:
/home/sol/validator.log {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    copytruncate
}

Change Log Level at Runtime

You can adjust the log level without restarting:
agave-validator set-log-filter <FILTER>
Examples:
  • agave-validator set-log-filter info
  • agave-validator set-log-filter solana_core=debug
  • agave-validator set-log-filter solana_runtime::message_processor=trace,solana_runtime::system_instruction_processor=trace

Performance Monitoring

Check Ledger Size

du -sh ~/validator-ledger

Monitor Disk I/O

iostat -x 5

Monitor Network Usage

iftop
Or use:
nload

Check Memory Usage

free -h
Detailed process memory:
pmap -x $(pgrep agave-validator)

Ledger Maintenance

Limit Ledger Size

The --limit-ledger-size flag automatically maintains ledger size:
--limit-ledger-size 50000000
This keeps approximately 50 million shreds on disk.

Manual Cleanup

Only perform manual cleanup when the validator is stopped.
sudo systemctl stop agave-validator
rm -rf ~/validator-ledger/rocksdb
sudo systemctl start agave-validator
The validator will download the ledger from other validators on restart.

Snapshot Management

Configure Snapshots

Control snapshot generation with these flags:
--snapshot-interval-slots 500
--full-snapshot-interval-slots 25000
--maximum-full-snapshots-to-retain 5
--maximum-incremental-snapshots-to-retain 10

Disable Snapshots

To disable snapshot generation:
--no-snapshots

Updating the Validator

Update Process

  1. Build or download the new version
  2. Stop the validator
  3. Replace the binary
  4. Start the validator
cd ~/salsa
git pull
./cargo build --release
sudo systemctl stop agave-validator
sudo cp target/release/agave-validator /usr/local/bin/
sudo systemctl start agave-validator

Verify Update

Check the version:
agave-validator --version

Vote Account Management

Update Commission

solana vote-update-commission \
  $(solana-keygen pubkey ~/vote-account-keypair.json) \
  10 \
  ~/authorized-withdrawer-keypair.json

Withdraw from Vote Account

solana withdraw-from-vote-account \
  $(solana-keygen pubkey ~/vote-account-keypair.json) \
  <DESTINATION_ADDRESS> \
  <AMOUNT> \
  ~/authorized-withdrawer-keypair.json

Change Vote Authority

solana vote-authorize-voter \
  $(solana-keygen pubkey ~/vote-account-keypair.json) \
  ~/validator-keypair.json \
  <NEW_VOTER_PUBKEY>

Delinquency Recovery

If your validator becomes delinquent:
  1. Check network connectivity: Ensure your validator can reach other nodes
  2. Verify system resources: Check CPU, memory, and disk I/O
  3. Review logs: Look for errors or warnings
  4. Check catchup status: solana catchup $(solana-keygen pubkey ~/validator-keypair.json)
  5. Consider a restart: If the issue persists, restart the validator

Emergency Procedures

Force Stop

Only use in emergencies:
sudo killall -9 agave-validator

Reset Tower

Only reset tower state if instructed by the Harmonic team or during coordinated cluster restarts.
sudo systemctl stop agave-validator
rm ~/validator-ledger/tower-*.bin
sudo systemctl start agave-validator

Next Steps

Configuration

Explore advanced configuration options

Monitoring

Set up comprehensive monitoring

Troubleshooting

Troubleshoot common issues

Build docs developers (and LLMs) love