api_monitor_client
Modulo per il monitoraggio pro attivo della stabilità e delle performance delle API in un ecosistema Drupal.
📌 Panoramica
Il sistema permette di monitorare endpoint remoti (Sito A) da un'istanza di controllo (Sito B).
Non si limita a un semplice controllo dello status HTTP, ma permette di validare la logica della risposta e tracciare la latenza temporale.
Caratteristiche Principali
- Guzzle Async Esecuzione parallela dei check per massime prestazioni.
- Plugin System Ogni API da monitorare è un Plugin dedicato.
- Dashboard Visuale: Grafici storici (Chart.js) per l'analisi dei tempi di risposta.
- Hook System: Estensibile tramite API per logiche di business custom.
- Swagger: Per ogni endpoint è possibile visionare lo swagger con dati recuperati dalle request eseguite.
- Analisi Euristica AI: Se abilitato su ogni endpoint analizzato sarà abilitata l'analisi Euristica AI, in caso di dati sensibili nella response sarete notificati via email.
- Chat AI: Per ogni endpoint avrei l'assistente AI a cui potrai richiedere un test di esecuzione, uno snippet per l'integrazione nel tuo sistema
---
🛠️ Installazione e Configurazione
1. Requisiti
- PHP >= 8.3
- Drupal >= 11.1
- Estensione cURL abilitata
2. Configurazione Sito B (Monitor)
1. Abilita il modulo: `drush en api_monitor_client`.
2. Naviga in `/admin/config/development/api-monitoring/settings`.
3. Inserisci l'**Endpoint Base** del Sito A.
---
🔔 Sistema di Notifiche (Alerting)
Il modulo include un sistema di monitoraggio attivo che non si limita a registrare i dati, ma invia avvisi immediati in caso di anomalie.
Configurazione Alert
All'interno della pagina di impostazioni (`/admin/config/development/api-monitoring/settings`), è possibile definire:
- Destinatari Email: Lista di indirizzi (separati da virgola) che riceveranno i report di errore.
- Intervallo di notifica in minuti per evitare lo spam in caso di API giù da ore.
Integrazione con Drupal Mail
Il modulo utilizza il sistema `MailManager` di Drupal.
È consigliato l'uso di moduli come **SMTP** o **Swift Mailer / Symfony Mailer** per garantire la consegna delle notifiche.
L'ID del template per il theming delle email è `api_status_alert`.
🚀 Guida per lo Sviluppatore
Crea una classe nella directory `src/Plugin/ApiMonitorProbe/` del tuo modulo custom:
#[AttributeMonitorProbe(
id: 'check_ordine_invio',
label: new TranslatableMarkup('Verifica Invio Ordine'),
description: new TranslatableMarkup('Invia un ordine di test al Sito A'),
endpoint_id: 'api_ordini_clienti',
method: 'POST'
)]
class CustomServiceProbe extends ApiMonitorProbeBase implements ApiMonitorProbeInterface{
public function validateResponse($response): bool {
// Esempio: successo solo se lo status è 200 e il body contiene 'active'
$data = json_decode($response->getBody()->getContents(), TRUE);
return $response->getStatusCode() === 200 && ($data['status'] === 'active');
}
public function getPayload() :array {
return ['id'=> 1, 'name' => 'Api monitor Client'];
}
}
🔗 Utilizzo degli Hook (Extensibility)
Il modulo espone degli hook per permettere ad altri moduli di intervenire nel processo.
1. hook_api_monitor_report_alter(array &$results, string $api_id)
Questo hook viene invocato dal Runner dopo l'esecuzione dei check ma prima del salvataggio.
Permette di modificare i dati o gli stati in base a logiche esterne.
2. hook_api_monitor_probe_info_alter(array &$definitions)
Permette di modificare le definizioni dei plugin (es. cambiare la label o le soglie di uptime) senza toccare il codice originale.