패턴 감지기를 사용한 업그레이드 복잡성 평가
개요 overview
이 기능을 사용하면 사용 중인 패턴을 감지하여 기존 AEM 인스턴스의 업그레이드 가능성을 확인할 수 있습니다.
- 특정 규칙을 위반하고 업그레이드의 영향을 받거나 덮어쓸 영역에서 수행됩니다.
- AEM 6.5에서 역으로 호환되지 않으며 업그레이드 후 잠재적으로 중단될 수 있는 AEM 6.x 기능 또는 API를 사용합니다.
이는 AEM 6.5로의 업그레이드와 관련된 개발 노력을 평가하는 역할을 할 수 있습니다.
설정 방법 how-to-set-up
패턴 감지기는 6.1에서 6.5 타깃팅 AEM 6.5 업그레이드로 소스 AEM 버전에서 작동하는 하나의 패키지로 별도로 릴리스됩니다. 패키지 관리자를 사용하여 설치할 수 있습니다.
사용 방법 how-to-use
- 탐지율 향상
- 비즈니스 크리티컬 인스턴스의 속도 저하 방지
다음과 같은 여러 방법을 사용하여 패턴 감지기 출력을 확인할 수 있습니다.
- Felix 인벤토리 콘솔을 통해:
-
https://serveraddress:serverport/system/console/configMgr(으)로 이동하여 AEM 웹 콘솔로 이동
-
아래 그림과 같이 상태 - 패턴 탐지기 를 선택합니다.
- 반응형 텍스트 기반 또는 일반 JSON 인터페이스를 통해
- 각 행에 별도의 JSON 문서를 생성하는 반응성 JSON 라인 인터페이스를 통해).
이 두 방법은 아래에 자세히 설명되어 있습니다.
반응형 인터페이스 reactive-interface
반응형 인터페이스는 의혹이 감지되는 즉시 위반 신고 처리를 허용한다.
출력은 현재 2개의 URL에서 사용할 수 있습니다.
- 일반 텍스트 인터페이스
- JSON 인터페이스
일반 텍스트 인터페이스 처리 handling-the-plain-text-interface
출력의 정보는 일련의 이벤트 항목으로 서식이 지정됩니다. 두 가지 채널이 있습니다. 하나는 게시 위반에 대한 것이고 다른 하나는 현재 진행률을 게시하기 위한 것입니다.
다음 명령을 사용하여 가져올 수 있습니다.
curl -Nsu 'admin:admin' https://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' https://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.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
JSON 인터페이스 처리 handling-the-json-interface
마찬가지로 JSON은 게시되는 즉시 jq 도구를 사용하여 처리할 수 있습니다.
curl -Nsu 'admin:admin' https://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_kr"
},
"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' https://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.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"
}
jq
또는 grep
을(를) 통해 처리하여 정보 유형을 필터링하는 것입니다.감지 범위 scope
현재 패턴 감지기를 사용하여 다음을 확인할 수 있습니다.
- OSGi 번들 내보내기 및 가져오기 불일치
- Sling 리소스 유형 및 슈퍼 유형(검색 경로 컨텐츠 오버레이 포함) 오버레이
- Oak 인덱스 정의(호환성)
- VLT 패키지(초과 사용)
- rep:사용자 노드 호환성(OAuth 구성 컨텍스트)