Als we een geautomatiseerd systeem willen gebruiken voor live controle en bewaking van de huidige status, prestaties en configuratie van de AEM-applicatieomgeving, kunnen we een beroep doen op de OOTB Apache Sling Health Checks Tools.
Hieronder zal ik de basisidee van deze tools uitleggen en enkele eenvoudige configuratie- en aanpassingsvoorbeelden demonstreren. U zult zien hoe eenvoudig en begrijpelijk de UI-creatie is.
Problemen en doelen
Voordat we een probleem met een AEM-applicatie oplossen, moeten we de volgende punten controleren:
- Vereiste bundels zijn actief en draaien;
- Bijbehorende webservice-eindpunten zijn beschikbaar;
- Vereiste bronnen en een passende inhoudsstructuur zijn aanwezig.
Alle bovengenoemde stappen kunnen van tijd tot tijd handmatig worden uitgevoerd, maar we moeten deze validaties automatisch uitvoeren. Deze aanpak helpt ons om de AEM-applicatie in één oogopslag te bewaken.
Als we een dergelijke automatisering moeten opzetten voor live controle en bewaking van omgevingen, kunnen we de OOTB Apache Sling Health Checks Tools (of HC) gebruiken.
Health Checks in één oogopslag
Een HC-instantie is een OSGi-service die de org.apache.sling.hc.api.HealthCheck interface implementeert en een Result retourneert volgens de validatiecondities:
public interface HealthCheck {
public Result execute();
}
Result is een eenvoudige, onveranderlijke klasse die een status (OK, WARN, CRITICAL, enz.) en een of meer logachtige berichten voor aanvullende informatie biedt.
Opmerking: Als u een Result-logbericht instelt, wordt dit binnen AEM geïdentificeerd als WARN. Bijgevolg moeten we het als volgt definiëren:
new Result(Result.Status.OK, "Some Message")
Uitvoering van Health Checks
AEM is een modulair systeem, daarom zijn er meerdere configuratieplekken voor elk deel van het systeem. De HC Executor Service is een van deze services, die kan worden geconfigureerd via “/system/console/configMgr/org.apache.sling.hc.core.impl.executor.HealthCheckExecutorImpl”:”.

Opmerking: De HC Executor voert elke HC uit binnen de Sling Thread pools en garandeert dat slechts één instantie tegelijk draait.
Aangepaste Health Checks
Voor de individuele HC-implementatie moeten we eerst de interface **org.apache.sling.hc.api.HealthCheck** implementeren en de opties voor de service als volgt opgeven:
@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 {
Als HC door de scheduler moet worden uitgevoerd (bijvoorbeeld één keer per dag), kunnen we de tijdsintervallen in de eigenschappen opgeven:
@Property(name = HealthCheck.ASYNC_CRON_EXPRESSION, value = "0 0 12 1/1 * ? *")
De Sling HC Core 1.2.6-versie zal een nieuwe eigenschap hebben, **“hc.resultCacheTtlInMs”**. Deze overschrijft de globale standaard-TTL, zoals geconfigureerd in de HC-Executor voor HC-antwoorden.
HC kan ook worden geconfigureerd met de annotatie **@SlingHealthCheck**, maar het werkt niet OOTB in AEM 6.1:
@SlingHealthCheck(
name="Health Check Name For Felix Console",
mbeanName="JMX Name",
description="Health Check Description",
tags={"meetup"}
)
Deze eenvoudige stappen stellen u in staat om HC te implementeren, uitgevoerd via de Felix-console onder het pad “/system/console/healthcheck”:

Gebruikersinterface voor Health Checks
Als we **Tools -> Operations -> Dashboard -> Console -> Health Reports** (of via het pad **“/libs/granite/operations/content/healthreports.html”**) openen, zien we kaarten met HC.

Om een aangepaste HC als kaart aan dit dashboard toe te voegen, moeten we een knooppunt aanmaken onder het pad **/apps/granite/operations/config/hc** met de volgende eigenschappen:
- **resource**{String} – /system/sling/monitoring/mbeans/org/apache/sling/healthcheck/HealthCheck/[**hc.name**]
- **sling:resourceType**{String} – granite/operations/components/mbean

Het Operations-dashboard maakt het ook mogelijk om HC-kaarten samen te voegen in groepen (zoals al is gebeurd voor “System Checks” en “Security Checks”). Alle samengestelde HC-configuraties worden opgeslagen in de **org.apache.sling.hc.core.impl.CompositeHealthCheck** fabriek. Om onze aangepaste HC hieraan toe te voegen, moeten we een nieuwe configuratie voor deze fabriek implementeren via de Felix-console of vanuit een configuratiebestand. In het geval van de Felix-console moeten we “Naam” opgeven voor de HC-groep en “Filter Tags”, zodat alle HC’s met deze tags beschikbaar zijn onder deze HC-kaartcompositie in het Operations-dashboard.
