Monitorer l'execution de duniter/node avec l'outil monit

J’ai installé duniter depuis les sources sur un rock64pro (armbian bullseye).

Celui-ci s’arrête de fonctionner au bout de quelques jours, j’ai donc mis en place un petit outil de surveillance : monit (Monit Manual). Celui-ci relance le nœud en cas de crash.

Pour ceux que cela peut intéresser et qui souhaitent éventuellement améliorer les scripts, voici mes fichiers de configuration, l’adresse ip de l’hôte, l’e-mail sont à paramétrer :

1) $HOME/bin/g1start.sh

#!/usr/bin/bash
DIR=« cd $HOME/duniter »
PROGRAM=« ./target/release/duniter »
NVM_BIN=$HOME/.nvm/versions/node/v10.22.1/bin
. « $HOME/.cargo/env »
export PATH=$PATH:/usr/sbin:/sbin
export NVM_DIR=« $HOME/.nvm »
[ -s « $NVM_DIR/nvm.sh » ] && . « $NVM_DIR/nvm.sh »

$DIR && $PROGRAM webstart --webmhost $IPADRESS
sleep 30
echo /usr/bin/pidof node | /usr/bin/sudo /usr/bin/tee /var/run/node.pid

2) $HOME/bin/g1stop.sh
#!/usr/bin/bash
DIR=« cd $HOME/duniter »
PROGRAM=« ./target/release/duniter »
NVM_BIN=$HOME/.nvm/versions/node/v10.22.1/bin
. « $HOME/.cargo/env »
export PATH=$PATH:/usr/sbin:/sbin
export NVM_DIR=« $HOME/.nvm »
[ -s « $NVM_DIR/nvm.sh » ] && . « $NVM_DIR/nvm.sh »
$DIR && $PROGRAM stop
sleep 5
$DIR && $PROGRAM stop
sleep 5
/usr/bin/killall -9 node

3) /etc/monit/conf.d/node.conf
#;# remplacer $HOME avec le chemin
#;# remplacer $uid avec le user
#;# remplacer $gid avec le groupe

check process node with pidfile « /var/run/node.pid »

start program = "/usr/bin/bash -c $HOME/bin/g1start.sh" as uid $uid and gid $gid with timeout 60 seconds
stop  program = "/usr/bin/bash -c $HOME/bin/g1stop.sh"  as uid $uid and gid $gid with timeout 60 seconds

alert email@mondomaine.com with mail-format {
       from: monit@mondomaine.com
    subject: monit alert: $SERVICE $EVENT $DATE
    message: $DESCRIPTION
}

if failed host $IPADDRESS port 9220 protocol http request "/" with timeout 60 seconds then restart