Bewertung der Komplexität der Aktualisierung mit dem Musterdetektor assessing-the-upgrade-complexity-with-the-pattern-detector
Überblick overview
Mit dieser Funktion können Sie vorhandene AEM-Instanzen auf ihre Aktualisierbarkeit überprüfen, indem Sie Muster erkennen, die verwendet werden und Folgendes tun:
- gegen bestimmte Regeln verstoßen und Bereiche betreffen, die durch das Upgrade überschrieben werden
- Verwenden Sie eine AEM 6.x-Funktion oder eine API, die in AEM 6.4 nicht abwärtskompatibel ist und nach der Aktualisierung möglicherweise beschädigt werden kann.
Dies könnte als Bewertung der Entwicklungsbemühungen dienen, die mit der Aktualisierung auf AEM 6.4 verbunden sind.
Einrichtung how-to-set-up
Der Musterdetektor wird als separates Paket veröffentlicht, das mit allen Quell-AEM-Versionen von 6.1 bis 6.5 funktioniert, die auf AEM 6.5 aktualisiert werden sollen. Sie kann mithilfe der Package Manager.
Verwendung how-to-use
- die Erkennungsrate erhöhen
- vermeiden Sie jede Verlangsamung bei geschäftskritischen Instanzen.
Gleichzeitig wird die Ausführung in Staging-Umgebungen empfohlen, die hinsichtlich Benutzerapplikationen, Inhalt und Konfigurationen den Produktionsumgebungen möglichst stark ähneln.
Sie haben verschiedene Möglichkeiten, das Ergebnis des Musterdetektors zu prüfen:
- Über die Felix Inventory-Konsole:
-
Navigieren Sie zur AEM Web-Konsole, indem Sie zu: https://serveraddress:serverport/system/console/configMgr
-
Wählen Sie Status - Musterdetektor aus, wie im Bild unten dargestellt:
-
Über eine auf reaktivem Text basierende oder die reguläre JSON-Schnittstelle
-
Über die Oberfläche für reaktive JSON-Zeilen, das in jeder Zeile ein separates JSON-Dokument generiert.
Beide Methoden werden im Folgenden beschrieben:
Reaktive Schnittstelle reactive-interface
Die reaktive Oberfläche ermöglicht die Verarbeitung des Verstoßberichts, sobald ein Verdacht festgestellt wird.
Die Ausgabe ist derzeit unter 2 URLs verfügbar:
- Nur-Text-Schnittstelle
- JSON-Benutzeroberfläche
Umgang mit der Textschnittstelle handling-the-plain-text-interface
Die Informationen in der Ausgabe werden als eine Reihe von Ereigniseinträgen formatiert. Es gibt zwei Kanäle - einen für Veröffentlichungsverletzungen und einen für die Veröffentlichung des aktuellen Fortschritts.
Sie können mithilfe der folgenden Befehle abgerufen werden:
curl -Nsu 'admin:admin' http://localhost:4502/system/console/status-pattern-detector.txt | tee patterns-report.log | grep SUSPICION
Die Ausgabe sieht wie folgt aus:
2018-02-13T14:18:32.071+01:00 [SUSPICION] The pattern=ECU/extraneous.content.usage was found by detector=ContentAccessDetector with id=a07fd94318f12312c165e06d890cbd3c2c8b8dad0c030663db8b4c800dd7c33f message="Cross-boundary overlay of internal marked path /libs/granite/operations/components/commons/commons.jsp/jcr:content referenced at /apps/granite/operations/components/commons/commons.jsp/jcr:content with properties redefined: jcr:lastModifiedBy, jcr:mimeType, jcr:data, jcr:lastModified, jcr:uuid". More info at=https://www.adobe.com/go/aem6_EC
Der Fortschritt kann mit dem Befehl grep
gefiltert werden:
curl -Nsu 'admin:admin' http://localhost:4502/system/console/status-pattern-detector.txt | tee patterns-report.log | grep PROGRESS
Dies führt zur folgenden Ausgabe:
2018-02-13T14:19:26.909+01:00 [PROGRESS] emitted=127731/52 MB patterns (from=6.4), analysed=45780/16 MB items, found=0 suspicions so far in period=PT5.005S (throughput=34667 items/sec)
2018-02-13T14:19:31.904+01:00 [PROGRESS] emitted=127731/52 MB patterns (from=6.4), analysed=106050/39 MB items, found=0 suspicions so far in period=PT10S (throughput=23378 items/sec)
2018-02-13T14:19:35.685+01:00 [PROGRESS] Finished in period=PT13.782
Umgang mit der JSON-Oberfläche handling-the-json-interface
Auf ähnliche Weise kann JSON mit der jq-Tool sobald sie veröffentlicht wurde.
curl -Nsu 'admin:admin' http://localhost:4502/system/console/status-pattern-detector.json | tee patterns-report.json | jq --unbuffered -C 'select(.suspicion == true)'
Mit der Ausgabe:
{
"timestamp": "2018-02-13T14:20:18.894+01:00",
"suspicion": true,
"pattern": {
"code": "ECU",
"type": "extraneous.content.usage",
"detective": "ContentAccessDetector",
"moreInfo": "https://www.adobe.com/go/aem6_ECU_de"
},
"item": {
"id": "a07fd94318f12312c165e06d890cbd3c2c8b8dad0c030663db8b4c800dd7c33f",
"message": "Cross-boundary overlay of internal marked path /libs/granite/operations/components/commons/commons.jsp/jcr:content referenced at /apps/granite/operations/components/commons/commons.jsp/jcr:content with properties redefined: jcr:lastModifiedBy, jcr:mimeType, jcr:data, jcr:lastModified, jcr:uuid"
}
}
Der Fortschritt wird alle 5 Sekunden gemeldet und kann abgerufen werden, indem andere Nachrichten ausgeschlossen werden, die als verdächtig markiert sind:
curl -Nsu 'admin:admin' http://localhost:4502/system/console/status-pattern-detector.json | tee patterns-report.json | jq --unbuffered -C 'select(.suspicion == false)'
Mit der Ausgabe:
{
"suspicion": false,
"timestamp": "2018-02-13T14:21:17.279+01:00",
"type": "PROGRESS",
"database": {
"patternsEmitted": 127731,
"patternsEmittedSize": "52 MB",
"databasesEmitted": [
"6.4"
]
},
"state": {
"itemsAnalysed": 57209,
"itemsAnalysedSize": "26 MB",
"suspicionsFound": 0
},
"progress": {
"elapsedTime": "PT5.003S",
"elapsedTimeMilliseconds": 5003,
"itemsPerSecond": 36965
}
}
{
"suspicion": false,
"timestamp": "2018-02-13T14:21:22.276+01:00",
"type": "PROGRESS",
"database": {
"patternsEmitted": 127731,
"patternsEmittedSize": "52 MB",
"databasesEmitted": [
"6.4"
]
},
"state": {
"itemsAnalysed": 113194,
"itemsAnalysedSize": "46 MB",
"suspicionsFound": 0
},
"progress": {
"elapsedTime": "PT10S",
"elapsedTimeMilliseconds": 10000,
"itemsPerSecond": 24092
}
}
{
"suspicion": false,
"timestamp": "2018-02-13T14:21:25.762+01:00",
"type": "FINISHED",
"database": {
"patternsEmitted": 127731,
"patternsEmittedSize": "52 MB",
"databasesEmitted": [
"6.4"
]
},
"state": {
"itemsAnalysed": 140744,
"itemsAnalysedSize": "63 MB",
"suspicionsFound": 1
},
"progress": {
"elapsedTime": "PT13.486S",
"elapsedTimeMilliseconds": 13486,
"itemsPerSecond": 19907
}
}
{
"suspicion": false,
"type": "SUMMARY",
"suspicionsFound": 1,
"totalTime": "PT13.487S"
}
jq
oder grep
zu verarbeiten, um einen Informationstyp zu filtern.Erkennungsbereich scope
Der Musterdetektor ermöglicht derzeit die Überprüfung von:
- Die Exporte und Importe von OSGi-Bundles stimmen nicht überein
- Überschreibungen von Sling-Ressourcentypen und -Supertypen (mit Inhaltsüberlagerungen für Suchpfade)
- Definitionen der Oak-Indizes (Kompatibilität)
- VLT-Pakete (Überverwendung)
- rep:User nodes-Kompatibilität (im Kontext der OAuth-Konfiguration)