Show Menu
TEMAS×

Evaluación de la complejidad de la actualización con el detector de patrones

Información general

Esta función le permite comprobar la capacidad de actualización de las instancias de AEM existentes detectando patrones en uso que:
  1. Violar ciertas reglas y se realizan en áreas que se verán afectadas o sobrescritas por la actualización
  2. Utilice una función de AEM 6.x o una API que no sea compatible con AEM 6.5 y que pueda romperse tras la actualización.
Esto podría servir como una evaluación del esfuerzo de desarrollo que implica la actualización a AEM 6.5.

Cómo configurar

El detector de patrones se publica por separado como un paquete que funciona en cualquier versión de AEM de origen desde la actualización 6.1 a la 6.5 dirigida a AEM 6.5. Se puede instalar mediante el Administrador de paquetes .

Usos

El detector de patrones se puede ejecutar en cualquier entorno, incluidas las instancias de desarrollo local. Sin embargo, para:
  • aumentar la velocidad de detección
  • evitar cualquier desaceleración en instancias críticas del negocio
al mismo tiempo, se recomienda ejecutarlo en entornos de ensayo lo más cercanos posible a los de producción en las áreas de aplicaciones de usuario, contenido y configuraciones.
Puede utilizar varios métodos para comprobar la salida del detector de patrones:
  • A través de la consola de Felix Inventory:
  1. Vaya a la consola web de AEM navegando a https://serveraddress:serverport/system/console/configMgr
  2. Seleccione Estado - Detector de patrones como se muestra en la siguiente imagen:
  • Mediante una interfaz JSON normal o basada en texto reactivo
  • Mediante una interfaz de líneas JSON reactiva, ​que genera un documento JSON independiente en cada línea.
Ambos métodos se detallan a continuación:

Interfaz reactiva

La interfaz reactiva permite el procesamiento del informe de infracción tan pronto como se detecta una sospecha.
El resultado está disponible actualmente en 2 direcciones URL:
  1. Interfaz de texto sin formato
  2. Interfaz JSON

Gestión de la interfaz de texto sin formato

La información del resultado tiene un formato de serie de entradas de evento. Existen dos canales: uno para publicar infracciones y el otro para publicar el progreso actual.
Se pueden obtener mediante los siguientes comandos:
curl -Nsu 'admin:admin' https://localhost:4502/system/console/status-pattern-detector.txt | tee patterns-report.log | grep SUSPICION

El resultado será el siguiente:
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

El progreso se puede filtrar mediante el grep comando:
curl -Nsu 'admin:admin' https://localhost:4502/system/console/status-pattern-detector.txt | tee patterns-report.log | grep PROGRESS

El resultado es el siguiente:
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

Gestión de la interfaz JSON

Del mismo modo, JSON puede procesarse con la herramienta jq en cuanto se publique.
curl -Nsu 'admin:admin' https://localhost:4502/system/console/status-pattern-detector.json | tee patterns-report.json | jq --unbuffered -C 'select(.suspicion == true)'

Con el resultado:
{
  "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"
  }
}

El progreso se informa cada 5 segundos y se puede recuperar excluyendo otros mensajes que no sean los marcados como sospechas:
curl -Nsu 'admin:admin' https://localhost:4502/system/console/status-pattern-detector.json | tee patterns-report.json | jq --unbuffered -C 'select(.suspicion == false)'

Con el resultado:
{
  "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"
}

El método recomendado es guardar todo el resultado de curl en el archivo y luego procesarlo a través jq o grep para filtrar el tipo de información.

Ámbito de detección

El detector de patrones actual permite comprobar:
  • Los paquetes OSGi exportan e importan no coinciden
  • Sobreutilización de tipos de recursos y supertipos (con superposiciones de contenido de ruta de búsqueda) de ventas
  • definiciones de índices Oak (compatibilidad)
  • Paquetes VLT (sobreutilización)
  • rep:Compatibilidad de nodos de usuario (en el contexto de la configuración de OAuth)
Tenga en cuenta que el Detector de patrones intenta predecir con precisión las advertencias de actualización. Sin embargo, puede generar falsos positivos en algunos casos.