&&
#
#
&&
#
Go back

Script Bash per Monitorare il sistema con Telegram

Edit page

Script Bash per Telegram

Table of contents

Open Table of contents

Guida Completa al tuo System Monitor

Immagina di ricevere un messaggio su Telegram ogni volta che il tuo server inizia a surriscaldarsi, la RAM scoppia o il disco si sta riempiendo o inzia a fallare con la scrittura dei file.

E tutto questo senza installare software pesanti o dashboard complicate. Solo uno script Bash e un po’ di magia Linux.

Ecco come ho “costruito” il mio sistema di monitoraggio automatico!

Obiettivo del “progetto”

Non serve essere esperti di Bash: spiegherò ogni singola riga, così anche chi è alle prime armi come me, potrà capire come funziona.

💡 TROVI LO SCRIPT PRONTO AL DOWNLOAD SUL MIO REPO GITHUB

https://github.com/EnthusiastNewbie/MyLab/tree/main/Script_Server_Monitor

1. Cos’è e come funziona

Il “Server Monitor System” è un semplice script Bash che:

  1. Legge lo stato del tuo sistema (CPU, RAM, dischi, Docker, ecc.)
  2. Confronta i valori con delle soglie impostate
  3. Genera un report completo
  4. Lo invia su Telegram con emoji, icone e colori per rendere tutto più leggibile
  5. Salva un log su file per consultazioni future

📩 Tutto avviene in automatico, anche da cron (quindi puoi ricevere un report ogni ora, giorno o settimana).

Notifica Telegram

2. Configurazione di base

All’inizio dello script troviamo alcune variabili fondamentali:

TELEGRAM_TOKEN="INSERISCI QUI IL TUO TOKEN TELEGRAM"
CHAT_ID="INSERISCI QUI IL TUO CHAT ID"
NAS_PATH="/media/utente/HDD_NAS"
LOG_FILE="/home/utente/SCRIPT_REPORT_SERVER/server_report.log"

Cosa significano?

Consiglio: crea il file di log prima di lanciare lo script, con:

mkdir -p /home/utente/SCRIPT_REPORT_SERVER
touch /home/utente/SCRIPT_REPORT_SERVER/server_report.log

3. Impostazione soglie di allerta

CPU_THRESHOLD=85
DISK_THRESHOLD=90
RAM_THRESHOLD=90

Queste variabili servono per definire le soglie oltre le quali scatta un’allerta.

4. Icone e simboli

Nello script è presente una sezione delle emoji:

OK_ICON="✅"
WARN_ICON="⚠️"
ALERT_ICON="🔥"
DISK_ICON="💾"
CPU_ICON="🧠"
RAM_ICON="📊"
DOCKER_ICON="🐳"
TEMP_ICON="🌡️"

Servono solo a rendere il report più leggibile e simpatico, soprattutto su Telegram.

💬 5. La funzione di invio su Telegram

send_telegram_message() {
  local text="$1"
  curl -s -X POST "<https://api.telegram.org/bot$TELEGRAM_TOKEN/sendMessage>" \\
    -d chat_id="$CHAT_ID" \\
    -d parse_mode="Markdown" \\
    -d text="$text" > /dev/null
}

Cosa succede qui?

6. Funzioni di sistema

Ora arrivano le funzioni che leggono i dati reali dal sistema.

🔹 Uso della CPU

get_cpu_usage() {
  top -bn1 | grep "Cpu(s)" | awk '{print 100 - $8}'
}

Esempio: se la CPU è al 15% idle → l’utilizzo reale è 85%.

🔹 Uso della RAM

get_ram_usage() {
  free | awk '/Mem:/ {printf("%.0f", $3/$2 * 100)}'
}

🔹 Stato del disco

get_disk_usage_percent() { ... }
get_disk_free_gb() { ... }

Esempio: 87% di utilizzo → allerta se supera la soglia impostata.

🔹 Temperatura CPU

get_cpu_temp() {
  sensors | awk '/Package id 0:/ {print $4}' | head -n1
}

Richiede il pacchetto lm-sensors.

Ti mostra la temperatura della CPU, utile per capire se la ventilazione funziona.

🔹 Stato SMART dei dischi

smartctl -H /dev/sda

Utilizza il tool smartmontools per verificare la salute dei dischi.

Se il disco mostra “PASSED” → tutto ok ✅

Se mostra errori → è ora di fare un backup 😬

🔹 Processi più pesanti

ps -eo comm,%cpu --sort=-%cpu | awk 'NR>1 && NR<=6 {...}'

Elenca i 5 processi che stanno usando più CPU o RAM.

Molto utile per capire chi sta stressando il sistema.

🔹 Stato Docker

/usr/bin/docker ps -a --format "table {{.Names}}\\t{{.Status}}"

Controlla se i container sono Up o Offline.

Perfetto se usi Docker per servizi self-hosted.

🐳 Esempio: “nginx-proxy-manager — ✅ Online”


7. La funzione send_report

È il cuore dello script

Qui vengono chiamate tutte le funzioni precedenti, i valori vengono confrontati con le soglie e infine viene inviato il report.

8. Esecuzione manuale e automatica

Per testarlo subito:

bash server_monitor.sh

Se funziona, puoi programmarlo con cron:

crontab -e

E aggiungi ad esempio:

0 * * * * /home/utente/SCRIPT_REPORT_SERVER/server_monitor.sh

Questo comando invia un report ogni ora.

9. Log e analisi

Nel file server_report.log troverai una cronologia come questa:

22/10/2025 10:30:01 | CPU: 32 % | RAM: 58 % | Disco OS: 41 % | NAS: 70 % | CPU Temp: +47.0°C

Puoi aprirlo con catless, oppure usarlo per creare grafici nel tempo.

10. Strumenti usati

ComandoDescrizione
topMostra uso CPU in tempo reale
freeMostra RAM usata/disponibile
dfVisualizza spazio disco
sensorsTemperatura hardware
smartctlStato SMART dischi
psLista processi attivi
dockerStato container
curlInvio dati via HTTP (usato per Telegram)

11. Miglioramenti possibili

12. Conclusione

Ecco come ho “costruito” un sistema di monitoraggio completo con solo uno script Bash!

✅ Leggero

✅ Automatico

✅ Personalizzabile

Perfetto per homelab, VPS, mini server casalinghi o Raspberry Pi.


Ti è piaciuto l'articolo?

Lascia un commento, il tuo parere, i tuoi consigli... Partecipa alla Discussione sul Gruppo Telegram!!!

Unisciti al Gruppo Telegram

Segui i miei esperimenti qui:



Edit page
Share this post on:

Previous Post
UFW _ Uncomplicated Firewall su Linux
Next Post
Resuscito il mio vecchio Laptop grazie a Linux