Vous consultez actuellement l'aide de la version:

Aperçu

Cette fonctionnalité vous permet de déterminer si les instances existantes d’AEM peuvent être mises à niveau en détectant les motifs qui :

  1. enfreignent certaines règles et qui sont exécutés dans des zones qui seront affectées ou écrasées par la mise à niveau ;
  2. utilisent une API ou une fonctionnalité d’AEM 6.x non rétrocompatible sur AEM 6.4 et qui risque d’échouer après la mise à niveau.

Cela peut servir à évaluer l’ampleur des tâches de développement nécessaires pour effectuer une mise à niveau vers AEM 6.4.

Méthode de configuration

L’outil de détection des motifs sera publié dans le cadre du nouveau module des activités préalables à la mise à niveau pour les versions sources 6.1 à 6.3 d’AEM. Il pourra être installé à l’aide du Gestionnaire de modules.

Consultez ces liens vers les modules de chaque version d’AEM 6 (à partir d’AEM 6.1) :

 

Procédure d’utilisation

Remarque :

L’outil de détection des motifs est conçu pour faire partie intégrante d’AEM 6.4. Toutefois, afin d’augmenter le taux de détection et d’éviter les ralentissements, il est recommandé de l’exécuter dans un environnement d’évaluation aussi proche que possible des environnements de production sur le plan des applications utilisateur, du contenu et des configurations.

Vous pouvez appliquer plusieurs méthodes pour vérifier le résultat de l’outil de détection des motifs :

  • Via la console Felix Inventory :
  1. Accédez à la console web AEM en vous rendant sur http://serveraddress:serverport/system/console/configMgr.

  2. Sélectionnez État – Outil de détection des motifs, comme illustré ci-dessous :

    screenshot-2018-2-5pattern-detector
  • Via une interface JSON standard ou une interface en mode texte réactive
  • Via une interface de lignes JSON réactive qui génère un document JSON distinct dans chaque ligne.

Vous trouverez, ci-dessous, une description détaillée de ces deux méthodes :

Interface réactive

L’interface réactive permet de traiter le rapport d’infractions dès que l’on suspecte le moindre problème.

Le résultat est actuellement disponible sous 2 URL :

  1. Interface en mode texte brut
  2. Interface JSON

Gestion de l’interface en mode texte brut

Les informations contenues dans la sortie se présentent sous la forme d’une série d’entrées d’événement. Il existe deux canaux : un pour la publication des infractions et un autre pour la publication de la progression.

Ils peuvent être obtenus en utilisant les commandes suivantes :

curl -Nsu 'admin:admin' http://localhost:4502/system/console/status-pattern-detector.txt | tee patterns-report.log | grep SUSPICION

La sortie se présente comme suit :

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

Vous pouvez filtrer la progression à l’aide de la commande grep :

curl -Nsu 'admin:admin' http://localhost:4502/system/console/status-pattern-detector.txt | tee patterns-report.log | grep PROGRESS

Ce qui donne le résultat suivant :

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

Gestion de l’interface JSON

De même, JSON pourra être traité à l’aide de l’outil jq dès qu’il sera publié.

curl -Nsu 'admin:admin' http://localhost:4502/system/console/status-pattern-detector.json | tee patterns-report.json | jq --unbuffered -C 'select(.suspicion == true)'

Avec le résultat suivant :

{
  "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"
  }
}

Un rapport de progression est généré toutes les 5 secondes et il est possible de récupérer les informations de progression en excluant les messages autres que ceux marqués comme suspects :

curl -Nsu 'admin:admin' http://localhost:4502/system/console/status-pattern-detector.json | tee patterns-report.json | jq --unbuffered -C 'select(.suspicion == false)'

Avec le résultat suivant :

{
  "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"
}

Remarque :

La méthode recommandée consiste à enregistrer toute la sortie à partir de curl dans le fichier, puis de la traiter via jq ou grep pour effectuer un filtrage sur le type d’informations.

Ce produit est distribué sous licence Creative Commons Attribution - Pas d’utilisation commerciale - Partage à l’identique 3.0 non transposé  Les publications Twitter™ et Facebook ne sont pas couvertes par les dispositions Creative Commons.

Mentions légales   |   Politique de confidentialité en ligne