#AEM

Apache Sling Health Check Tools

Inhoud

Als we een geautomatiseerd systeem willen gebruiken voor real-time verificatie en monitoring van de huidige status, prestaties en configuratie van de AEM-applicatieomgeving, dan kunnen we kiezen voor de OOTB Apache Sling Health Checks tools.

Hieronder zal ik het basisidee van deze tools uitleggen en enkele eenvoudige voorbeelden van configuratie en aanpassing presenteren. U zult zien hoe eenvoudig en gemakkelijk de gebruikersinterface te begrijpen is.

Problemen en Doelstellingen

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

  • De vereiste bundels zijn operationeel;
  • De eindpunten van de bijbehorende webservices zijn beschikbaar;
  • De benodigde bronnen en de juiste inhoudsstructuur bestaan.

Alle bovenstaande 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 monitoren.

Als we een dergelijke automatisering moeten creëren voor real-time verificatie en monitoring van omgevingen, kunnen we de OOTB Apache Sling Health Checks (of HC) tools gebruiken.

Health Checks in één oogopslag

Een HC-instantie is een OSGi-service die de interface org.apache.sling.hc.api.HealthCheck implementeert en een Result retourneert volgens de validatievoorwaarden:

public interface HealthCheck {
public Result execute();
}

Result is een eenvoudige en onveranderlijke klasse die een status (OK, WARN, CRITICAL, enz.) en een of meer logberichten voor aanvullende informatie levert.

Opmerking: als u een Result-logbericht definieert, wordt dit in AEM als WARN geïdentificeerd. Daarom zouden we het als volgt moeten definiëren:

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

Uitvoering van Health Checks

AEM is een modulair systeem, daarom hebben we verschillende configuratielocaties voor elk element van het systeem. De HC Executor-service is een van die 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 pool, zodat we slechts één instantie tegelijkertijd laten draaien.

Aangepaste Health Checks

Voor een individuele implementatie van een HC, moeten we eerst de interface org.apache.sling.hc.api.HealthCheck implementeren en de serviceopties 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 de HC moet worden uitgevoerd door de scheduler (bijvoorbeeld één keer per dag), kunnen we de planningsintervallen specificeren in de eigenschappen:

@Property(name = HealthCheck.ASYNC_CRON_EXPRESSION, value = "0 0 12 1/1 * ? *")

Versie 1.2.6 van de Sling HC core zal een nieuwe eigenschap hebben, “hc.resultCacheTtlInMs”. Deze vervangt de globale standaard TTL zoals geconfigureerd in de HC-executor voor HC-responsen.

De 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 Tools -> Operations -> Dashboard -> Console -> Health Reports (of via het pad “/libs/granite/operations/content/healthreports.html”) openen, zien we kaarten met HC’s.

Om een aangepaste HC als kaart op 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 gebeurd is voor “Systeemcontroles” en “Beveiligingscontroles”). Alle composiete HC-configuraties worden opgeslagen in de factory org.apache.sling.hc.core.impl.CompositeHealthCheck. Om onze aangepaste HC hier toe te voegen, moeten we een nieuwe configuratie implementeren in deze factory, via de Felix-console of een configuratiebestand. In het geval van de Felix-console moeten we de “Naam” voor de HC-groep en de “Filtertags” specificeren, zodat alle HC’s met deze tags beschikbaar zijn onder deze compositie van de 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