Avaliação da complexidade da atualização com o Detector de padrões assessing-the-upgrade-complexity-with-the-pattern-detector
Visão geral overview
Esse recurso permite verificar instâncias de AEM existentes para sua capacidade de atualização, detectando padrões em uso que:
- Violar certas regras e são feitas em áreas que serão afetadas ou substituídas pela atualização
- 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 how-to-set-up
O Detector de padrões é lançado separadamente como um um pacote trabalhar 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 how-to-use
- 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:
-
Vá para o Console da Web AEM navegando até: https://serveraddress:serverport/system/console/configMgr
-
Selecionar Status - Detector de padrões conforme mostrado na imagem abaixo:
-
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 reactive-interface
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:
- Interface de texto sem formatação
- Interface JSON
Manipular a interface de texto simples handling-the-plain-text-interface
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 grep
comando:
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 handling-the-json-interface
Da mesma forma, o JSON pode ser processado usando o 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_br"
},
"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"
}
jq
ou grep
para filtrar o tipo de informação.Escopo de detecção scope
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)