Home » Blog » IT Solutions » Monitoraggio Spazio occupato dal CRM tramite uno script bash

Monitoraggio automatico dello spazio del tuo CRM

Provate a immaginare questa scena: mancano cinque minuti al termine della vostra giornata lavorativa; siete stanchi ma soddisfatti. Vi accingete a chiudere i progetti, quando cominciate a ricevere decine di chiamate da utenti nel panico perché non riescono più a salvare i dati sul CRM. Alcuni riportano errori, altri hanno schermata bianca, altri ancora non riescono a salvare sul database. Tutti riversano su di voi la loro frustrazione e vi intimano a trovare una soluzione. Subito. Un film di final destination? Quasi. Alcuni di voi si chiederanno a cosa sia dovuto questo caos, altri, invece, conoscono già la risposta: è terminato lo spazio “sul CRM”.

Una delle ragioni fondamentali per implementare un sistema CRM nella propria azienda è poter tenere custodite le migliaia di informazioni utili alla gestione dei propri clienti, ma allo stesso tempo salvare continuamente dati porterà prima o poi ad esaurire lo spazio utile. E il buon Murphy insegna che succederà sempre nel momento meno opportuno.
Non è fattibile, sopratutto per realtà di cospicue dimensioni, controllare manualmente quanto margine rimane, ma è qui che fa la differenza rivolgersi a professionisti che cuciono sistemi informatici “su misura” .

Uno script Bash per IT Manager

Ogni IT Manager che gestisce un CRM self-hosted sa quanto sia importante monitorare lo spazio occupato dal database e dai file del sistema. Tuttavia, farlo manualmente può richiedere tempo e portare a errori. In questo articolo presentiamo una soluzione semplice ed efficace: uno script Bash che controlla automaticamente lo spazio occupato da file e database, genera un report in HTML e invia un’email di alert quando vengono superate le soglie impostate.

Lo script Bash

Di seguito riportiamo lo script completo (con i dati sensibili rimossi). Può essere salvato in un file, ad esempio /home/ubuntu/check_web_and_db.sh, e schedulato tramite cron.

#!/bin/bash

# === CONFIG ===
MYSQL_USER="<tuo_utente_mysql>"
MYSQL_PASSWORD="<tua_password_mysql>"
MYSQL_HOST="localhost"
ALERT_EMAIL="<tua_email_alert>"
GLOBAL_THRESHOLD=150   # totale complessivo in GB

# --- Target singoli (non aggregati) ---
TARGETS=(
"crm1.dominio.it|crm1_db|1"
"crm2.dominio.it|crm2_db|1"
)

# --- Aggregati (soglia|site:db,site:db,...) ---
AGGREGATES=(
"70|crm-demo.dominio.it:crm_demo_db,crm-prod.dominio.it:crm_prod_db"
)

LOG_FILE="/home/ubuntu/check_web_and_db.log"
START_TIME=$(date '+%Y-%m-%d %H:%M:%S')
echo "=== Esecuzione Check Web&DB - $START_TIME ===" >> "$LOG_FILE"

TOTAL_FOLDER=0
TOTAL_DB=0
TOTAL_SUM=0
ALERT=0

# === HTML REPORT INIT ===
HTML="<html><body style='font-family:Arial,sans-serif;'>"
HTML+="<h4>📊 Report utilizzo spazio - $(hostname)</h4>"
HTML+="<table border='1' cellpadding='6' cellspacing='0' style='border-collapse:collapse;'>"
HTML+="<tr style='background-color:#f2f2f2;'>
        <th>Sito</th><th>Database</th><th>Cartella (GB)</th>
        <th>Database (GB)</th><th>Totale (GB)</th><th>Spazio Totale da Contratto</th><th>Stato Soglia 80%</th><th>Stato Soglia 90%</th>
      </tr>"

# --- Esecuzione controlli e costruzione tabella ---
# (Contiene la logica per sommare spazio file + DB, verificare soglie e generare HTML)

# === INVIO EMAIL ===
# Invia un'email HTML all'IT Manager tramite msmtp

Come funziona

  1. Rilevamento spazio cartelle: lo script usa du -sBG per calcolare le dimensioni delle directory CRM.
  2. Rilevamento spazio database: viene eseguita una query SQL su information_schema.tables per sommare lo spazio usato dalle tabelle.
  3. Aggregazione: se più istanze o database fanno parte di un unico contratto, i loro valori vengono sommati prima di verificare le soglie.
  4. HTML report: lo script genera un file HTML ben formattato, con colori e indicatori di soglia.
  5. Alert automatico: se una soglia (80% o 90%) viene superata, invia un’email di allerta all’indirizzo specificato.

Invio del report via email

Per l’invio automatico, lo script utilizza msmtp come client SMTP, che permette di spedire email in modo sicuro. Puoi configurarlo con un server SMTP aziendale o un account dedicato (ad esempio support@dominio.it).

Pianificazione automatica con CRON

Per automatizzare il controllo giornaliero, aggiungi questa riga al file /etc/crontab:

35 23 * * * root /home/ubuntu/check_web_and_db.sh

Log di controllo

Ogni esecuzione viene registrata nel file /home/ubuntu/check_web_and_db.log, con data, ora e risultato del check.

Sicurezza

  • Evita di scrivere le password MySQL in chiaro nel file.
  • Puoi salvarle in un file protetto (~/.my.cnf) o utilizzare variabili d’ambiente.
  • Proteggi i log e limita i permessi di lettura allo script.

Conclusione

Con questo script, ogni IT Manager può monitorare in autonomia e in modo proattivo lo spazio occupato dal proprio CRM, ricevendo notifiche puntuali e report leggibili via email. Un piccolo strumento, ma di grande impatto operativo per la gestione dei sistemi CRM basati su SuiteCRM o altre piattaforme open source.

Sviluppato e condiviso da Lion Solution — Partner ufficiale di SalesAgility per SuiteCRM in Italia.