Come ricevere “Avvisi in tempo reale” per monitorare il tuo nodo validatore Avalanche

Listo76
Avalanche Hub
Published in
8 min readOct 4, 2020

La mainnet di Avalanche è stata lanciata il 21 settembre 2020. Adesso che oltre 700 nodi validatori sono attivi, è il momento di configurare un meccanismo di avviso “real time” che invia delle notifiche utilizzando un Bot Telegram, per avvisarci se c’è qualche malfunzionamento.

NOTA: con la release di avalanchego versione 1.6.1 è stata aggiornata l’API health, quindi è necessario aggiornare anche lo script per fare funzionare correttamente il bot. Le nuove installazioni includono già il fix, mentre per le installazioni effettuate in precedenza, occorre eseguire i seguenti comandi dalla console/shell del tuo server:

# andare alla directory home
cd
# andare alla directory telegram-monitor-scripts
cd telegram-monitor-scripts
# aggiornare lo script, comando da eseguire su una singola riga
sed -i 's/health.getLiveness/health.health/g' check_avalanchego_status.sh

Spiegherò come fare per creare un Bot personalizzato e per installare un piccolo script sul sistema operativo Ubuntu che invierà delle notifiche in tempo reale mediante Telegram se si verificano le seguenti:

  • il processo avalanchego risulta inattivo o non funzionante
  • il consumo della CPU è elevato.

Recentemente una delle domande più frequenti sui canali Discord e Telegram di avalanche è:

Come posso sapere immediatamente se il processo avalanchego si è interrotto, se è corrotto o se c’è un elevato consumo di CPU dovuto a qualcosa che non va sul mio nodo validatore?

Beh, ecco come fare, spiegherò come creare il tuo Bot personalizzato e come installare un piccolo script con pochi comandi, configurarlo e usarlo.

Perché Telegram? Telegram è uno dei programmi più utilizzati per la messaggistica istantanea ed è noto per la possibilità di avere Bot che interagiscono con l’utente privatamente o all’interno di gruppi. Iniziamo con Telegram BotFather, che è l’unico Bot che li governa tutti. Puoi usarlo per creare nuovi account Bot e gestire i tuoi Bot esistenti.

Creare il tuo Bot Telegram:

1. Apri Telegram, ed inserisci “@Botfather” nella scheda di ricerca e scegli il Bot in foto. Nota, i Bot ufficiali di Telegram hanno un segno di spunta blu accanto al loro nome.

Fare clic su “Start” per attivare BotFather.

2. Scegli il comando/newbot e invialo come un qualsiasi messaggio. Oppure digita semplicemente il comando /newbot e segui le istruzioni fornite da BotFather.

3. Scegli un nome per il tuo Bot. Ad esempio il mio è “ testavalanchego” .

4. Adesso scegli un nome utente per il tuo Bot: potrai poi cercarlo utilizzando il suo nome utente. Il nome utente deve essere univoco e terminare con la parola “bot” non puoi mettere un nome che non rispetti queste condizioni.

5. Dopo aver inviato il nome scelto, sarà mostrato il tuo TOKEN con un messaggio di congratulazioni.

NOTA : copia il codice del tuo TOKEN, è la parte subito dopo “ HTTP API:” . Ci servirà in seguito

Dopo aver scelto un nome adatto, il tuo Bot verrà creato. Riceverai un messaggio con un collegamento al tuo Bot tipo “t.me/<bot_username>”, dei consigli per impostare un’immagine del profilo, una descrizione e un elenco di comandi per gestirlo.

Iniziamo a comunicare con il bot. Inserisci il nome del tuo Bot (il mio è testavalanchego ) nella campo di ricerca e selezionalo

fai clic sul pulsante “Start” ed inizierai subito ad interagire con il tuo Bot.

agisci sul pulsante Start, oppure usa il comando /start

Abbiamo già l’ID del TOKEN. Otteniamo anche l’ID CHAT, perché daremo, questi 2 parametri obbligatori, come input al nostro script per ricevere avvisi dal nostro nodo validatore.

Accedi al tuo server. Prima installa l’utility “jq”, imposta la variabile TOKEN e tramite il comando curl ottieni il tuo ID chat come mostrato di seguito:

# install jq 
sudo apt-get install jq -y
# Set TOKEN variable
TOKEN=1386633333:AAHAAAAAAAA-afV-oAAAAAAAAAAAAAAAAAA914s8
# Get CHAT_ID
curl -s https://api.telegram.org/bot$TOKEN/getUpdates | jq .result[0].message.chat.id
10522222228

Ad esempio, l’ID della chat relativa al mio bot è CHAT_ID: 10522222228

Se non riesci a ottenere l’ID della tua chat, riprendi nuovamente la chat con il tuo bot, e digita nuovamente il comando start, quindi esegui di nuovo il comando curl. Non è un problema se esegui il comando Start più volte.

Installazione del nostro script di monitoraggio

Lo script di monitoraggio verifica i seguenti ogni minuto:

  • che il processo avalanchego sia attivo e funzionante,
  • che il processo avalanchego non sia corrotto,
  • che l’utilizzo della CPU sia sotto la soglia impostata (la soglia predefinita è 40%).

Lo script di monitoraggio Avalanchego è sviluppato su misura ed ha 2 parametri obbligatori e 2 parametri opzionali:

  • i parametri obbligatori sono TOKEN e CHAT ID;
  • quelli opzionali sono la soglia della CPU e l’IP.

Molti validatori hanno indirizzo IP 127.0.0.1 per ottenere le loro chiamate API. Se fai lo stesso, quindi non devi cambiare il parametro IP, il valore predefinito è 127.0.0.1. Il valore di soglia della CPU predefinito è 40%. Se vuoi puoi cambiarlo con qualsiasi valore tu voglia. Non dimenticare di utilizzare 2 cifre decimali, per esempio 50.00 oppure 75.90 ecc.

Fasi di installazione

1) Accedi al tuo server, vai alla tua “Home Directory” tramite il comando cd:

# vai alla home directory 
cd

2) Scarica il nostro script di monitoraggio con “git clone” e accedi alla directory degli script:

# Git clone:git clone https://github.com/burcusan/telegram-monitor-scripts.gitcd telegram-monitor-scripts

3) Installa lo script con il comando “install_avax_monitor.sh”, ed inserisci i parametri obbligatori TOKEN ed CHAT ID:

# Esempio:

# Comando:./install_avax_monitor.sh -t <YOUR TELEGRAM TOKEN> -c <YOUR TELEGRAM CHAT ID># Esempio:./install_avax_monitor.sh -t 13031231111111AAEx-kIC9E1237L111111111123ongZ3_c-g -c 10522222228

Se desideri utilizzare i parametri predefiniti per la soglia della CPU del 40% e l’IP della chiamata API con 127.0.0.1, vai direttamente al passaggio successivo (4).

Se si desidera modificare il valore di soglia della CPU predefinito, è possibile farlo digitando i comandi come di seguito:

# Comando:./install_avax_monitor.sh -t <YOUR TELEGRAM TOKEN> -c <YOUR TELEGRAM CHAT ID> -p <CPU THRESHOLD># Esempio:./install_avax_monitor.sh -t 13031231111111AAEx-kIC9E1237L111111111123ongZ3_c-g -c 10522222228 -p 50.00

Se si avvia il processo di avalanchego con “- http-host =” , l’ IP della chiamata API probabilmente sarà diverso da quello predefinito 127.0.0.1. Controlla se hai un IP diverso da 127.0.0.1 per le tue chiamate API, puoi impostare l’IP con il comando seguente:

# Comando:./install_avax_monitor.sh -t <YOUR TELEGRAM TOKEN> -c <YOUR TELEGRAM CHAT ID> -i <IP>#Esempio:./install_avax_monitor.sh -t 13031231111111AAEx-kIC9E1237L111111111123ongZ3_c-g -c 10522222228 -i 33.44.55.xxx

Oppure, se lo desideri, puoi modificare i parametri CPU e IP con un solo comando:

# Comando:./install_avax_monitor.sh -t <YOUR TELEGRAM TOKEN> -c <YOUR TELEGRAM CHAT ID> -p <CPU THRESHOLD> -i  <IP>

# Esempio:
./install_avax_monitor.sh -t 13031231111111AAEx-kIC9E1237L111111111123ongZ3_c-g -c 10522222228 -p 50.00 -i 33.44.55.xxx

4-) Verifica che lo script funzioni come mostrato di seguito:

./check_avalanchego_status.sh > check_avalanchego_status.logcat check_avalanchego_status.log# Esempio Output : 
>>>> : Fri Oct 2 15:20:30 +03 2020
>>>> : TOKEN=<TELEGRAM TOKEN>
>>>> : CHAT_ID=<CHAT ID>
>>>> : HTTP_CODE= 200
>>>> : CURL_STATUS= 0
>>>> : FILE= /tmp/tmp_check_Avalanchego
>>>> : Avalanchego node is running!
>>>> : Fri Oct 2 15:20:30 +03 2020 - [INFO]
Avalanchego node is healthy ! - health.getLiveness result.healthy=true hostname=oracl
>>>> : true
>>>> : CPU_LOAD=2.28
>>>> : CPU_LOAD_CRITICAL=40.00

5) Ora verifica che l’installazione sia ok, invia al tuo bot di Telegram un messaggio di prova come mostrato di seguito:

./check_avalanchego_status.sh test >>>>: Fri Oct 2 16:25:53 +03 2020 - [TEST] [TEST] 
Avalanchego node TEST message !!! ..

Esempio di messaggio di prova:

Esempio di messaggio di alert:

Esempio di messaggio ALERT RISOLTO:

Quando la soglia della CPU viene superata, riceverai un avviso e quando tornerà alla normalità, riceverai un altro messaggio come mostrato di seguito:

CONCLUSIONE

Il nostro script ti avviserà se il tuo nodo non è attivo, non è integro o l’utilizzo della CPU è superiore al 40% come da impostazione predefinita, o al valore personalizzato scelto, e ti avviserà quando il problema sarà risolto. Lo script controllerà l’esecuzione del nodo ogni minuto ma non invierà un avviso ogni volta. Invierà un messaggio di avviso con il tag [ALERT FIRING] al BOT Telegram se il problema persiste per:

1 minuto, 5 minuti, 15 minuti, 30 minuti, 1 ora, 2 ore, 6 ore, 12 ore, 24 ore.

Quindi riceverai un numero massimo di 8 avvisi in 1 giorno se il problema persiste. Dopo aver inviato l’ottavo messaggio, lo script interrompe l’invio di ulteriori messaggi ALERT_FIRING; adesso è responsabilità del proprietario del nodo risolvere il problema. Non si vogliamo inondare di messaggi i proprietari dei nodi validatori, ne tantomeno si vogliono creare allarmi “falsi positivi”. Ma poiché lo script controlla continuamente, ogni minuto, se il problema è risolto, lo script invia immediatamente il messaggio [AVVISO RISOLTO] all’utente senza aspettare oltre.

Se esegui con successo tutti i passaggi, lo stato di integrità/up-down del tuo nodo validatore Avalanche e l’utilizzo della CPU del tuo server verranno controllati ogni minuto.

Se lo script riceve un errore durante la chiamata API “/ext/health”, se il tuo nodo non è in esecuzione in modo corretto, o se l’utilizzo della CPU è elevato, riceverai un avviso tramite il tuo bot Telegram. E quando viene ripristinato il corretto funzionamento, e questi controlli vengono verificati ed ottengono un esito positivo, riceverai anche una notifica.

PS — Se non vuoi ricevere ulteriori avvisi

Se non vuoi più ricevere avvisi tramite il Bot Telegram, rimuovi semplicemente la riga relativa allo script nel tuo file crontab. Per accedere al file crontab esegui il comando crontab -e e rimuovi o commenta (inserendo # all’inizio della riga) la riga in questione, come mostrato di seguito:

#usa questo comando per aprire il file crontab
crontab -e
#quindi inserisci # all'inizio delle seguente riga
# * * * * * /home/username/telegram-monitor-scripts/check_avalanchego_status.sh>
/home/username/telegram-monitor-scripts/check_avalanchego_status.log 2>&1

Mantieni il tuo nodo Avalanche sicuro e sano :-)

Articolo originariamente pubblicato da burcusan, grazie per questo utilissimo contributo da parte di tutti i node runners che lo utilizzeranno!

A proposito di Avalanche

Avalanche è una piattaforma open source per il lancio di applicazioni finanziarie decentralizzate e per distribuire blockchain aziendali in un ecosistema interoperabile e altamente scalabile. Gli sviluppatori che utilizzano Avalanche possono facilmente creare applicazioni performanti, affidabili e sicure e blockchain personalizzate con set di regole complesse o basarsi su sotto reti pubbliche o private esistenti.

Telegram Avalanche Italia | Twitter Avalanche Italia |Sito Web|Whitepaper | Twitter | Discord | GitHub | Documentazione | Explorer | Avalanche-X | Telegram | Facebook | LinkedIn | Reddit | YouTube

--

--