$
[]
</>
$
{ }
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.

💡 Benvenuti nella guida definitiva per costruire il tuo sistema di monitoraggio automatico!

🚀 Obiettivo del “progetto”

Non serve essere esperti di Bash: spiegherò ogni singola riga, così anche chi è alle prime armi 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

Hai appena costruito un sistema di monitoraggio completo con solo uno script Bash!

✅ Leggero

✅ Automatico

✅ Personalizzabile

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



Edit page
Share this post on:

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