Si nous souhaitons utiliser un système automatisé pour la vérification et la surveillance en temps réel de l’état actuel, des performances et de la configuration de l’environnement d’application AEM, nous pouvons opter pour les outils OOTB Apache Sling Health Checks.
Ci-dessous, j’expliquerai l’idée de base de ces outils et démontrerai quelques exemples simples de configuration et de personnalisation. Vous verrez à quel point la création d’interface utilisateur est facile et simple à comprendre.
Problèmes et objectifs
Avant de résoudre tout problème d’application AEM, nous devrions vérifier les points suivants :
- Les bundles requis sont opérationnels ;
- Les points d’accès des services web associés sont disponibles ;
- Les ressources requises et la structure de contenu appropriée existent.
Toutes les étapes ci-dessus peuvent être effectuées manuellement de temps en temps, mais nous devons exécuter ces validations automatiquement. Cette approche nous aidera à surveiller l’application AEM en un coup d’œil.
Si nous devons créer une telle automatisation pour la vérification et la surveillance en temps réel des environnements, nous pouvons utiliser les outils OOTB Apache Sling Health Checks (ou HC).
Contrôles de santé en un coup d’œil
Une instance HC est un service OSGi qui implémente org.apache.sling.hc.api.HealthCheck interface et renvoie Result selon les conditions de validation :
public interface HealthCheck {
public Result execute();
}
Result est une classe simple et immuable qui fournit un statut (OK, WARN, CRITICAL, etc.) et un ou plusieurs messages de type journal pour des informations supplémentaires.
Remarque : si vous définissez un message de journal de résultat, il sera identifié dans AEM comme WARN. Par conséquent, nous devrions le définir comme suit :
new Result(Result.Status.OK, "Some Message")
Exécution des contrôles de santé
AEM est un système modulaire, nous avons donc plusieurs emplacements de configuration pour chaque élément du système. Le service HC Executor est l’un de ces services, qui peut être configuré à partir de « /system/console/configMgr/org.apache.sling.hc.core.impl.executor.HealthCheckExecutorImpl »:

Remarque : HC Executor exécute chaque HC au sein du Sling Thread pool, garantissant que nous n’avons qu’une seule instance en cours d’exécution à la fois.
Contrôles de santé personnalisés
Pour l’implémentation individuelle du HC, nous devons d’abord implémenter l’interface org.apache.sling.hc.api.HealthCheck et spécifier les options de service comme suit :
@Component(metatype = true)
@Properties({
@Property(name = HealthCheck.NAME,value = "HCName"),
@Property(name = HealthCheck.TAGS,value = {"meetup"}),
@Property(name = HealthCheck.MBEAN_NAME,value = "HCName")
})
@Service(value = {HealthCheck.class})
public class IncorrectLocalhostHC implements HealthCheck {
Si le HC doit être exécuté par le planificateur (une fois par jour, par exemple), nous pouvons spécifier les intervalles de planification dans les propriétés :
@Property(name = HealthCheck.ASYNC_CRON_EXPRESSION, value = "0 0 12 1/1 * ? *")
La version Sling HC core 1.2.6 aura une nouvelle propriété, “hc.resultCacheTtlInMs”. Elle remplace le TTL global par défaut tel que configuré dans l’exécuteur HC pour les réponses HC.
Le HC peut également être configuré avec l’annotation @SlingHealthCheck, mais cela ne fonctionne pas en OOTB dans AEM 6.1 :
@SlingHealthCheck(
name="Health Check Name For Felix Console",
mbeanName="JMX Name",
description="Health Check Description",
tags={"meetup"}
)
Ces étapes simples vous permettent d’implémenter le HC, exécuté depuis la console Felix via le chemin “/system/console/healthcheck” :

Interface utilisateur des contrôles de santé
Si nous ouvrons Outils -> Opérations -> Tableau de bord -> Console -> Rapports de santé (ou à partir du chemin “/libs/granite/operations/content/healthreports.html”), nous verrons des cartes avec les HC.

Pour ajouter un HC personnalisé comme carte sur ce tableau de bord, nous devons créer un nœud sous le chemin /apps/granite/operations/config/hc avec les propriétés suivantes :
- ressource{Chaîne} – /system/sling/monitoring/mbeans/org/apache/sling/healthcheck/HealthCheck/[ hc.name ]
- sling:resourceType{Chaîne} – granite/operations/components/mbean

Le tableau de bord des opérations permet également de fusionner les cartes HC en groupes (comme c’est déjà fait pour les “Vérifications du système” et les “Vérifications de sécurité”). Toutes les configurations HC composites sont stockées dans la fabrique org.apache.sling.hc.core.impl.CompositeHealthCheck. Pour ajouter notre HC personnalisé ici, nous devons implémenter une nouvelle configuration pour cette fabrique depuis la console Felix ou depuis un fichier de configuration. Dans le cas de la console Felix, nous devons spécifier le “Nom” pour le groupe HC et les “Balises de filtre” afin que tous les HC avec ces balises soient disponibles sous cette carte HC composite sur le tableau de bord des opérations.
