#AEM

Apache Sling gezondheidscontrole hulpmiddelen

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 AEM-applicatieprobleem oplossen, moeten we de volgende punten controleren:

  • Vereiste bundels zijn actief en operationeel;
  • Gerelateerde webservices-eindpunten zijn beschikbaar;
  • Vereiste bronnen en een passende inhoudsstructuur bestaan.

Alle bovenstaande stappen kunnen van tijd tot tijd handmatig worden uitgevoerd, maar we moeten deze validaties automatisch laten verlopen. Deze aanpak helpt ons 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 een Result retourneert volgens gevalideerde voorwaarden:

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 Resultaat-logbericht instelt, wordt dit binnen AEM geïdentificeerd als WARN. 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 aantal configuratieplekken voor elk onderdeel 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 pool, wat garandeert dat er slechts één actieve instantie tegelijk is.

Aangepaste Health Checks

Voor een individuele HC-implementatie moeten we eerst de interface org.apache.sling.hc.api.HealthCheck implementeren en de 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 door de scheduler moet worden uitgevoerd (bijvoorbeeld één keer per dag), kunnen we de uitvoerintervallen 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 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 openen (of via het pad “/libs/granite/operations/content/healthreports.html ”), zullen we kaarten met HC zien.

Om een aangepaste HC als een kaart op 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 in groepen (zoals al gedaan is voor “Systeemcontroles” en “Beveiligingscontroles”). Alle composiete HC-configuraties worden opgeslagen binnen org.apache.sling.hc.core.impl.CompositeHealthCheck factory. Om onze aangepaste HC hier 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 “Filter Tags” specificeren, zodat alle HC’s met deze tags beschikbaar zullen zijn onder deze HC-kaartcompositie 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