利用模式检测器评估升级复杂度 assessing-the-upgrade-complexity-with-the-pattern-detector
概述 overview
此功能允许您通过检测使用以下模式的现有AEM实例,检查其升级性:
- 违反某些规则,并在受升级影响或覆盖的区域中执行
- 使用AEM 6.x功能或在AEM 6.4上不向后兼容且升级后可能中断的API。
这可以作为对升级到AEM 6.4所涉发展工作的评估。
如何设置 how-to-set-up
模式检测器作为 一个包 使用从6.1到6.5的任何源AEM版本,以升级AEM 6.5。 它可以使用 包管理器.
使用方法 how-to-use
NOTE
模式检测器可以在任何环境中运行,包括本地开发实例。 但是,为了:
- 提高检测率
- 避免业务关键型实例出现任何减速
同时,建议运行它 在暂存环境中 在用户应用程序、内容和配置方面尽可能接近生产应用程序。
可以使用多种方法检查模式检测器输出:
- 通过Felix库存控制台:
-
通过浏览到以下内容,转到AEM Web Console//serveraddress:serverport/system/console/configMgr
-
选择 状态 — 模式检测器 如下图所示:
-
通过基于反应文本或常规JSON界面
-
通过反应式JSON行界面,它会在每行中生成一个单独的JSON文档。
下面详细介绍了这两种方法:
反应接口 reactive-interface
被动接口允许在检测到怀疑后立即处理违规报告。
输出当前在2个URL下可用:
- 纯文本界面
- JSON界面
处理纯文本界面 handling-the-plain-text-interface
输出中的信息将格式化为一系列事件条目。 有两个渠道 — 一个用于发布违规,另一个用于发布当前进度。
可以使用以下命令获取这些参数:
curl -Nsu 'admin:admin' http://localhost:4502/system/console/status-pattern-detector.txt | tee patterns-report.log | grep SUSPICION
输出将如下所示:
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
可以使用 grep
命令:
curl -Nsu 'admin:admin' http://localhost:4502/system/console/status-pattern-detector.txt | tee patterns-report.log | grep PROGRESS
这将产生以下输出:
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
处理JSON界面 handling-the-json-interface
同样,可以使用 jq工具 一经发布就可以了。
curl -Nsu 'admin:admin' http://localhost:4502/system/console/status-pattern-detector.json | tee patterns-report.json | jq --unbuffered -C 'select(.suspicion == true)'
使用输出:
{
"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_cn"
},
"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"
}
}
进度每5秒报告一次,可通过排除标记为怀疑的消息以外的其他消息来获取进度:
curl -Nsu 'admin:admin' http://localhost:4502/system/console/status-pattern-detector.json | tee patterns-report.json | jq --unbuffered -C 'select(.suspicion == false)'
使用输出:
{
"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"
}
NOTE
建议将整个输出从curl保存到文件中,然后通过
jq
或 grep
以筛选信息类型。检测范围 scope
当前模式检测器允许检查:
- OSGi包导出和导入不匹配
- Sling资源类型和超类型(包含搜索路径内容叠加图)叠加使用
- Oak索引的定义(兼容性)
- VLT包(过度使用)
- rep:用户节点兼容性(在OAuth配置的上下文中)
recommendation-more-help
6a71a83d-c2e0-4ce7-a6aa-899aa3885b56