Log rotation for tendermint and BigchainDB using Monit

This commit is contained in:
Ahmed Muawia Khan 2018-09-10 10:29:30 +02:00
parent dd84d4eb6f
commit d8f5d72127

View File

@ -93,7 +93,7 @@ case \$1 in
start_bigchaindb) start_bigchaindb)
pushd \$4 pushd \$4
nohup bigchaindb -l DEBUG start >> \$3/bigchaindb.out.log 2>> \$3/bigchaindb.err.log & nohup bigchaindb -l DEBUG start > /dev/null 2>&1 &
echo \$! > \$2 echo \$! > \$2
popd popd
@ -110,6 +110,7 @@ case \$1 in
start_tendermint) start_tendermint)
pushd \$4 pushd \$4
nohup tendermint node --consensus.create_empty_blocks=false >> \$3/tendermint.out.log 2>> \$3/tendermint.err.log & nohup tendermint node --consensus.create_empty_blocks=false >> \$3/tendermint.out.log 2>> \$3/tendermint.err.log &
echo \$! > \$2 echo \$! > \$2
@ -129,13 +130,29 @@ exit 0
EOF EOF
chmod +x ${monit_script_path} chmod +x ${monit_script_path}
cat >${monit_script_path}_logrotate <<EOF
#!/bin/bash
case \$1 in
rotate_tendermint_logs)
/bin/mv \$2 \$2.\$(date +%y-%m-%d)
/bin/tar -cvf \$2.\$(date +%Y%m%d_%H%M%S).tar.gz \$2.\$(date +%y-%m-%d)
/bin/rm \$2.\$(date +%y-%m-%d)
kill -2 \$(cat \$3)
;;
esac
exit 0
EOF
chmod +x ${monit_script_path}_logrotate
# Handling overwriting of control file interactively # Handling overwriting of control file interactively
if [ -f "$monitrc_path" ]; then if [ -f "$monitrc_path" ]; then
echo "$monitrc_path already exists." echo "$monitrc_path already exists."
read -p "Overwrite[Y]? " -n 1 -r read -p "Overwrite[Y]? " -n 1 -r
echo echo
if [[ $REPLY =~ ^[Yy]$ ]]; then if [[ $REPLY =~ ^[Yy]$ ]]; then
echo "Overriding $monitrc_path/.monitrc" echo "Overriding $monitrc_path"
else else
read -p "Enter absolute path to store Monit control file: " monitrc_path read -p "Enter absolute path to store Monit control file: " monitrc_path
eval monitrc_path="$monitrc_path" eval monitrc_path="$monitrc_path"
@ -161,9 +178,17 @@ check process bigchaindb
check process tendermint check process tendermint
with pidfile ${monit_pid_path}/tendermint.pid with pidfile ${monit_pid_path}/tendermint.pid
start program "${monit_script_path} start_tendermint ${monit_pid_path}/tendermint.pid ${monit_log_path} ${monit_log_path}" start program "${monit_script_path} start_tendermint ${monit_pid_path}/tendermint.pid ${monit_log_path} ${monit_log_path}"
restart program "${monit_script_path} start_bigchaindb ${monit_pid_path}/bigchaindb.pid ${monit_log_path} ${monit_log_path}" restart program "${monit_script_path} start_tendermint ${monit_pid_path}/tendermint.pid ${monit_log_path} ${monit_log_path}"
stop program "${monit_script_path} stop_tendermint ${monit_pid_path}/tendermint.pid ${monit_log_path} ${monit_log_path}" stop program "${monit_script_path} stop_tendermint ${monit_pid_path}/tendermint.pid ${monit_log_path} ${monit_log_path}"
depends on bigchaindb depends on bigchaindb
check file tendermint.out.log with path ${monit_log_path}/tendermint.out.log
if size > 100 KB then
exec "${monit_script_path}_logrotate rotate_tendermint_logs ${monit_log_path}/tendermint.out.log $monit_pid_path/tendermint.pid"
check file tendermint.err.log with path ${monit_log_path}/tendermint.err.log
if size > 100 KB then
exec "${monit_script_path}_logrotate rotate_tendermint_logs ${monit_log_path}/tendermint.err.log $monit_pid_path/tendermint.pid"
EOF EOF
# Setting permissions for control file # Setting permissions for control file