Registrazione per AEM as a Cloud Service
- Argomenti:
- File di registro
- Sviluppo
Creato per:
- Amministratore
- Sviluppatore
AEM as a Cloud Service è una piattaforma che consente ai clienti di includere codice personalizzato per creare esperienze univoche per la propria base di clienti. Tenendo presente questo aspetto, il servizio di registrazione è una funzione fondamentale per eseguire il debug e comprendere l’esecuzione del codice negli ambienti di sviluppo locali e cloud, in particolare negli ambienti di sviluppo di AEM as a Cloud Service.
Le impostazioni di registrazione e i livelli di registro di AEM as a Cloud Service vengono gestiti in file di configurazione memorizzati come parte del progetto AEM in Git e distribuiti come parte del progetto AEM tramite Cloud Manager. La registrazione in AEM as a Cloud Service può essere suddivisa in tre set logici:
- Registrazione AEM, che esegue la registrazione a livello di applicazione AEM
- Registrazione del server web/Dispatcher Apache HTTPD, che esegue la registrazione del server web e di Dispatcher sul livello di pubblicazione.
- La registrazione CDN, indicata dal nome, esegue la registrazione sulla CDN.
Registrazione AEM
La registrazione a livello di applicazione AEM è gestita da tre registri:
- Registri Java di AEM, che eseguono il rendering delle istruzioni di registrazione Java per l’applicazione AEM.
- Registri di richieste HTTP, che registrano le informazioni sulle richieste HTTP e le relative risposte fornite da AEM
- Registri di accesso HTTP, che registrano informazioni di riepilogo e richieste HTTP gestite da AEM
Registrazione Java AEM
AEM as a Cloud Service fornisce accesso alle istruzioni di registro Java. Gli sviluppatori di applicazioni per AEM devono seguire le best practice generali per la registrazione Java, registrando le istruzioni pertinenti sull’esecuzione del codice personalizzato, ai seguenti livelli di registro:
Quando la registrazione DEBUG è attiva, vengono registrate le istruzioni che forniscono un’immagine chiara delle attività che si verificano ed eventuali parametri chiave che influiscono sull’elaborazione.
- Sviluppo locale
- Ambiente di sviluppo
Quando la registrazione WARN è attiva, vengono registrate solo le istruzioni che indicano le condizionali che si stanno avvicinando alla sub-ottimizzazione.
- Sviluppo locale
- Ambiente di sviluppo
- Ambiente di staging
Quando la registrazione degli errori è attiva, vengono registrate solo le istruzioni che indicano errori. Le istruzioni del registro degli ERRORI indicano un problema grave che deve essere risolto il prima possibile.
- Sviluppo locale
- Ambiente di sviluppo
- Ambiente di staging
- Produzione
Sebbene la registrazione Java supporti diversi altri livelli di granularità della registrazione, AEM as a Cloud Service consiglia di utilizzare i tre livelli descritti in precedenza.
I livelli di registro di AEM sono impostati per tipo di ambiente tramite la configurazione OSGi, che a sua volta viene eseguita su Git e distribuita tramite Cloud Manager in AEM as a Cloud Service. Per questo motivo, è consigliabile mantenere coerenza e conoscenza delle istruzioni di registro per i tipi di ambiente in modo che i registri disponibili tramite AEM as Cloud Service siano disponibili al livello di registro ottimale senza richiedere la ridistribuzione dell’applicazione con la configurazione a livello di registro aggiornata.
Esempio di output del registro
22.06.2020 18:33:30.120 [cm-p12345-e6789-aem-author-86657cbb55-xrnzq] *ERROR* [qtp501076283-1809] io.prometheus.client.dropwizard.DropwizardExports Failed to get value from Gauge
22.06.2020 18:33:30.229 [cm-p12345-e6789-aem-author-86657cbb55-xrnzq] *INFO* [qtp501076283-1805] org.apache.sling.auth.core.impl.SlingAuthenticator getAnonymousResolver: Anonymous access not allowed by configuration - requesting credentials
22.06.2020 18:33:30.370 [cm-p12345-e6789-aem-author-86657cbb55-xrnzq] *INFO* [73.91.59.34 [1592850810364] GET /libs/granite/core/content/login.html HTTP/1.1] org.apache.sling.i18n.impl.JcrResourceBundle Finished loading 0 entries for 'en_US' (basename: <none>) in 4ms
22.06.2020 18:33:30.372 [cm-p12345-e6789-aem-author-86657cbb55-xrnzq] *INFO* [FelixLogListener] org.apache.sling.i18n Service [5126, [java.util.ResourceBundle]] ServiceEvent REGISTERED
22.06.2020 18:33:30.372 [cm-p12345-e6789-aem-author-86657cbb55-xrnzq] *WARN* [73.91.59.34 [1592850810364] GET /libs/granite/core/content/login.html HTTP/1.1] libs.granite.core.components.login.login$jsp j_reason param value 'unknown' cannot be mapped to a valid reason message: ignoring
Formato registro
Registratori configurazione
I registri Java di AEM sono definiti come configurazione OSGi e sono quindi destinati a ambienti AEM as a Cloud Service specifici utilizzando le cartelle in modalità di esecuzione.
Configura la registrazione Java per i pacchetti Java personalizzati tramite le configurazioni OSGi per la factory Sling LogManager. Sono supportate tre proprietà di configurazione:
org.apache.sling.commons.log.names
org.apache.sling.commons.log.level
org.apache.sling.commons.log.names
org.apache.sling.commons.log.file
logs/error.log
La modifica di altre proprietà di configurazione OSGi LogManager può causare problemi di disponibilità in AEM as a Cloud Service.
Di seguito sono riportati alcuni esempi delle configurazioni di registrazione consigliate (utilizzando il pacchetto Java segnaposto di com.example
) per i tre tipi di ambiente AEM as a Cloud Service.
Ambiente di sviluppo
/apps/my-app/config/org.apache.sling.commons.log.LogManager.factory.config-example.cfg.json
{
"org.apache.sling.commons.log.names": ["com.example"],
"org.apache.sling.commons.log.level": "debug"
"org.apache.sling.commons.log.file": "logs/error.log"
}
Ambiente di staging
/apps/my-app/config.stage/org.apache.sling.commons.log.LogManager.factory.config-example.cfg.json
{
"org.apache.sling.commons.log.names": ["com.example"],
"org.apache.sling.commons.log.level": "warn"
"org.apache.sling.commons.log.file": "logs/error.log"
}
Produzione
/apps/my-app/config.prod/org.apache.sling.commons.log.LogManager.factory.config-example.cfg.json
{
"org.apache.sling.commons.log.names": ["com.example"],
"org.apache.sling.commons.log.level": "error"
"org.apache.sling.commons.log.file": "logs/error.log"
}
Registrazione richieste HTTP AEM
La registrazione delle richieste HTTP di AEM as a Cloud Service fornisce informazioni approfondite sulle richieste HTTP effettuate ad AEM e sulle relative risposte HTTP in ordine di tempo. Questo registro è utile per comprendere le richieste HTTP effettuate ad AEM e l’ordine in cui vengono elaborate e a cui rispondono.
Per comprendere questo registro, è fondamentale mappare le coppie di richiesta HTTP e risposta in base ai rispettivi ID, indicati dal valore numerico tra parentesi. Spesso le richieste e le risposte corrispondenti presentano altre richieste HTTP e risposte interposte tra loro nel registro.
Registro di esempio
29/Apr/2020:19:14:21 +0000 [137] > POST /conf/global/settings/dam/adminui-extension/metadataprofile/ HTTP/1.1 [cm-p1234-e5678-aem-author-59555cb5b8-q7l9s]
...
29/Apr/2020:19:14:22 +0000 [139] > GET /mnt/overlay/dam/gui/content/processingprofilepage/metadataprofiles/editor.html/conf/global/settings/dam/adminui-extension/metadataprofile/main HTTP/1.1 [cm-p1234-e5678-aem-author-59555cb5b8-q7l9s]
...
29/Apr/2020:19:14:21 +0000 [137] <- 201 text/html 111ms [cm-p1234-e5678-aem-author-59555cb5b8-q7l9s]
...
29/Apr/2020:19:14:22 +0000 [139] <- 200 text/html;charset=utf-8 637ms [cm-p1234-e5678-aem-author-59555cb5b8-q7l9s]
Formato registro
[137]
Configurazione del registro
Il registro richieste HTTP di AEM non è configurabile in AEM as a Cloud Service.
Registrazione accesso HTTP AEM
La registrazione degli accessi HTTP in AEM as Cloud Service mostra le richieste HTTP in ordine temporale. Ogni voce di registro rappresenta la richiesta HTTP che accede ad AEM.
Questo registro è utile per comprendere rapidamente quali richieste HTTP vengono effettuate ad AEM, se l’esito è positivo, visualizzando il codice di stato della risposta HTTP associato e il tempo impiegato per completare la richiesta HTTP. Questo registro può essere utile anche per eseguire il debug dell’attività di un utente specifico filtrando le voci del registro in base agli utenti.
Esempio di output del registro
cm-p1234-e26813-aem-author-59555cb5b8-8kgr2 - example@adobe.com 30/Apr/2020:17:37:14 +0000 "GET /libs/granite/ui/references/clientlibs/references.lc-5188e85840c529149e6cd29d94e74ad5-lc.min.css HTTP/1.1" 200 1141 "https://author-p10711-e26813.adobeaemcloud.com/mnt/overlay/dam/gui/content/assets/metadataeditor.external.html?item=/content/dam/en/images/example.jpeg&_charset_=utf8" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36"
cm-p1234-e26813-aem-author-59555cb5b8-8kgr2 - example@adobe.com 30/Apr/2020:17:37:14 +0000 "GET /libs/dam/gui/coral/components/admin/customthumb/clientlibs.lc-60e4443805c37afa0c74b674b141f1df-lc.min.css HTTP/1.1" 200 809 "https://author-p10711-e26813.adobeaemcloud.com/mnt/overlay/dam/gui/content/assets/metadataeditor.external.html?item=/content/dam/en/images/example.jpeg&_charset_=utf8" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36"
cm-p1234-e26813-aem-author-59555cb5b8-8kgr2 - example@adobe.com 30/Apr/2020:17:37:14 +0000 "GET /libs/dam/gui/coral/components/admin/metadataeditor/clientlibs/metadataeditor.lc-4a2226d8232f8b7ab27d24820b9ddd64-lc.min.js HTTP/1.1" 200 7965 "https://author-p10711-e26813.adobeaemcloud.com/mnt/overlay/dam/gui/content/assets/metadataeditor.external.html?item=/content/dam/en/images/example.jpeg&_charset_=utf8" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36"
/libs/granite/ui/references/clientlibs/references.lc-5188e85840c529149e6cd29d94e74ad5-lc.min.css
"https://author-p1234-e4444.adobeaemcloud.com/mnt/overlay/dam/gui/content/assets/metadataeditor.external.html?item=/content/dam/wknd/en/adventures/surf-camp-in-costa-rica/adobestock_266405335.jpeg&_charset_=utf8"
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36"
Configurazione del registro di accesso HTTP
Il registro dell’accesso HTTP non è configurabile in AEM as a Cloud Service.
Registrazione del server web Apache e di Dispatcher
AEM as a Cloud Service fornisce tre registri per i server web Apache e il livello dispatcher sulla pubblicazione:
- Registro accesso server web Apache HTTPD
- Registro errori server web Apache HTTPD
- Registro Dispatcher
Questi registri sono disponibili solo per il livello di pubblicazione.
Questo set di registri fornisce informazioni approfondite sulle richieste HTTP al livello di pubblicazione AEM as a Cloud Service prima che tali richieste raggiungano l’applicazione AEM. È importante comprendere che, idealmente, la maggior parte delle richieste HTTP ai server di livello Publish sono gestite da contenuto memorizzato nella cache dal server web Apache HTTPD e da AEM Dispatcher e non raggiungono mai l’applicazione AEM stessa. Pertanto, nei registri Java, Request o Access di AEM non sono presenti istruzioni di registro per queste richieste.
Registro accesso server web Apache HTTPD
Il registro di accesso al server web Apache HTTP fornisce istruzioni per ogni richiesta HTTP che raggiunge il server web/Dispatcher del livello di pubblicazione. Le richieste servite da una rete CDN a monte non vengono riportate in questi registri.
Consulta le informazioni sul formato del registro errori nella documentazione ufficiale di Apache.
Esempio di output del registro
cm-p1234-e5678-aem-publish-b86c6b466-qpfvp - - 17/Jul/2020:09:14:41 +0000 "GET /etc.clientlibs/wknd/clientlibs/clientlib-site/resources/images/favicons/favicon-32.png HTTP/1.1" 200 715 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Firefox/78.0"
cm-p1234-e5678-aem-publish-b86c6b466-qpfvp - - 17/Jul/2020:09:14:41 +0000 "GET /etc.clientlibs/wknd/clientlibs/clientlib-site/resources/images/favicons/favicon-512.png HTTP/1.1" 200 9631 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Firefox/78.0"
cm-p1234-e5678-aem-publish-b86c6b466-qpfvp - - 17/Jul/2020:09:14:42 +0000 "GET /etc.clientlibs/wknd/clientlibs/clientlib-site/resources/images/country-flags/US.svg HTTP/1.1" 200 810 "https://publish-p6902-e30226.adobeaemcloud.com/content/wknd/us/en.html" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Firefox/78.0"
Formato registro
Configurazione del registro di accesso al server web Apache HTTPD
Questo registro non è configurabile in AEM as a Cloud Service.
Registro errori server web Apache HTTPD
Il registro errori del server web Apache HTTP fornisce istruzioni per ogni errore nel server web/Dispatcher del livello di pubblicazione.
Consulta le informazioni sul formato del registro errori nella documentazione ufficiale di Apache.
Esempio di output del registro
Fri Jul 17 02:19:48.093820 2020 [mpm_worker:notice] [pid 1:tid 140272153361288] [cm-p1234-e30226-aem-publish-b86c6b466-b9427] AH00292: Apache/2.4.43 (Unix) Communique/4.3.4-20200424 mod_qos/11.63 configured -- resuming normal operations
Fri Jul 17 02:19:48.093874 2020 [core:notice] [pid 1:tid 140272153361288] [cm-p1234-e30226-aem-publish-b86c6b466-b9427] AH00094: Command line: 'httpd -d /etc/httpd -f /etc/httpd/conf/httpd.conf -D FOREGROUND -D ENVIRONMENT_PROD'
Fri Jul 17 02:29:34.517189 2020 [mpm_worker:notice] [pid 1:tid 140293638175624] [cm-p1234-e30226-aem-publish-b496f64bf-5vckp] AH00295: caught SIGTERM, shutting down
Formato registro
Configurazione del registro errori del server web Apache HTTPD
I livelli di log mod_rewrite sono definiti dalla variabile REWRITE_LOG_LEVEL nel file conf.d/variables/global.var
.
Può essere impostato su error, warn, info, debug e trace1 - trace8, con il valore predefinito warn. Per eseguire il debug di RewriteRules, si consiglia di aumentare il livello di registro a trace2. È consigliabile eseguire il debug delle regole di riscrittura utilizzando Dispatcher SDK. Il livello di registro massimo per AEM as a Cloud Service è debug
. Pertanto, attualmente non è possibile eseguire il debug delle regole di riscrittura nel cloud.
Per ulteriori informazioni, consulta la documentazione del modulo mod_rewrite.
Per impostare il livello di registro per ogni ambiente, utilizza il ramo condizionale appropriato nel file global.var, come descritto di seguito:
Define REWRITE_LOG_LEVEL debug
<IfDefine ENVIRONMENT_STAGE>
...
Define REWRITE_LOG_LEVEL warn
...
</IfDefine>
<IfDefine ENVIRONMENT_PROD>
...
Define REWRITE_LOG_LEVEL error
...
</IfDefine>
Registro Dispatcher
Esempio
[17/Jul/2020:23:48:06 +0000] [I] [cm-p12904-e25628-aem-publish-6c5f7c9dbd-mzcvr] "GET /content/wknd/us/en/adventures.html" - 475ms [publishfarm/0] [action miss] "publish-p12904-e25628.adobeaemcloud.com"
[17/Jul/2020:23:48:07 +0000] [I] [cm-p12904-e25628-aem-publish-6c5f7c9dbd-mzcvr] "GET /content/wknd/us/en/adventures/climbing-new-zealand/_jcr_content/root/responsivegrid/carousel/item_1571266094599.coreimg.jpeg/1473680817282/sport-climbing.jpeg" 302 10ms [publishfarm/0] [action none] "publish-p12904-e25628.adobeaemcloud.com"
[17/Jul/2020:23:48:07 +0000] [I] [cm-p12904-e25628-aem-publish-6c5f7c9dbd-mzcvr] "GET /content/wknd/us/en/adventures/ski-touring-mont-blanc/_jcr_content/root/responsivegrid/carousel/item_1571168419252.coreimg.jpeg/1572047288089/adobestock-238230356.jpeg" 302 11ms [publishfarm/0] [action none] "publish-p12904-e25628.adobeaemcloud.com"
Formato registro
Configurazione del registro errori di Dispatcher
I livelli di registro del dispatcher sono definiti dalla variabile DISP_LOG_LEVEL nel file conf.d/variables/global.var
.
Può essere impostato su error, warn, info, debug e trace1, con il valore predefinito warn.
Sebbene la registrazione Dispatcher supporti diversi altri livelli di granularità della registrazione, AEM as a Cloud Service consiglia di utilizzare i livelli descritti di seguito.
Per impostare il livello di registro per ogni ambiente, utilizzare il ramo condizionale appropriato nel file global.var
, come descritto di seguito:
Define DISP_LOG_LEVEL debug
<IfDefine ENVIRONMENT_STAGE>
...
Define DISP_LOG_LEVEL warn
...
</IfDefine>
<IfDefine ENVIRONMENT_PROD>
...
Define DISP_LOG_LEVEL error
...
</IfDefine>
Registro CDN
AEM as a Cloud Service fornisce l’accesso ai registri CDN, utili per i casi d’uso, inclusa l’ottimizzazione della percentuale di hit della cache. Il formato di registro CDN non può essere personalizzato e non è possibile impostarlo su modalità diverse, ad esempio info, avvertenza o errore.
Esempio
{
"timestamp": "2023-05-26T09:20:01+0000",
"ttfb": 19,
"cli_ip": "147.160.230.112",
"cli_country": "CH",
"rid": "974e67f6",
"req_ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Safari/605.1.15",
"host": "example.com",
"url": "/content/hello.png",
"method": "GET",
"res_ctype": "image/png",
"cache": "PASS",
"status": 200,
"res_age": 0,
"pop": "PAR",
"rules": "match=Enable-SQL-Injection-and-XSS-waf-rules-globally,waf=SQLI,action=blocked"
}
Formato registro
I registri CDN sono distinti dagli altri registri in quanto sono conformi al formato json.
Come accedere ai registri
Ambienti cloud
È possibile accedere ai registri di AEM as a Cloud Service per Cloud Services scaricandoli tramite l’interfaccia di Cloud Manager o scaricandoli dalla riga di comando tramite l’interfaccia della riga di comando di Adobe I/O. Per ulteriori informazioni, vedere la documentazione di registrazione di Cloud Manager.
Registri per aree geografiche di pubblicazione aggiuntive
Se per un particolare ambiente sono abilitate ulteriori aree di pubblicazione, i registri di ciascuna area saranno disponibili per il download da Cloud Manager, come indicato in precedenza.
I registri di AEM e i registri del dispatcher per le aree di pubblicazione aggiuntive specificheranno l’area nelle prime 3 lettere dopo l’ID ambiente, come esemplificato da nld2 nell’esempio seguente, che fa riferimento a un’ulteriore istanza di pubblicazione di AEM situata nei Paesi Bassi:
cm-p7613-e12700-nld2-aem-publish-bcbb77549-5qmmt 127.0.0.1 - 07/Nov/2023:23:57:11 +0000 "HEAD /libs/granite/security/currentuser.json HTTP/1.1" 200 - "-" "Java/11.0.19"
SDK locale
AEM as a Cloud Service SDK fornisce file di registro per supportare lo sviluppo locale.
I registri di AEM si trovano nella cartella crx-quickstart/logs
, dove è possibile visualizzare i seguenti registri:
- Registro Java AEM:
error.log
- Registro richieste HTTP AEM:
request.log
- Registro dell'accesso HTTP di AEM:
access.log
I registri del livello Apache, incluso Dispatcher, si trovano nel contenitore Docker che contiene Dispatcher. Consulta la documentazione di Dispatcher per informazioni su come avviare Dispatcher.
Per recuperare i registri:
-
Nella riga di comando, digitare
docker ps
per elencare i contenitori -
Per accedere al contenitore, digita "
docker exec -it <container> /bin/sh
", dove<container>
è l'ID del contenitore del dispatcher del passaggio precedente -
Passa alla directory principale della cache in
/mnt/var/www/html
-
I registri si trovano in
/etc/httpd/logs
-
Esamina i registri: sono accessibili nella cartella XYZ, dove è possibile visualizzare i seguenti registri:
- Registro di accesso al server web Apache HTTPD -
httpd_access.log
- Registri errori server web Apache HTTPD -
httpd_error.log
- Registri Dispatcher -
dispatcher.log
- Registro di accesso al server web Apache HTTPD -
I registri vengono stampati direttamente sull'uscita terminale. Nella maggior parte dei casi, questi registri devono essere DEBUG, operazione che può essere eseguita passando il livello Debug come parametro durante l’esecuzione di Docker. Ad esempio:
DISP_LOG_LEVEL=Debug ./bin/docker_run.sh out docker.for.mac.localhost:4503 8080
Debug di produzione e staging
In circostanze eccezionali, è necessario modificare i livelli di registro per ottenere una granularità più precisa negli ambienti di stage o produzione.
Anche se questo è possibile, richiede modifiche ai livelli di registro nei file di configurazione in Git da Warn and Error to Debug e l’esecuzione di una distribuzione in AEM as a Cloud Service per registrare tali modifiche di configurazione negli ambienti.
A seconda del traffico e della quantità di istruzioni di registro scritte da Debug, questo può comportare un impatto negativo sulle prestazioni dell’ambiente. Pertanto, si consiglia di modificare i livelli di debug di Stage e Production come segue:
- Fatto con buon senso, e solo se assolutamente necessario
- riportati ai livelli appropriati e ridistribuiti il più presto possibile
Inoltro del registro
Anche se i registri possono essere scaricati da Cloud Manager, per alcune organizzazioni è utile inoltrarli a una destinazione di registrazione preferita. AEM supporta i registri di streaming per le seguenti destinazioni:
- Archiviazione BLOB di Azure
- Datadog
- HTTPD
- Elasticsearch (e OpenSearch)
- Splunk
Per informazioni dettagliate su come configurare questa funzione, consulta l'articolo sull'inoltro del registro.