Perché Telegram per il monitoring WordPress
Le agenzie web gestiscono mediamente 20-50 siti WordPress client. Il monitoring tradizionale costa: UptimeRobot parte da 58€/anno per 50 monitor, Pingdom da 10$/mese. Per progetti con margini ridotti, queste cifre incidono.
Telegram offre un’alternativa concreta: API gratuite, nessun limite di messaggi per bot privati, delivery istantaneo, client su tutti i device. Non è enterprise-grade come PagerDuty, ma per il 70% delle esigenze di un’agenzia media è più che sufficiente.
I vantaggi concreti:
- Costo: zero euro per uso non commerciale intensivo
- Setup: 15-30 minuti per implementazione base
- Manutenzione: minima, nessun abbonamento da rinnovare
- Flessibilità: controllo totale su logica e contenuto notifiche
- Zero vendor lock-in: tutto il codice è vostro
Architettura base: plugin custom vs cronjob esterno
Due approcci principali per integrare Telegram con WordPress:
Plugin custom installato su ogni sito client
Il plugin monitora eventi specifici (update disponibili, login falliti, errori PHP) e invia notifiche via Telegram API. Pro: accesso diretto a hook WordPress, dati real-time. Contro: va installato e mantenuto su ogni sito, aumenta l’attack surface.
Esempio di hook per monitorare login falliti:
add_action('wp_login_failed', 'telegram_notify_failed_login');
function telegram_notify_failed_login($username) {
$message = "⚠️ Login fallito su " . get_bloginfo('name') . "\nUsername: " . $username . "\nIP: " . $_SERVER['REMOTE_ADDR'];
telegram_send_message($message);
}
function telegram_send_message($text) {
$bot_token = get_option('telegram_bot_token');
$chat_id = get_option('telegram_chat_id');
$url = "https://api.telegram.org/bot{$bot_token}/sendMessage";
wp_remote_post($url, [
'body' => [
'chat_id' => $chat_id,
'text' => $text,
'parse_mode' => 'HTML'
]
]);
}
Sistema di monitoring esterno centralizzato
Un server (anche un VPS da 5€/mese) esegue check periodici via HTTP sui siti client e notifica anomalie. Pro: un solo punto di manutenzione, nessun codice sui siti client. Contro: richiede infrastruttura dedicata, dati non real-time.
Per agenzie sotto i 30 siti, il plugin custom è più pratico. Oltre, conviene centralizzare.
Setup pratico: dal bot token alle prime notifiche
Creare il bot Telegram
- Apri Telegram e cerca
@BotFather - Invia
/newbote segui le istruzioni - Salva il token (formato:
123456789:ABCdefGHIjklMNOpqrsTUVwxyz) - Cerca il tuo bot e avvia una conversazione con
/start
Ottenere il chat_id
Serve per identificare dove inviare i messaggi. Metodo rapido:
- Invia un messaggio qualsiasi al tuo bot
- Apri nel browser:
https://api.telegram.org/bot[TOKEN]/getUpdates - Cerca il campo
"chat":{"id":123456789 - Quel numero è il tuo chat_id
Implementazione plugin WordPress base
<?php
/*
Plugin Name: Telegram Monitoring
Description: Notifiche Telegram per eventi critici
Version: 1.0
*/
define('TELEGRAM_BOT_TOKEN', 'inserisci-token-qui');
define('TELEGRAM_CHAT_ID', 'inserisci-chat-id-qui');
// Notifica update core disponibili
add_action('admin_init', 'check_core_updates');
function check_core_updates() {
if (!get_transient('telegram_update_check')) {
$updates = get_core_updates();
if (!empty($updates[0]) && $updates[0]->response == 'upgrade') {
$msg = "🔄 Update WordPress disponibile\n";
$msg .= "Sito: " . get_bloginfo('name') . "\n";
$msg .= "Versione attuale: " . get_bloginfo('version') . "\n";
$msg .= "Nuova versione: " . $updates[0]->current;
telegram_send(TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID, $msg);
}
set_transient('telegram_update_check', 1, DAY_IN_SECONDS);
}
}
// Notifica errori PHP critici
add_action('shutdown', 'catch_fatal_errors');
function catch_fatal_errors() {
$error = error_get_last();
if ($error && in_array($error['type'], [E_ERROR, E_PARSE, E_CORE_ERROR])) {
$msg = "🚨 ERRORE CRITICO\n";
$msg .= "Sito: " . get_bloginfo('name') . "\n";
$msg .= "File: " . $error['file'] . "\n";
$msg .= "Linea: " . $error['line'] . "\n";
$msg .= "Messaggio: " . $error['message'];
telegram_send(TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID, $msg);
}
}
function telegram_send($token, $chat_id, $text) {
$url = "https://api.telegram.org/bot{$token}/sendMessage";
wp_remote_post($url, [
'timeout' => 5,
'body' => [
'chat_id' => $chat_id,
'text' => $text,
'parse_mode' => 'HTML',
'disable_web_page_preview' => true
]
]);
}
Questo plugin base (circa 50 righe) monitora già due eventi critici. Tempo di implementazione: 10 minuti per sito.
Eventi da monitorare per agenzie
Non tutto merita una notifica. L’obiettivo è intercettare problemi prima che il cliente li segnali, senza spam.
Priorità alta (notifica immediata)
- Errori fatali PHP: white screen of death
- Login admin falliti ripetuti: potenziale attacco brute force (3+ tentativi in 5 minuti)
- Plugin/theme disattivati automaticamente: spesso indica incompatibilità critiche
- Modifiche file core WordPress: possibile compromissione
- Spazio disco <10%: rischio crash imminente
Priorità media (notifica giornaliera aggregata)
- Update disponibili (core, plugin, theme)
- Nuovo utente amministratore creato
- Modifiche a file .htaccess o wp-config.php
- Commenti spam oltre soglia (es. 50+/giorno)
Priorità bassa (report settimanale)
- Statistiche traffico (se sotto soglia attesa)
- Performance (se tempo caricamento >3s per 7 giorni consecutivi)
- Backup completati/falliti
Ottimizzazione: rate limiting e messaggi intelligenti
Un sistema mal configurato genera noise. Tre accorgimenti essenziali:
Rate limiting per evento
Evita 50 notifiche se un errore si ripete ogni secondo:
function telegram_send_throttled($key, $message, $interval = 3600) {
$transient_key = 'telegram_throttle_' . md5($key);
if (get_transient($transient_key)) {
return false; // Già inviato recentemente
}
telegram_send(TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID, $message);
set_transient($transient_key, 1, $interval);
return true;
}
Contesto utile nei messaggi
Includi sempre: nome sito, URL, timestamp, azione suggerita. Esempio messaggio ottimizzato:
🚨 ERRORE CRITICO
Sito: ClienteXYZ.it
Ora: 22/05/2026 14:32
Errore: Fatal error in /wp-content/themes/custom/functions.php:247
Messaggio: Call to undefined function
👉 Azione: Controllare modifiche recenti al tema
🔗 Accedi admin
Gruppi Telegram per team
Per agenzie con team, crea gruppi Telegram dedicati (es. “Monitoring Clienti”, “Emergenze”) e invia notifiche al gruppo invece che a chat personali. Il chat_id del gruppo si ottiene con lo stesso metodo, ma inizia con il segno meno (es. -123456789).
Monitoring esterno: check HTTP centralizzato
Per controlli che non richiedono accesso interno a WordPress (uptime, SSL, tempo risposta), un approccio centralizzato è più efficiente.
Script Python base con schedule
import requests
import time
from datetime import datetime
BOT_TOKEN = "your-token"
CHAT_ID = "your-chat-id"
SITES = [
{"url": "https://cliente1.it", "name": "Cliente 1"},
{"url": "https://cliente2.it", "name": "Cliente 2"},
]
def check_site(site):
try:
start = time.time()
r = requests.get(site["url"], timeout=10)
load_time = time.time() - start
if r.status_code != 200:
send_alert(f"⚠️ {site['name']}: HTTP {r.status_code}")
elif load_time > 5:
send_alert(f"🐌 {site['name']}: Caricamento lento ({load_time:.2f}s)")
except requests.exceptions.RequestException as e:
send_alert(f"🔴 {site['name']}: SITO NON RAGGIUNGIBILE\n{str(e)}")
def send_alert(message):
url = f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage"
requests.post(url, data={"chat_id": CHAT_ID, "text": message})
# Esegui check ogni 5 minuti con cron: */5 * * * * python3 /path/to/monitor.py
for site in SITES:
check_site(site)
Un VPS Hetzner da 4,51€/mese può monitorare facilmente 100+ siti con questo approccio.
Costi reali e confronto alternative
Scenario: agenzia con 30 siti WordPress client.
Soluzione Telegram (plugin custom)
- Costo Telegram API: 0€
- Tempo sviluppo iniziale: 4-6 ore (150-225€ una tantum)
- Tempo installazione per sito: 10 minuti × 30 = 5 ore (150€ una tantum)
- Manutenzione annuale: ~2 ore (60€/anno)
- Totale primo anno: 435€
- Anni successivi: 60€/anno
Soluzione monitoring esterno centralizzato
- VPS: 4,51€/mese = 54,12€/anno
- Tempo sviluppo script: 6-8 ore (180-240€ una tantum)
- Manutenzione: ~1 ora/anno (30€/anno)
- Totale primo anno: 264-324€
- Anni successivi: 84€/anno
Alternative commerciali
- UptimeRobot (50 monitor): 58€/anno – solo uptime, no eventi WordPress
- ManageWP (30 siti): 228€/anno – funzioni avanzate ma costoso
- Jetpack Monitor: incluso in piani da 9,95$/mese/sito = 3.582$/anno per 30 siti
Il ROI della soluzione Telegram è evidente: recuperi l’investimento intercettando anche solo 1-2 problemi critici all’anno che altrimenti avrebbero richiesto interventi in urgenza.
Limitazioni e quando serve altro
Telegram non è la panacea. Limiti reali:
- No SLA garantito: Telegram non garantisce delivery time (anche se nella pratica è quasi istantaneo)
- No escalation automatica: se non leggi il messaggio, nessuno chiama
- Limitato per team grandi: oltre 5-6 persone, servono strumenti con gestione turni
- No metriche storiche: i messaggi Telegram non sono un database, serve logging separato
- Dipendenza da servizio terzo: se Telegram ha problemi (raro ma accaduto), sei cieco
Per agenzie enterprise con SLA stringenti, Telegram può funzionare come canale secondario accanto a soluzioni più robuste. Per realtà piccole/medie con margini ridotti, è spesso la soluzione primaria più sensata.
Evoluzione: dai messaggi ai bot interattivi
Una volta implementate le notifiche base, Telegram permette interazioni bidirezionali. Esempi pratici:
- Comandi bot per info on-demand:
/status cliente1.itrestituisce uptime, versione WP, spazio disco - Azioni rapide:
/disable-plugin cliente1.it plugin-nameper disattivare plugin problematici - Approval workflow: il bot chiede conferma prima di applicare update maggiori
Implementare un bot con comandi richiede gestione webhook e parsing comandi, ma il valore aggiunto per team distribuiti è significativo. Tempo sviluppo aggiuntivo: 8-12 ore.
FAQ
Le notifiche Telegram sono sicure per dati sensibili dei clienti?
Telegram usa crittografia transport-layer (HTTPS), ma i messaggi sui server non sono end-to-end encrypted di default nelle chat bot. Evita di inviare password, token o dati personali. Per info sensibili, invia solo alert generici con link a dashboard protetta. Se serve massima sicurezza, valuta sistemi self-hosted tipo Mattermost.
Quanti siti posso monitorare con un singolo bot Telegram?
Tecnicamente illimitati. Le API Telegram per bot permettono 30 messaggi/secondo, quindi anche 10.000+ siti non sono un problema. Il limite pratico è gestionale: con 100+ siti, i messaggi diventano rumore. Soluzione: crea bot diversi per gruppi di clienti o implementa filtri intelligenti con priorità.
Cosa succede se il mio bot viene bannato da Telegram?
Evento raro se usi il bot in modo legittimo (non spam, non contenuti vietati). Se accade, puoi creare un nuovo bot in 2 minuti e aggiornare il token nel codice. Per sicurezza, tieni documentati token e chat_id in password manager aziendale. Considera anche canale di notifica secondario (email) per eventi critici.
Come gestire notifiche per clienti che vogliono accesso diretto?
Crea bot separati per ogni cliente che lo richiede. Vantaggi: isolamento, cliente ha controllo diretto, può invitare suo team. Setup: 5 minuti per bot. Nel plugin, usa custom field per memorizzare token/chat_id specifici del sito invece di costanti globali. Alcuni clienti apprezzano questa trasparenza e la percepiscono come valore aggiunto.
Posso integrare Telegram monitoring con MainWP o altri pannelli gestione?
Sì. MainWP ha hook per eventi aggregati su tutti i siti child. Esempio: hook mainwp_reports_site_offline può triggerare notifica Telegram. Vantaggio: monitoring centralizzato senza installare plugin su ogni sito. Richiede MainWP Dashboard funzionante, quindi è single point of failure. Approccio ibrido raccomandato: MainWP per gestione ordinaria, Telegram diretto sui siti per eventi critici.