#AEM

Apache Sling gezondheidscontroletools

Inhoud

Als we een geautomatiseerd systeem willen gebruiken voor live controle en monitoring van de huidige status, prestaties en configuratie van de AEM-applicatieomgeving, kunnen we kiezen voor OOTB Apache Sling Health Checks Tools.

Hieronder zal ik het basisidee van deze tools uitleggen en enkele eenvoudige configuratie- en aanpassingsvoorbeelden demonstreren. U zult zien hoe het bouwen van de gebruikersinterface eenvoudig en gemakkelijk te begrijpen is.

Problemen en doelen

Voordat we een probleem met een AEM-applicatie oplossen, moeten we de volgende punten controleren:

  • Vereiste bundels zijn actief;
  • Gerelateerde webservices-endpoints zijn beschikbaar;
  • Vereiste bronnen en de juiste inhoudsstructuur zijn aanwezig.

Alle bovenstaande stappen kunnen van tijd tot tijd handmatig worden uitgevoerd, maar we moeten deze validaties automatisch uitvoeren. Deze aanpak zal ons helpen de AEM-applicatie in één oogopslag te monitoren.

Als we dergelijke automatisering voor live controle en monitoring van omgevingen moeten bouwen, kunnen we 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 Result retourneert volgens de validatiecondities:

public interface HealthCheck {
public Result execute();
}

Result is een eenvoudige, onveranderlijke klasse die een status (OK, WARN, CRITICAL, etc.) en een of meer logachtige berichten voor aanvullende informatie biedt.

Opmerking: als u een Result-logbericht instelt, wordt dit binnen AEM als WARN geïdentificeerd. Als gevolg hiervan moeten we het definiëren als:

new Result(Result.Status.OK, "Some Message")

Uitvoering van Health Checks

AEM is een modulair systeem, dus we hebben een paar configuratieplaatsen voor elk onderdeel van het systeem. De HC Executor-service is een van deze services, die kan worden geconfigureerd vanuit “/system/console/configMgr/org.apache.sling.hc.core.impl.executor.HealthCheckExecutorImpl”:

Opmerking: De HC Executor voert elke HC uit binnen de Sling Thread pool, wat garandeert dat we slechts één actieve instantie tegelijk hebben.

Aangepaste Health Checks

Voor een individuele HC-implementatie moeten we eerst de interface org.apache.sling.hc.api.HealthCheck implementeren en opties voor de service als volgt specificeren:

@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 moet worden uitgevoerd door de scheduler (bijvoorbeeld één keer per dag), kunnen we de uitvoeringsintervallen specificeren binnen de eigenschappen:

@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-responsen.

HC kan ook worden geconfigureerd met de annotatie @SlingHealthCheck, maar dit werkt niet out-of-the-box (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 vanuit de Felix-console via het pad “/system/console/healthcheck”:

Gebruikersinterface voor Health Checks

Als we Gereedschappen -> Operations -> Dashboard -> Console -> Health Reports openen (of via het pad “/libs/granite/operations/content/healthreports.html”), zien we kaarten met HC’s.

Om een aangepaste HC als kaart aan dit dashboard toe te voegen, moeten we een node 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 tot groepen (zoals al gedaan is voor “Systeemcontroles” en “Beveiligingscontroles”). Alle samengestelde HC-configuraties worden opgeslagen binnen de org.apache.sling.hc.core.impl.CompositeHealthCheck factory. Om onze aangepaste HC hieraan toe te voegen, moeten we een nieuwe configuratie voor deze factory implementeren vanuit de Felix-console of vanuit een configuratiebestand. In het geval van de Felix-console moeten we “Naam” voor de HC-groep en “Filtertags” specificeren, zodat alle HC’s met deze tags beschikbaar zullen zijn onder deze samengestelde HC-kaart op het Operations-dashboard.

    Laten we je project eens bespreken!
    / 2
    Alle velden die met een sterretje zijn gemarkeerd, zijn verplicht
    Alle velden die met een sterretje zijn gemarkeerd, zijn verplicht
    Alle velden die met een sterretje zijn gemarkeerd, zijn verplicht
    Alle velden die met een sterretje zijn gemarkeerd, zijn verplicht
    Vink het vakje aan
    Geslaagd!
    We will contact you by email