Avaliação da complexidade da atualização com o Detector de padrões

Visão geral

Esse recurso permite verificar instâncias de AEM existentes para sua capacidade de atualização, detectando padrões em uso que:

  1. Violar certas regras e são feitas em áreas que serão afetadas ou substituídas pela atualização
  2. Use um recurso AEM 6.x ou uma API que não seja compatível com versões anteriores do AEM 6.4 e possa ser interrompida após a atualização.

Tal poderia servir de avaliação do esforço de desenvolvimento que está envolvido na modernização para o AEM 6.4.

Como configurar

O Detector de padrões é lançado separadamente como um um pacote funcionando em qualquer versão de AEM de origem de 6.1 para 6.5, direcionando AEM atualização 6.5. Ele pode ser instalado usando o Gerenciador de Pacotes.

Como usar

OBSERVAÇÃO

O Detector de padrões pode ser executado em qualquer ambiente, incluindo instâncias de desenvolvimento local. No entanto, para:

  • aumentar a taxa de detecção
  • evitar qualquer lentidão em instâncias críticas para os negócios
    ao mesmo tempo, é recomendável executá-lo em ambientes de preparo que estejam o mais próximo possível dos de produção nas áreas de aplicativos, conteúdo e configurações do usuário.

Você pode usar vários métodos para verificar a saída do Detector de padrões:

  • Através do console Felix Inventory:
  1. Vá para o Console da Web AEM navegando até: https://serveraddress:serverport/system/console/configMgr

  2. Selecione Status - Pattern Detector conforme mostrado na imagem abaixo:

    captura de tela-2018-2-5detector de padrões

  • Por meio de um texto reativo com base em uma interface JSON regular

  • Por meio de uma interface de linhas JSON reativa, que gera um documento JSON separado em cada linha.

Ambos os métodos estão detalhados abaixo:

Interface reativa

A interface reativa permite o processamento do relatório de violação assim que uma suspeita é detectada.

A saída está disponível atualmente em 2 URLs:

  1. Interface de texto sem formatação
  2. Interface JSON

Manipular a interface de texto simples

As informações na saída são formatadas como uma série de entradas de evento. Há dois canais: um para violações de publicação e outro para a publicação do progresso atual.

Eles podem ser obtidos usando os seguintes comandos:

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

A saída terá esta aparência:

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

O progresso pode ser filtrado usando o comando grep:

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

O que resulta na seguinte saída:

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

Manipular a interface JSON

Da mesma forma, o JSON pode ser processado usando a ferramenta jq assim que for publicado.

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

Com a saída:

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

O progresso é relatado a cada 5 segundos e pode ser obtido excluindo outras mensagens além daquelas marcadas como suspeitas:

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

Com a saída:

{
  "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"
}
OBSERVAÇÃO

A abordagem recomendada é salvar toda a saída do curl no arquivo e processá-la por meio de jq ou grep para filtrar o tipo de informação.

Escopo de detecção

Atualmente, o Detector de padrões permite verificar:

  • Incompatibilidade de exportações e importações de pacotes OSGi
  • Tipos de recursos Sling e supertipos (com sobreposições de conteúdo de caminho de pesquisa)
  • definições de índices Oak (compatibilidade)
  • Pacotes VLT (utilização excessiva)
  • rep:Compatibilidade de nós do usuário (no contexto da configuração OAuth)

Nesta página

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now