Monitoraggio e Avvisi PrestaShop (DataFirefly Monitor)
Installare il modulo, pianificare il cron, configurare i canali di avviso e capire ogni rilevamento.
DataFirefly Monitor sorveglia il tuo negozio PrestaShop 8 o 9 in continuo e ti avvisa quando va offline, si blocca, rallenta o smette di incassare. Questa documentazione copre l’installazione, il task cron, i canali di notifica, ogni rilevamento e la gestione degli avvisi.
Installazione
- Nel back office, apri Moduli > Gestione moduli, clicca su Carica un modulo e invia il file
dfmonitor-1.1.0.zip. - Il modulo crea le sue tabelle e una scheda Parametri avanzati > Monitoraggio e avvisi. Il pulsante Configura del modulo porta direttamente lì.
- All’installazione, l’email del negozio è usata come destinatario e lo stato Errore di pagamento è selezionato come stato di errore. I log di PrestaShop precedenti all’installazione non vengono importati.
Il modulo è compatibile con PrestaShop da 8.0 a 9.x, multinegozio e multilingua. Non usa dipendenze Composer. L’aggiornamento dalla 1.0.0 si fa caricando il nuovo ZIP: lo script di aggiornamento aggiunge le nuove colonne e compila l’origine degli errori già registrati.
Primi passi
La dashboard mostra una lista di avvio in quattro passaggi finché non è completata: ricevere una prima notifica, aggiungere il task cron, verificare gli stati di pagamento fallito, aggiungere un heartbeat esterno. Ogni passaggio porta alla scheda di impostazioni giusta.
Task cron
Errori fatali e pagamenti falliti sono segnalati in tempo reale. Il resto (disponibilità, tempo di risposta, pagamenti, ordini, server, report) è valutato da un task pianificato che deve girare ogni 5 minuti.
Cron del server (consigliato)
*/5 * * * * php /percorso/di/prestashop/modules/dfmonitor/cron.php
Il comando esatto, con il percorso del tuo server, è mostrato in Impostazioni > Controlli pianificati con un pulsante Copia.
Cron tramite URL
Se il tuo hosting consente solo cron web, chiama l’URL protetto da token mostrato nella stessa scheda, dal pannello di hosting o da un servizio come cron-job.org. Risponde in JSON e funziona anche con il negozio in manutenzione. Il pulsante Genera un nuovo token invalida l’URL precedente.
Senza cron
Con PHP-FPM, l’opzione di riserva senza cron avvia i controlli tramite il traffico dei visitatori quando nessun cron è partito da 10 minuti, dopo l’invio della pagina. Il controllo di disponibilità e l’heartbeat non girano in questa modalità, e un guasto notturno può passare inosservato senza visite.
Heartbeat esterno
Il modulo non può segnalare un guasto totale del server. Crea un check su Healthchecks.io o Better Stack e incolla il suo URL in URL di heartbeat: viene chiamato a ogni esecuzione del cron e il servizio ti avvisa se non riceve più chiamate.
Canali di notifica
Attiva tutti i canali che vuoi in Impostazioni > Canali di notifica. Ogni canale ha una gravità minima (avviso e critico, o solo critico) e un pulsante Salva e invia una prova che salva il modulo e poi invia un messaggio reale. Il risultato dell’ultimo invio è mostrato sotto il nome del canale.
Inserisci uno o più destinatari separati da virgole. Le email usano la configurazione email di PrestaShop (Parametri avanzati > E-mail) e la lingua predefinita del negozio.
Telegram
- In Telegram, apri @BotFather, invia
/newbote segui le istruzioni. - Incolla il token ricevuto in Token del bot.
- Invia un messaggio al bot, o aggiungilo a un gruppo, poi clicca su Rileva la mia chat: l’ID chat viene compilato automaticamente.
Slack
In Slack: Apps > Incoming Webhooks > Add to Slack, scegli il canale e copia l’URL del webhook, che inizia con https://hooks.slack.com/.
Discord
In Discord: Impostazioni server > Integrazioni > Webhook > Nuovo webhook, poi Copia URL webhook.
Webhook
Per Zapier, Make, n8n, uno strumento di reperibilità o un tuo script. Viene inviato un POST JSON a ogni nuovo avviso, promemoria e risoluzione, con l’header X-DataFirefly-Event:
{
"event": "open",
"alert": {
"id": 42, "key": "payment:1", "type": "payment", "severity": "critical",
"title": "...", "message": "...", "occurrences": 3,
"first_at": "2026-10-07 16:35:00", "last_at": "2026-10-07 16:45:00",
"ack_url": "https://..."
},
"shop": { "name": "...", "url": "https://..." },
"sent_at": "2026-10-07T16:45:01+02:00"
}
I valori di event sono open, repeat, resolved e test. Se è impostato un segreto di firma, ogni richiesta include l’header X-DataFirefly-Signature: sha256=…, HMAC SHA-256 del corpo grezzo con quel segreto.
Regole di avviso
- Promemoria per un avviso in corso: intervallo tra due notifiche dello stesso problema (60 minuti di default).
- Numero massimo di notifiche all’ora: 20 di default, 0 per nessun limite.
- Messaggio di risoluzione: viene inviato un messaggio quando un problema notificato scompare.
- Ore di quiete: nella fascia scelta partono solo gli avvisi critici. Un avviso ancora aperto alla fine della fascia viene inviato all’esecuzione successiva del cron.
- Report riepilogativo via email: disattivato, giornaliero o ogni lunedì, all’ora scelta. Riporta disponibilità, tempo di risposta, errori PHP, ordini, pagamenti falliti, avvisi del periodo ed errori più frequenti.
Pausa
Il pulsante Pausa nell’intestazione sospende le notifiche per 30 minuti, 2 ore, 8 ore o 24 ore, ad esempio durante un aggiornamento. I problemi vengono comunque rilevati e registrati; quelli ancora aperti alla fine della pausa vengono notificati.
Cosa rileva il modulo
Errori PHP
Il modulo cattura errori fatali e warning (e, a scelta, notice e deprecazioni) nel negozio e, se l’opzione è attiva, nel back office. Gli errori identici vengono raggruppati. Un nuovo errore fatale fa scattare subito un avviso critico; l’avviso scade senza messaggio dopo 24 ore senza nuove occorrenze. Un avviso di picco scatta oltre 100 errori e avvisi in 15 minuti (regolabile, 0 per disattivare). I log di PrestaShop di gravità 3 e 4 vengono importati a ogni esecuzione del cron.
Ogni errore riceve un’origine probabile: modulo, tema, override, template compilato o core. Quando l’errore nasce nel core, viene preso il primo modulo trovato nello stack delle chiamate.
Tempo di risposta e disponibilità
- Il tempo di risposta è misurato sulle visite reali del negozio. La quota di pagine misurate si regola da 1 a 100%; ogni pagina misurata costa una scrittura nel database.
- Scatta un avviso quando il 95° percentile su 15 minuti supera la soglia (3000 ms di default), a partire da 20 pagine misurate.
- Scatta un avviso critico quando il tasso di errori del server (HTTP 5xx o errore fatale PHP) supera il 5% su 15 minuti, con almeno 5 errori.
- La home page viene caricata a ogni esecuzione del cron del server; due errori consecutivi aprono l’avviso critico «Negozio non raggiungibile». Il controllo è sospeso in modalità manutenzione.
Pagamenti e ordini
- Pagamenti falliti: ordini passati a uno degli stati selezionati nell’ultima ora, con il dettaglio per modulo di pagamento. Soglia predefinita: 3. Il controllo parte anche appena un ordine cambia stato. Seleziona gli stati che i tuoi moduli di pagamento usano per un rifiuto.
- Conversione al checkout: il modulo registra ogni carrello che arriva al passaggio di pagamento, poi confronta, su una finestra di 2 ore che termina 30 minuti prima del controllo, la quota di quei carrelli diventati ordini con la quota abituale su 28 giorni. Il controllo parte dopo circa 40 carrelli di storico e 8 carrelli nella finestra (regolabile).
- Calo degli ordini: gli ordini delle ultime 3 ore (regolabile) sono confrontati con la media della stessa fascia oraria delle 4 settimane precedenti. Il controllo viene saltato se si attendono meno di 4 ordini. Zero ordini al posto dell’attività abituale dà un avviso critico.
- Sensibilità: bassa, media (consigliata) o alta. Quella alta avvisa prima ma produce più falsi allarmi.
In multinegozio, pagamenti, conversione e ordini sono valutati negozio per negozio.
Stato del server
- Certificato SSL: letto ogni 6 ore sul dominio del negozio. Avviso 14 giorni prima della scadenza (regolabile), critico a 3 giorni.
- Spazio su disco: avviso sotto 2048 MB liberi (regolabile), critico sotto un quarto di questa soglia. Su hosting condiviso con quota, il valore letto può riferirsi all’intero disco del server.
- Controllo del cron: dopo che un cron del server è già stato eseguito, scatta un avviso dal traffico dei visitatori o dal back office dopo 30 minuti senza esecuzioni.
Gestire gli avvisi
Un problema apre un solo avviso, aggiornato finché dura. La scheda Avvisi mostra lo storico e le notifiche inviate, con l’esito di ogni invio.
- Conferma: ferma i promemoria. Il messaggio di risoluzione viene comunque inviato.
- Chiudi: chiude l’avviso. Se il problema persiste, al controllo successivo si apre un nuovo avviso.
Confermare da una notifica
Ogni notifica di avviso contiene un link Conferma e ferma i promemoria. Apre una pagina di conferma sul negozio, adatta al telefono; l’avviso viene confermato solo dopo la convalida, così gli antivirus di posta non possono confermarlo aprendo il link.
Pagina degli errori PHP
Filtra per gravità o origine, cerca un messaggio, un file o una pagina. Un errore espanso mostra pagina, controller, date, messaggio completo e, per i warning, lo stack delle chiamate. Il pulsante Copia il report per uno sviluppatore copia un testo con versione di PrestaShop e PHP, file, origine, pagina, occorrenze, messaggio e stack delle chiamate. Silenzia continua a contare l’errore senza più avvisare.
Dati e riservatezza
- Gli indirizzi delle pagine sono salvati senza parametri URL.
- Lo stack delle chiamate è salvato senza argomenti delle funzioni.
- Il percorso del server e il nome della cartella di amministrazione sono rimossi da tutti i testi salvati e inviati.
- I token Telegram e i percorsi webhook sono mascherati nel registro delle notifiche.
- Lo storico viene eliminato dopo 30 giorni di default (regolabile da 7 a 365 giorni); gli avvisi chiusi sono conservati 90 giorni.
Limiti noti
- Un errore fatale che si verifica prima del caricamento dei moduli non viene catturato dal gestore degli errori; il controllo di disponibilità e il tasso di 5xx lo segnalano.
- Le pagine Symfony del back office non passano dall’hook usato per catturare gli errori del back office.
- La conversione al checkout si basa sull’hook
displayPaymentTop. Se il tuo modulo di checkout in una pagina non lo chiama, disattiva questo controllo: il calo degli ordini resta sorvegliato.
Risoluzione dei problemi
La prova email non riesce
Verifica la configurazione in Parametri avanzati > E-mail e invia un’email di prova da quella pagina. Il messaggio di errore esatto appare dopo la prova e nella scheda Avvisi.
«Nessun cron del server rilevato» resta visibile
Solo il cron CLI o l’URL cron contano come cron del server. Esegui il comando a mano via SSH: stampa un report JSON. Se fallisce, verifica con il tuo hosting il percorso di PHP CLI.
La prova Telegram restituisce «chat not found»
Un bot può scrivere solo a una conversazione che gli ha già scritto. Inviagli un messaggio, poi clicca su Rileva la mia chat.