Questa funzione consente di controllare AEM istanze esistenti per verificarne la aggiornabilità rilevando i pattern in uso che:
Ciò potrebbe servire come valutazione dello sforzo di sviluppo che comporta l'aggiornamento al AEM 6.4.
Il rilevamento dei pattern viene rilasciato separatamente come un pacchetto che funziona su qualsiasi versione di AEM sorgente da 6.1 a 6.5 per l'AEM di destinazione 6.5. Può essere installato utilizzando la Gestione pacchetti.
Il rilevamento dei pattern può essere eseguito in qualsiasi ambiente, comprese le istanze di sviluppo locale. Tuttavia, al fine di:
È possibile utilizzare diversi metodi per controllare l'output di Rilevamento pattern:
Andate alla console Web AEM sfogliando: https://serveraddress:serverport/system/console/configMgr
Selezionare Stato - Rilevamento pattern come illustrato nell'immagine seguente:
Tramite un'interfaccia JSON reattiva basata su testo o normale
Tramite un'interfaccia di linee JSON reattiva, che genera un documento JSON separato in ogni riga.
Entrambi i metodi sono descritti di seguito:
L'interfaccia reattiva consente l'elaborazione della segnalazione di violazione non appena viene rilevato un sospetto.
L’output è attualmente disponibile in 2 URL:
Le informazioni nell'output sono formattate come una serie di voci dell'evento. Esistono due canali: uno per pubblicare le violazioni e l’altro per pubblicare i progressi correnti.
Possono essere ottenuti utilizzando i seguenti comandi:
curl -Nsu 'admin:admin' http://localhost:4502/system/console/status-pattern-detector.txt | tee patterns-report.log | grep SUSPICION
L'output sarà simile al seguente:
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
L'avanzamento può essere filtrato utilizzando il comando grep
:
curl -Nsu 'admin:admin' http://localhost:4502/system/console/status-pattern-detector.txt | tee patterns-report.log | grep PROGRESS
che genera il seguente output:
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
Allo stesso modo, JSON può essere elaborato utilizzando jq tool non appena viene pubblicato.
curl -Nsu 'admin:admin' http://localhost:4502/system/console/status-pattern-detector.json | tee patterns-report.json | jq --unbuffered -C 'select(.suspicion == true)'
Con l'uscita:
{
"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"
},
"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"
}
}
L'avanzamento viene segnalato ogni 5 secondi e può essere ottenuto escludendo altri messaggi oltre a quelli contrassegnati come sospetti:
curl -Nsu 'admin:admin' http://localhost:4502/system/console/status-pattern-detector.json | tee patterns-report.json | jq --unbuffered -C 'select(.suspicion == false)'
Con l'uscita:
{
"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"
}
L'approccio consigliato consiste nel salvare l'intero output dall'archivio e quindi elaborarlo tramite jq
o grep
per filtrare il tipo di informazioni.
Al momento il rilevamento dei pattern consente di controllare: