Valutazione della complessità dell’aggiornamento con il rilevatore pattern
Panoramica overview
Questa funzione consente di verificare la possibilità di aggiornamento delle istanze AEM esistenti rilevando i pattern in uso che:
- Violano alcune regole e vengono eseguiti in aree che saranno interessate o sovrascritte dall’aggiornamento
- Utilizza una funzione di AEM 6.x o un’API che non è compatibile con le versioni precedenti in AEM 6.5 e che potrebbe interrompersi dopo l’aggiornamento.
Questo potrebbe servire come valutazione dello sforzo di sviluppo che è coinvolto nell’aggiornamento ad AEM 6.5.
Configurazione how-to-set-up
Il rilevatore pattern viene rilasciato separatamente come un pacchetto che funziona su qualsiasi versione di AEM di origine dalla 6.1 alla 6.5 e ha come destinazione l'aggiornamento a AEM 6.5. Può essere installato utilizzando Gestione pacchetti.
Guida all’uso how-to-use
- aumentare il tasso di rilevamento
- evitare rallentamenti nelle istanze business critical
È possibile utilizzare diversi metodi per controllare l'output del rilevatore pattern:
- Tramite la console Inventario Felix:
- 
                  Passa alla console Web di AEM navigando su https://serveraddress:serverport/system/console/configMgr 
- 
                  Selezionare Stato - Rilevatore pattern come illustrato nell'immagine seguente:   
- Tramite un'interfaccia JSON normale o basata su testo reattivo
- Tramite un’interfaccia per righe JSON reattive,  che genera un documento JSON separato in ogni riga.
Entrambi i metodi sono descritti di seguito:
Interfaccia reattiva reactive-interface
L’interfaccia reattiva consente l’elaborazione della segnalazione della violazione non appena viene rilevato un sospetto.
L’output è attualmente disponibile in 2 URL:
- Interfaccia testo normale
- Interfaccia JSON
Gestione dell’interfaccia testo normale handling-the-plain-text-interface
Le informazioni nell’output vengono formattate come una serie di voci evento. Sono disponibili due canali: uno per le violazioni di pubblicazione e il secondo per la pubblicazione dell’avanzamento corrente.
È possibile ottenerli utilizzando i seguenti comandi:
curl -Nsu 'admin:admin' https://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' https://localhost:4502/system/console/status-pattern-detector.txt | tee patterns-report.log | grep PROGRESS
Il che si traduce nel seguente output:
2018-02-13T14:19:26.909+01:00 [PROGRESS] emitted=127731/52 MB patterns (from=6.5), 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.5), 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
Gestione dell’interfaccia JSON handling-the-json-interface
Analogamente, JSON può essere elaborato utilizzando lo strumento jq non appena viene pubblicato.
curl -Nsu 'admin:admin' https://localhost:4502/system/console/status-pattern-detector.json | tee patterns-report.json | jq --unbuffered -C 'select(.suspicion == true)'
Con l'output:
{
  "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_it"
  },
  "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 recuperato escludendo messaggi diversi da quelli contrassegnati come sospetti:
curl -Nsu 'admin:admin' https://localhost:4502/system/console/status-pattern-detector.json | tee patterns-report.json | jq --unbuffered -C 'select(.suspicion == false)'
Con l'output:
{
  "suspicion": false,
  "timestamp": "2018-02-13T14:21:17.279+01:00",
  "type": "PROGRESS",
  "database": {
    "patternsEmitted": 127731,
    "patternsEmittedSize": "52 MB",
    "databasesEmitted": [
      "6.5"
    ]
  },
  "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.5"
    ]
  },
  "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.5"
    ]
  },
  "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 o grep per filtrare il tipo di informazioni.Ambito di rilevamento scope
Al momento il rilevatore pattern consente di controllare quanto segue:
- Bundle OSGi con esportazioni e importazioni non corrispondenti
- Sovrautilizzi di tipi di risorse e super tipi Sling (con sovrapposizioni di contenuto del percorso di ricerca)
- definizioni degli indici di Oak (compatibilità)
- Pacchetti VLT (uso eccessivo)
- rep:Compatibilità dei nodi utente (nel contesto della configurazione OAuth)