> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lekalao.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Supervision

> Savoir que tout tourne, et être prévenu quand ce n'est plus le cas.

## La commande de diagnostic

```bash theme={null}
php artisan lekalao:diagnose
```

```
  OK   Scheduler: Running.
  OK   Queues: 12 jobs are waiting.
 WARN  Failed jobs: 3 jobs failed.
       Read them in Horizon, then `php artisan queue:retry all`.
  OK   Mailers: 2 ready.
  OK   Campaigns: Nothing stuck.

Subscribers: 48213
Campaign e-mails: 912440
…
```

| Vérification    | En échec quand                                                        |
| --------------- | --------------------------------------------------------------------- |
| Planificateur   | Il n'a jamais tourné, ou pas depuis plus de 5 minutes.                |
| Files           | Redis est injoignable. Avertissement si beaucoup de tâches attendent. |
| Tâches en échec | Avertissement dès qu'il y en a.                                       |
| Fournisseurs    | Aucun n'est configuré. Avertissement si certains ne sont pas testés.  |
| Campagnes       | Avertissement si une campagne envoie depuis plus de 6 heures.         |

La commande **sort en erreur** (code 1) dès qu'une vérification est en échec ; les avertissements ne changent pas le code. Branchez-la sur votre supervision :

```cron theme={null}
*/5 * * * * cd /var/www/lekalao && php artisan lekalao:diagnose > /dev/null || curl -fsS https://hc-ping.com/<uuid>/fail
```

La même chose est visible dans **Paramètres → Maintenance**.

## Sondes HTTP

| Adresse   | Répond                                                         |
| --------- | -------------------------------------------------------------- |
| `GET /up` | `200` si l'application démarre. Pour un répartiteur de charge. |

`/up` ne vérifie ni Horizon ni le cron : combinez-le avec `lekalao:diagnose`.

## Horizon

`/horizon` (administrateurs de la plateforme) montre les files en temps réel, le débit, les tâches lentes et celles en échec. Une tâche en échec se relance depuis là ou avec :

```bash theme={null}
php artisan queue:retry all
```

## Journaux

Laravel écrit dans `storage/logs/laravel.log`. En production :

```dotenv .env theme={null}
LOG_CHANNEL=daily
LOG_LEVEL=warning
```

À surveiller en particulier : les erreurs de rendu (MJML, modèles), les refus des fournisseurs et les erreurs du relais SMTP.

## Ce qui alerte les équipes

Lekalao prévient lui-même les équipes de ce qui les concerne, sans action de l'administrateur :

* une campagne **mise en pause** par la sécurité d'envoi ;
* le **bilan d'une campagne** après son envoi ;
* le **résumé hebdomadaire** de chaque liste qui le demande.

Un domaine dont le DNS n'est plus bon ou une adresse de webhook désactivée se voient dans l'interface, sans e-mail.
