Il progetto che prevedeva uno script bash per il monitoraggio, tramite crontab, delle risorse di un server Linux e l’invio di un alert al raggiungimento dei valori limite preimpostati, si è evoluto.
Vediamo nel dettaglio le nuove caratteristiche.
Il nuovo software, così come il vecchio, controlla lo stato del sistema per quanto riguarda l’utilizzo della CPU, della RAM e del disco, nonché il carico medio.
Quando viene raggiunta una delle soglie configurate, lo script genera un rapporto di allerta e invia una notifica via e-mail.
Le principali differenze, prensenti nell’ultima versione numerata 3.0.1, sono però due caratteristiche, a nostro avviso, molto interessanti:
Lo script ora supporta un file di configurazione esterno denominato system_monitor.conf, che si trova nella stessa directory di system_monitor.sh. Il file di configurazione predefinito viene caricato automaticamente, ma è anche possibile specificare un file personalizzato.
File di configurazione predefinito
Creare o modificare il file system_monitor.conf inserendo valori simili ai seguenti:
EMAIL_TO="alerts@example.com"
EMAIL_FROM="monitor@example.com"
SMTP_HOST="smtp.example.com"
SMTP_PORT=587
SMTP_USER="your_smtp_user"
SMTP_PASSWORD="your_smtp_password"
SMTP_TLS=on
SMTP_STARTTLS=on
CPU_LIMIT=90
RAM_LIMIT=80
DISK_LIMIT=90
LOAD_LIMIT=4
STATE_FILE="/tmp/monitor_sistema_html.state"
HIST_FILE="/tmp/monitor_sistema_storico.csv"
GRAPH_FILE="/tmp/monitor_sistema_grafico.png"
TOP_PROCESSES_LOG="/tmp/top_processes.log" Impostazioni disponibili
EMAIL_TO: indirizzo e-mail di destinazione per gli avvisi
EMAIL_FROM: indirizzo del mittente utilizzato negli avvisi
SMTP_HOST: host SMTP per l’invio dell’e-mail di avviso
SMTP_PORT: porta SMTP da utilizzare
SMTP_USER: nome utente SMTP
SMTP_PASSWORD: password SMTP
SMTP_TLS: utilizza TLS per connettersi al server SMTP (attivato/disattivato)
SMTP_STARTTLS: utilizza STARTTLS quando supportato (on/off)
CPU_LIMIT: soglia di utilizzo per CPU (%) da includere nel rapporto di avviso
RAM_LIMIT: soglia di utilizzo della RAM (%)
DISK_LIMIT: soglia di utilizzo del disco (%)
LOAD_LIMIT: soglia del carico medio
STATE_FILE, HIST_FILE, GRAPH_FILE, TOP_PROCESSES_LOG: sovrascritture opzionali del percorso
E’ possibile utilizzare un percorso di configurazione personalizzato con il comando:
bash system_monitor.sh --config /path/to/system_monitor.conf Oppure è possibile utilizzare la variabile d’ambiente MONITOR_CONF:
MONITOR_CONF=/path/to/system_monitor.conf bash system_monitor.sh E’ possibile eseguire lo script in modalità di prova e generare un avviso senza modificare lo stato del sistema:
bash system_monitor.sh --test Su Linux lo script legge i file /proc/stat e /proc/loadavg per ottenere i dati relativi alla CPU e al carico di sistema.
Su macOS utilizza comandi alternativi specifici per la piattaforma per ottenere informazioni sui processi e sul tempo di attività.
Se gnuplot non è installato, la generazione del grafico viene saltata con un avviso.
Se mutt non è disponibile, lo script prova a utilizzare sendmail come alternativa.
Oltre all’esecuzione tramite crontab della macchina, come descritto in precedenza, è possibile eseguire il software tramite container Docker.
Oltre che dal GiHub è possibile scaricare la build del software da Docker Hub
Per compilare l’immagine eseguire:
docker build -t tuxbashsysmonitor . Per eseguire il container con il file di configurazione montato:
docker run --rm \
-v “$PWD/system_monitor.conf:/app/system_monitor.conf:ro” \
-v /tmp:/tmp \
tuxbashsysmonitor --config /app/system_monitor.conf
Tutte le impostazioni SMTP e di avviso sono definite nel file system_monitor.conf; il container non richiede variabili d’ambiente SMTP.
Se il server SMTP utilizza un certificato autofirmato o un certificato che non corrisponde al nome host, è possibile disabilitare la convalida del certificato a scopo di test aggiungendo questa riga al file system_monitor.conf:
SMTP_TLS_CERTCHECK=off In alternativa a quanto visto fino ad ora, sempre in riferimento a Docker, è possibile utilizzarere docker-compose per eseguire il software:
docker compose up --build Il container esegue system_monitor.sh e utilizza il file system_monitor.conf montato.
Possiamo fare in modo che la larghezza delle celle di un foglio excel si adatti…
Portare un progetto editoriale sullo smartphone non significa necessariamente riscriverlo da zero. Con RicetteUmbre abbiamo…
Reading Time: 2 minutesMonitorare le risorse di un server o computer linux in modo semplice…
Reading Time: < 1 minuteEsclusione di una serie di prodotti selezionati tramite l'apposito menù e…
Reading Time: < 1 minuteNel video che vedete di seguito, a titolo di esempio, ho…
Reading Time: 2 minutesVediamo come è possibile fare il restart di php-fpm con capistrano dopo…