Add systemd and log rotation section to validator start docs (#12675)
* Add systemd and log rotation section to validator start docs * Update docs/src/running-validator/validator-start.md Co-authored-by: Trent Nelson <trent.a.b.nelson@gmail.com> * Update docs/src/running-validator/validator-start.md Co-authored-by: Trent Nelson <trent.a.b.nelson@gmail.com> Co-authored-by: Trent Nelson <trent.a.b.nelson@gmail.com>
This commit is contained in:
parent
aaf3790d8c
commit
fbb5e5c4e6
|
@ -257,25 +257,6 @@ solana-validator \
|
||||||
--log ~/solana-validator.log
|
--log ~/solana-validator.log
|
||||||
```
|
```
|
||||||
|
|
||||||
Lastly, to configure log rotation, please run the following:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Setup log rotation
|
|
||||||
|
|
||||||
cat > logrotate.sol <<EOF
|
|
||||||
~/solana-validator.log {
|
|
||||||
rotate 7
|
|
||||||
daily
|
|
||||||
missingok
|
|
||||||
postrotate
|
|
||||||
systemctl kill -s USR1 sol.service
|
|
||||||
endscript
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
sudo cp logrotate.sol /etc/logrotate.d/sol
|
|
||||||
systemctl restart logrotate.service
|
|
||||||
```
|
|
||||||
|
|
||||||
To force validator logging to the console add a `--log -` argument, otherwise
|
To force validator logging to the console add a `--log -` argument, otherwise
|
||||||
the validator will automatically log to a file.
|
the validator will automatically log to a file.
|
||||||
|
|
||||||
|
@ -306,3 +287,70 @@ the validator to ports 11000-11010.
|
||||||
|
|
||||||
The `--limit-ledger-size` argument will instruct the validator to only retain the
|
The `--limit-ledger-size` argument will instruct the validator to only retain the
|
||||||
last couple hours of ledger. To retain the full ledger, simply remove that arg.
|
last couple hours of ledger. To retain the full ledger, simply remove that arg.
|
||||||
|
|
||||||
|
|
||||||
|
### Systemd Unit
|
||||||
|
Running the validator as a systemd unit is one easy way to manage running in the
|
||||||
|
background.
|
||||||
|
|
||||||
|
Assuming you have a user called `sol` on your machine, create the file `/etc/systemd/system/sol.service` with
|
||||||
|
the following:
|
||||||
|
```
|
||||||
|
[Unit]
|
||||||
|
Description=Solana Validator
|
||||||
|
After=network.target
|
||||||
|
Wants=solana-sys-tuner.service
|
||||||
|
StartLimitIntervalSec=0
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
Restart=always
|
||||||
|
RestartSec=1
|
||||||
|
User=sol
|
||||||
|
LimitNOFILE=500000
|
||||||
|
LogRateLimitIntervalSec=0
|
||||||
|
Environment="PATH=/bin:/usr/bin:/home/sol/.local/share/solana/install/active_release/bin"
|
||||||
|
ExecStart=/home/sol/bin/validator.sh
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
```
|
||||||
|
|
||||||
|
Now create `/home/sol/bin/validator.sh` to include the desired `solana-validator`
|
||||||
|
command-line. Ensure that running `/home/sol/bin/validator.sh` manually starts
|
||||||
|
the validator as expected. Don't forget to mark it executable with `chmod +x /home/sol/bin/validator.sh`
|
||||||
|
|
||||||
|
Start the service with:
|
||||||
|
```bash
|
||||||
|
$ sudo systemctl enable --now sol
|
||||||
|
```
|
||||||
|
|
||||||
|
### Log rotation
|
||||||
|
|
||||||
|
The validator log file, as specified by `--log ~/solana-validator.log`, can get
|
||||||
|
very large over time and it's recommended that log rotation be configured.
|
||||||
|
|
||||||
|
The validator will re-open its when it receives the `USR1` signal, which is the
|
||||||
|
basic primitive that enables log rotation.
|
||||||
|
|
||||||
|
### Using logrotate
|
||||||
|
|
||||||
|
An example setup for the `logrotate`, which assumes that the validator is
|
||||||
|
running as a systemd service called `sol.service` and writes a log file at
|
||||||
|
/home/sol/solana-validator.log:
|
||||||
|
```bash
|
||||||
|
# Setup log rotation
|
||||||
|
|
||||||
|
cat > logrotate.sol <<EOF
|
||||||
|
/home/sol/solana-validator.log {
|
||||||
|
rotate 7
|
||||||
|
daily
|
||||||
|
missingok
|
||||||
|
postrotate
|
||||||
|
systemctl kill -s USR1 sol.service
|
||||||
|
endscript
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
sudo cp logrotate.sol /etc/logrotate.d/sol
|
||||||
|
systemctl restart logrotate.service
|
||||||
|
```
|
||||||
|
|
Loading…
Reference in New Issue