Logon no AEM as a Cloud Service logging-for-aem-as-a-cloud-service
O AEM as a Cloud Service é uma plataforma na qual os clientes incluem código personalizado para criar experiências exclusivas para sua base de clientes. Com isso em mente, o serviço de registro é uma função crítica para depurar e entender a execução de código em ambientes de desenvolvimento local e de nuvem, especialmente os ambientes de desenvolvimento do AEM as a Cloud Service.
As configurações de registro do AEM as a Cloud Service e os níveis de registro são gerenciados em arquivos de configuração armazenados como parte do projeto AEM no Git e implantados como parte do projeto AEM por meio do Cloud Manager. O logon no AEM as a Cloud Service pode ser dividido em três conjuntos lógicos:
- Registro de AEM, que realiza o registro no nível do aplicativo AEM
- Registro do Apache HTTPD Web Server/Dispatcher, que realiza o registro do servidor Web e do Dispatcher na camada do Publish.
- O registro em log da CDN, que, como seu nome indica, executa registros em log na CDN. Esse recurso será lançado gradualmente para os clientes no início de setembro.
Registro de AEM aem-logging
O registro no nível do aplicativo AEM é feito por três registros:
- Registros Java do AEM, que renderizam instruções de registro Java para o aplicativo AEM.
- Logs de solicitação HTTP, que registram informações sobre solicitações HTTP e suas respostas veiculadas pelo AEM
- Logs de acesso HTTP, que registram informações resumidas e solicitações HTTP atendidas pelo AEM
Registro em Java do AEM aem-java-logging
O AEM as a Cloud Service fornece acesso às instruções de log Java. Os desenvolvedores de aplicativos para AEM devem seguir as práticas recomendadas gerais de registro em Java, registrando as instruções pertinentes sobre a execução do código personalizado, nos seguintes níveis de registro:
Embora o registro em log do Java seja compatível com vários outros níveis de granularidade de registro, a AEM as a Cloud Service recomenda usar os três níveis descritos acima.
Os níveis de log do AEM são definidos por tipo de ambiente por meio da configuração do OSGi, que por sua vez é comprometida com o Git, e implantada pelo Cloud Manager na AEM as a Cloud Service. Por causa disso, é melhor manter as instruções de registro consistentes e bem conhecidas para tipos de ambiente para garantir que os registros disponíveis via AEM as Cloud Service estejam disponíveis no nível de registro ideal, sem exigir a reimplantação do aplicativo com a configuração atualizada do nível de registro.
Exemplo de Saída de Log
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 do Log
Loggers de configuração configuration-loggers
Os logs Java do AEM são definidos como configuração OSGi e, portanto, têm como alvo ambientes AEM as a Cloud Service específicos usando pastas de modo de execução.
Configure o log Java para pacotes Java personalizados por meio de configurações OSGi para a fábrica do Sling LogManager. Há três propriedades de configuração compatíveis:
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
A alteração de outras propriedades de configuração OSGi do LogManager pode resultar em problemas de disponibilidade no AEM as a Cloud Service.
A seguir estão exemplos das configurações de log recomendadas (usando o pacote Java de espaço reservado com.example
) para os três tipos de ambiente do AEM as a Cloud Service.
Desenvolvimento development
/apps/my-app/config/org.apache.sling.commons.log.LogManager.fatory.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"
}
Fase stage
/apps/my-app/config.stage/org.apache.sling.commons.log.LogManager.fatory.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"
}
Produção productiomn
/apps/my-app/config.prod/org.apache.sling.commons.log.LogManager.fatory.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"
}
Registro de solicitação HTTP de AEM aem-http-request-logging
O registro de solicitações HTTP do AEM as a Cloud Service fornece informações sobre as solicitações HTTP feitas ao AEM e suas respostas HTTP em ordem de tempo. Esse log é útil para entender as solicitações HTTP feitas ao AEM e a ordem em que são processadas e respondidas.
A chave para entender esse log é mapear a solicitação HTTP e os pares de resposta por suas IDs, indicadas pelo valor numérico entre parênteses. Muitas vezes, as solicitações e suas respostas correspondentes têm outras solicitações HTTP e respostas interjetadas entre elas no log.
Log de Exemplo
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 do Log
Configuração do registro configuring-the-log
O log de Solicitação HTTP de AEM não pode ser configurado no AEM as a Cloud Service.
Registro de acesso HTTP do AEM aem-http-access-logging
O registro de acesso HTTP do AEM as Cloud Service mostra solicitações HTTP em ordem de tempo. Cada entrada de log representa a Solicitação HTTP que acessa o AEM.
Esse log é útil para entender rapidamente quais solicitações HTTP estão sendo feitas ao AEM, se elas são bem-sucedidas observando o código de status de resposta HTTP que as acompanha e quanto tempo a solicitação HTTP levou para ser concluída. Esse log também pode ser útil para depurar a atividade de um usuário específico filtrando entradas de log por Usuários.
Exemplo de Saída de Log
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"
Configurar o log de acesso HTTP configuring-the-http-access-log
O log de acesso HTTP não pode ser configurado no AEM as a Cloud Service.
Apache Web Server e registro do Dispatcher apache-web-server-and-dispatcher-logging
O AEM as a Cloud Service fornece três logs para os servidores Web Apache e a camada do dispatcher no Publish:
- Log de acesso ao servidor Web Apache HTTPD
- Log de erros do servidor Web Apache HTTPD
- Log do Dispatcher
Esses logs só estão disponíveis para o nível do Publish.
Esse conjunto de logs fornece insights sobre solicitações HTTP para o nível do AEM as a Cloud Service Publish antes que essas solicitações cheguem ao aplicativo AEM. Isso é importante para entender, pois, idealmente, a maioria das solicitações HTTP para os servidores no nível do Publish é atendida por conteúdo armazenado em cache pelo Apache HTTPD Web Server e pelo AEM Dispatcher, e nunca atinge o próprio aplicativo AEM. Portanto, não há instruções de registro para essas solicitações nos registros Java, de solicitação ou de acesso do AEM.
Log de acesso do servidor Web Apache HTTPD apache-httpd-web-server-access-log
O log de acesso do Apache HTTP Web Server fornece instruções para cada solicitação HTTP que atinge o servidor Web/Dispatcher da camada do Publish. As solicitações atendidas de um CDN upstream não são refletidas nesses logs.
Consulte informações sobre o formato de log de erros na documentação oficial do Apache.
Exemplo de Saída de Log
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 do Log
Configurar o log de acesso do servidor Web Apache HTTPD configuring-the-apache-httpd-webs-server-access-log
Este log não pode ser configurado no AEM as a Cloud Service.
Log de erros do servidor Web Apache HTTPD apache-httpd-web-server-error-log
O log de erros do Apache HTTP Web Server fornece instruções para cada erro no servidor Web/Dispatcher da camada do Publish.
Consulte informações sobre o formato de log de erros na documentação oficial do Apache.
Exemplo de Saída de Log
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 do Log
Configuração do log de erros do servidor Web Apache HTTPD configuring-the-apache-httpd-web-server-error-log
Os níveis de log mod_rewrite são definidos pela variável REWRITE_LOG_LEVEL no arquivo conf.d/variables/global.var
.
Pode ser definido como error, warn, info, debug e trace1 - trace8, com um valor padrão de warn. Para depurar as RewriteRules, é recomendável aumentar o nível de log para trace2. É recomendável depurar regras de regravação usando o Dispatcher SDK. O nível máximo de log para o AEM as a Cloud Service é debug
. Portanto, no momento, não é efetivamente possível depurar regras de regravação na nuvem.
Consulte a documentação do módulo mod_rewrite para obter mais informações.
Para definir o nível de log por ambiente, use a ramificação condicional apropriada no arquivo global.var, conforme descrito abaixo:
Define REWRITE_LOG_LEVEL debug
<IfDefine ENVIRONMENT_STAGE>
...
Define REWRITE_LOG_LEVEL warn
...
</IfDefine>
<IfDefine ENVIRONMENT_PROD>
...
Define REWRITE_LOG_LEVEL error
...
</IfDefine>
Log do Dispatcher dispatcher-log
Exemplo
[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 do Log
Configuração do registro de erros do Dispatcher configuring-the-dispatcher-error-log
Os níveis de log do dispatcher são definidos pela variável DISP_LOG_LEVEL no arquivo conf.d/variables/global.var
.
Ele pode ser definido como error, warn, info, debug e trace1, com um valor padrão de warn.
Embora o registro do Dispatcher seja compatível com vários outros níveis de granularidade de registro, a AEM as a Cloud Service recomenda usar os níveis descritos abaixo.
Para definir o nível de log por ambiente, use a ramificação condicional apropriada no arquivo global.var
, conforme descrito abaixo:
Define DISP_LOG_LEVEL debug
<IfDefine ENVIRONMENT_STAGE>
...
Define DISP_LOG_LEVEL warn
...
</IfDefine>
<IfDefine ENVIRONMENT_PROD>
...
Define DISP_LOG_LEVEL error
...
</IfDefine>
Log da CDN cdn-log
O AEM as a Cloud Service fornece acesso a logs CDN, que são úteis para casos de uso, incluindo otimização da taxa de ocorrência do cache. O formato de log CDN não pode ser personalizado e não há conceito de configurá-lo para modos diferentes, como info, warn ou error.
Exemplo
{
"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 do Log
Os logs CDN são distintos dos outros logs no sentido de que seguem um formato json.
Como acessar logs how-to-access-logs
Ambientes em nuvem cloud-environments
Os logs do AEM as a Cloud Service para serviços em nuvem podem ser acessados baixando pela interface do Cloud Manager ou adaptando logs na linha de comando usando a interface de linha de comando Adobe I/O. Para obter mais informações, consulte a documentação de log do Cloud Manager.
Logs para regiões adicionais do Publish logs-for-additional-publish-regions
Se regiões de publicação adicionais estiverem habilitadas para um ambiente específico, os logs de cada região estarão disponíveis para download no Cloud Manager, conforme mencionado acima.
Os logs do AEM e os logs do Dispatcher para as regiões de publicação adicionais especificarão a região nas primeiras 3 letras após a ID do ambiente, como exemplificado por nld2 na amostra abaixo, que se refere a uma instância de publicação adicional do AEM localizada na Holanda:
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 local local-sdk
O SDK do AEM as a Cloud Service fornece arquivos de log para oferecer suporte ao desenvolvimento local.
Os logs de AEM estão localizados na pasta crx-quickstart/logs
, onde os seguintes logs podem ser exibidos:
- Log Java do AEM:
error.log
- Log de Solicitação HTTP AEM:
request.log
- Log de Acesso HTTP AEM:
access.log
Os logs da camada do Apache, incluindo o Dispatcher, estão no contêiner do Docker que contém o Dispatcher. Consulte a documentação do Dispatcher para obter informações sobre como iniciar o Dispatcher.
Para recuperar os logs:
-
Na linha de comando, digite
docker ps
para listar seus contêineres -
Para fazer logon no contêiner, digite "
docker exec -it <container> /bin/sh
", onde<container>
é a ID do contêiner do Dispatcher da etapa anterior -
Navegar até a raiz do cache em
/mnt/var/www/html
-
Os logs estão em
/etc/httpd/logs
-
Inspect os logs: eles podem ser acessados na pasta XYZ, onde os seguintes logs podem ser visualizados:
- Log de acesso do servidor Web Apache HTTPD -
httpd_access.log
- Logs de erros do servidor Web Apache HTTPD -
httpd_error.log
- Logs do Dispatcher -
dispatcher.log
- Log de acesso do servidor Web Apache HTTPD -
Os logs também são impressos diretamente na saída do terminal. Na maioria das vezes, esses registros devem ser DEBUG, o que pode ser realizado passando o nível de Depuração como um parâmetro ao executar o Docker. Por exemplo:
DISP_LOG_LEVEL=Debug ./bin/docker_run.sh out docker.for.mac.localhost:4503 8080
Depuração da produção e do preparo debugging-production-and-stage
Em circunstâncias excepcionais, os níveis de log precisam ser alterados para registrar em uma granularidade mais fina em ambientes de Preparo ou Produção.
Embora isso seja possível, requer alterações nos níveis de log nos arquivos de configuração no Git, de Aviso e Erro a Depuração, e realizar uma implantação no AEM as a Cloud Service para registrar essas alterações de configuração com os ambientes.
Dependendo do tráfego e da quantidade da instrução de log gravada pela Depuração, isso pode resultar em um impacto adverso no desempenho do ambiente. Portanto, recomenda-se que as alterações nos níveis de depuração de Preparo e Produção sejam:
- Feito de forma criteriosa e somente quando absolutamente necessário
- Revertido para os níveis apropriados e reimplantado o mais rápido possível
Encaminhamento de logs log-forwarding
Embora os logs possam ser baixados do Cloud Manager, algumas organizações acham útil encaminhá-los para um destino de registro preferencial. O AEM oferece suporte a logs de transmissão para os seguintes destinos:
- Armazenamento Azure Blob
- Datadog
- HTTPD
- Elasticsearch (e OpenSearch)
- Splunk
Consulte o artigo sobre encaminhamento de logs para obter detalhes sobre como configurar esse recurso.