This project is not covered by Drupal’s security advisory policy.

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:

  1. Destinatari Email: Lista di indirizzi (separati da virgola) che riceveranno i report di errore.
  2. 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.

Supporting organizations: 

Project information

Releases