Aperçu
Fess dispose d’une fonctionnalité permettant de capturer automatiquement les événements de journaux de niveau ERROR ou WARN et de notifier les administrateurs. Cette fonctionnalité permet de détecter rapidement les anomalies du système et de commencer le traitement des incidents au plus tôt.
Principales caractéristiques :
Canaux de notification pris en charge : e-mail, Slack, Google Chat
Processus concernés : application principale, explorateur, génération de suggestions, génération de miniatures
Désactivé par défaut : fonctionnement par opt-in, une activation explicite est nécessaire
Fonctionnement
La notification des journaux fonctionne selon le flux suivant.
Le
LogNotificationAppenderde Log4j2 capture les événements de journaux dont le niveau est égal ou supérieur au niveau configuré.Les événements capturés sont accumulés dans un tampon en mémoire (maximum 1 000 entrées par défaut). Lorsque le tampon dépasse sa limite, les événements les plus anciens sont supprimés en premier.
Un minuteur écrit les événements du tampon dans l’index OpenSearch (
fess_log.notification_queue) à intervalles de 30 secondes.Le job planifié « Log Notification » lit les événements depuis OpenSearch toutes les 5 minutes, les regroupe par niveau de journalisation et envoie une notification pour chaque niveau.
Après l’envoi des notifications, les événements traités sont supprimés de l’index.
Note
Chaque nœud n’émet de notifications que pour les journaux qu’il a lui-même enregistrés (les événements sont filtrés par hostname). Dans une configuration en cluster, des notifications distinctes sont envoyées pour chaque nœud.
Note
Afin d’éviter les boucles infinies, les journaux des loggers liés à la fonctionnalité de notification elle-même (LogNotificationAppender, LogNotificationHelper, LogNotificationTarget, LogNotificationJob, NotificationHelper, ainsi que org.codelibs.curl utilisé pour la communication HTTP) sont exclus des cibles de notification.
Configuration
Activation
Activation depuis l’interface d’administration
Connectez-vous à l’interface d’administration.
Sélectionnez « Général » dans le menu « Système ».
Activez la case à cocher « Log Notification ».
Sélectionnez le niveau cible de notification dans « Log Notification Level » (
ERROR,WARN,INFO,DEBUG,TRACE).Cliquez sur le bouton « Mettre à jour ».
Note
Par défaut, seul le niveau ERROR est ciblé pour la notification. Si vous sélectionnez WARN, les niveaux WARN et ERROR seront tous deux notifiés.
Activation via les propriétés système
Vous pouvez également configurer directement les propriétés système (system.properties) enregistrées dans les paramètres « Général » de l’interface d’administration.
Configuration des destinataires
Les destinataires (adresses e-mail, URL de Webhook Slack / Google Chat) sont tous configurés dans les paramètres « Système » → « Général » de l’interface d’administration. Configurez au moins un destinataire. Si aucun destinataire n’est configuré, le job de notification des journaux se termine sans rien envoyer.
Notification par e-mail
Pour utiliser la notification par e-mail, la configuration suivante est nécessaire.
Configuration du serveur de messagerie (
fess_env.properties) :Dans les paramètres « Général » de l’interface d’administration, saisissez les adresses e-mail dans le champ « E-mail de notification ». Plusieurs adresses peuvent être séparées par des virgules.
Notification Slack
Saisissez l’URL du Incoming Webhook de Slack dans le champ « Slack Webhook URLs » des paramètres « Général » de l’interface d’administration. Plusieurs URL peuvent être séparées par des virgules ou des espaces. Cette valeur est enregistrée dans la propriété système slack.webhook.urls.
Notification Google Chat
Saisissez l’URL du Webhook de Google Chat dans le champ « Google Chat Webhook URLs » des paramètres « Général » de l’interface d’administration. Plusieurs URL peuvent être séparées par des virgules ou des espaces. Cette valeur est enregistrée dans la propriété système google.chat.webhook.urls.
Note
Si vous configurez uniquement l’URL de Webhook Slack ou Google Chat sans configurer « E-mail de notification », aucun e-mail n’est envoyé et seules les notifications vers Slack / Google Chat sont effectuées. Slack / Google Chat reçoivent en tant que message le même objet et le même corps que la notification par e-mail.
Propriétés de configuration
Les propriétés suivantes peuvent être configurées dans fess_config.properties.
Note
La modification de log.notification.flush.interval prend effet après le redémarrage de Fess. Les autres propriétés prennent effet dès le cycle de notification suivant.
Note
log.notification.interval est la valeur utilisée pour le texte « au cours des N dernières secondes » affiché dans le message de notification ; elle ne modifie pas la fréquence d’exécution du job. L’intervalle d’exécution réel est déterminé par la configuration cron du job planifié « Log Notification » (5 minutes par défaut). Pour modifier l’intervalle d’exécution du job, modifiez l’expression cron de ce job depuis « Système » → « Planificateur », et ajustez également log.notification.interval afin que l’affichage corresponde à la réalité.
Format des messages de notification
Notification par e-mail
La notification par e-mail est envoyée dans le format suivant.
Objet :
Corps :
Note
Les événements ERROR et WARN sont envoyés sous forme de notifications séparées pour chaque niveau.
Note
Lorsque le nombre d’événements à afficher dépasse log.notification.max.display.events, le début de la partie détails devient Total: N event(s) (showing M) et la mention ... and X more est ajoutée à la fin. Lorsqu’un message de journal dépasse log.notification.max.message.length, sa fin est tronquée par ... ; et lorsque l’ensemble de la partie détails dépasse log.notification.max.details.length, le reste est tronqué.
Notification Slack / Google Chat
Les notifications Slack et Google Chat sont envoyées sous forme de messages avec un contenu similaire.
Guide d’exploitation
Configuration recommandée
| Environnement | Niveau recommandé | Raison |
|---|---|---|
| Environnement de production | ERROR | Notifier uniquement les erreurs critiques et réduire le bruit |
| Environnement de staging | WARN | Inclure les problèmes potentiels dans les notifications |
| Environnement de développement | Désactivé | Consulter directement les fichiers journaux |
Index OpenSearch
La fonctionnalité de notification des journaux utilise l’index fess_log.notification_queue pour le stockage temporaire des événements (le nom de l’index est obtenu en ajoutant .notification_queue à la valeur de index.log (fess_log par défaut)). Cet index est créé automatiquement lors de la première utilisation de la fonctionnalité. Les événements étant supprimés après l’envoi des notifications, la taille de l’index ne devrait normalement pas devenir importante.
Note
Le nombre d’événements traités par exécution de job est limité par log.notification.search.size (1 000 par défaut). Les événements accumulés au-delà de cette limite sont supprimés en bloc après l’envoi des notifications et ne sont pas reportés aux exécutions suivantes. Dans les environnements où un grand volume de journaux est généré en peu de temps, augmentez log.notification.search.size selon les besoins.
Dépannage
Les notifications ne sont pas envoyées
Vérifier l’activation
Vérifiez que « Log Notification » est activée dans les paramètres « Général » de l’interface d’administration.
Vérifier les destinataires
Vérifiez qu’au moins un destinataire (« E-mail de notification », « Slack Webhook URLs » ou « Google Chat Webhook URLs ») est configuré. Si aucun n’est configuré, le job affiche
No notification targets configured.et n’envoie rien.Vérifier la configuration du serveur de messagerie
Si vous utilisez la notification par e-mail, vérifiez que le serveur de messagerie est correctement configuré dans
fess_env.properties.Vérifier le job planifié
Vérifiez que le job « Log Notification » est activé dans « Système » → « Planificateur ». Si ce job est désactivé, aucune notification n’est envoyée.
Vérifier les journaux
Vérifiez les messages d’erreur liés aux notifications dans
fess.log.
Les notifications sont trop nombreuses
Augmenter le niveau de journalisation
Changez le niveau de notification de
WARNàERROR.Traiter la cause racine
Si des erreurs se produisent fréquemment, examinez la cause racine des erreurs.
Le contenu des notifications est tronqué
Ajustez les propriétés suivantes.
log.notification.max.details.length: nombre maximum de caractères pour la partie détailslog.notification.max.display.events: nombre maximum d’événements affichéslog.notification.max.message.length: nombre maximum de caractères par message
Informations de référence
Configuration des journaux - Configuration des journaux
Configuration de la mémoire - Configuration de la mémoire