Nesta página, descrevemos os registros disponíveis para aplicativos do App Engine e como gravar, correlacionar e visualizar entradas de registro.
O App Engine coleta três tipos de registro:
Registro de solicitações: registros das solicitações enviadas ao aplicativo. Por padrão, o App Engine emite automaticamente uma entrada de registro para cada solicitação HTTP recebida por um app.
Registro do aplicativo: entradas de registro emitidas por um aplicativo do App Engine com base nas entradas de registro gravadas em um framework ou arquivo compatível.
Registro do sistema: registros gerados pela plataforma que contêm informações sobre o app. Esses registros são gravados em
varlog/system
.
O App Engine envia automaticamente os registros de solicitação e de aplicativos para o agente do Cloud Logging.
Gravar registros de apps
O App Engine emite registros automaticamente para solicitações enviadas ao aplicativo. Portanto, não é necessário gravar registros de solicitação. Esta seção aborda como gravar registros de apps.
Quando você grava registros de aplicativos no aplicativo do App Engine, eles são coletados automaticamente pelo Cloud Logging, desde que sejam gravados usando os seguintes métodos:
Integrar com o Cloud Logging
Você pode integrar o aplicativo do App Engine ao Cloud Logging. Essa abordagem permite usar todos os recursos oferecidos pelo Cloud Logging e requer apenas algumas linhas de código específico do Google.
Gravar registros estruturados em stdout
e stderr
Por padrão, o App Engine usa a biblioteca de cliente do Cloud Logging para enviar registros.
No entanto, esse método não oferece suporte à geração de registros estruturados. Só é possível gravar
registros estruturados usando stdout/stderr
. Além disso, você também pode enviar strings de texto para
stdout
e stderr
. Por padrão, o payload do registro é uma
string de texto armazenada no campo textPayload
da entrada de registro. As strings aparecerão como mensagens no
Explorador de registros, na linha de comando e na API Cloud Logging e serão
associadas ao serviço e à versão do App Engine que as emitiu.
Para extrair mais valor dos registros, filtre essas strings na Análise de registros por nível de gravidade. Para filtrar essas strings, é necessário formatá-las como
dados estruturados.
Para isso, grave os registros em uma única
linha de JSON serializado. O App Engine seleciona e analisa essa linha JSON serializada
e a coloca no campo jsonPayload
da entrada de registro em vez de textPayload
.
Os registros stdout
e stderr
do ambiente flexível são enviados ao
Cloud Logging usando o agente de geração de registros legado
em execução nas instâncias de máquina virtual. O agente do Logging é executado com recursos limitados, e os registros gravados são rotacionados após exceder o limite de 10 MB. Se a taxa em que os registros são gravados em stdout
e stderr
for maior
que a taxa em que os registros são lidos pelo agente, eles podem ser
alternados antes de serem enviados para Cloud Logging Se você não quiser perder
registros, use o Cloud Logging.
Campos JSON especiais nas mensagens
Quando você fornece um registro estruturado como um dicionário JSON, alguns campos especiais são retirados do jsonPayload
e gravados no campo correspondente no LogEntry gerado, conforme descrito na documentação sobre campos especiais.
Por exemplo, se o JSON incluir uma propriedade severity
, ela será removida do jsonPayload
e aparecerá como severity
da entrada de registro.
A propriedade message
é usada como o texto de exibição principal da entrada de registro, se houver.
Correlacionar registros de solicitação com registros de apps
Depois de formatar as entradas como um objeto JSON e fornecer metadados específicos, será possível ativar a filtragem e a correlação com os registros de solicitação. Para correlacionar as entradas de registro de solicitação com as entradas de registro do aplicativo, você precisa do identificador de trace da solicitação. Siga as instruções para correlacionar mensagens de registro:
- Extraia o identificador de trace do cabeçalho da solicitação
X-Cloud-Trace-Context
. - Na entrada de registro estruturado, grave o ID em um campo chamado
logging.googleapis.com/trace
. Saiba mais sobre o cabeçalhoX-Cloud-Trace-Context
em Como forçar uma solicitação a ser rastreada.
Para conferir registros correlacionados, consulte Ver entradas de registro correlacionadas na Análise de registros.
Ver registros
É possível consultar e solicitar registros de apps de várias maneiras:
- Use a Análise de registros do Cloud Logging no console do Google Cloud.
- Usar a Google Cloud CLI para visualizar registros com a gcloud.
- Ler registros de maneira programática usando vários métodos.
Usar a Análise de registros
É possível visualizar o aplicativo e solicitar registros usando o Explorador de registros:
Acesse o Explorador de registros no console do Google Cloud:
Selecione um projeto atual do Google Cloud na parte superior da página.
Em Tipo de recurso, selecione Aplicativo GAE.
Você pode filtrar o Explorador de registros por serviço e versão do App Engine e outros critérios. Também é possível pesquisar entradas específicas nos registros. Consulte Como usar o Explorador de registros para ver mais detalhes.
Se você enviar entradas de texto simples para a saída padrão, não será possível usar o Visualizador de registros para filtrar entradas de aplicativos por gravidade, nem ver quais registros de aplicativos correspondem a solicitações específicas. É possível continuar usando outros tipos de filtragem no Explorador de registros, como texto e carimbo de data/hora.
Conferir entradas de registro correlacionadas na Análise de registros
Na Análise de registros, para visualizar as entradas de registro filhas correlacionadas a uma entrada de registro pai, expanda a entrada de registro.
Por exemplo, para exibir a entrada de registro de solicitação do App Engine e as entradas de registro do aplicativo, faça o seguinte:
No painel de navegação do console do Google Cloud, selecione Logging e clique em Análise de registros:
Em Tipo de recurso, selecione Aplicativo GAE.
Para visualizar e correlacionar registros de solicitações, em Nome do registro, selecione request_log. Como alternativa, para correlacionar por registros de solicitação, clique em Correlacionar por e selecione request_log.
No painel Resultados da consulta, clique em Expandir para expandir uma entrada de registro. Na expansão, cada registro de solicitação mostrará os registros de aplicativos associados.
Depois de criar um filtro para os registros, cada registro de solicitação mostra registros de app correspondentes como registros filhos. Para isso, a Análise de registros correlaciona o campo trace
nos registros de aplicativos e um determinado registro de solicitação, supondo que o aplicativo use a biblioteca google-cloud-logging
.
A imagem a seguir mostra os registros de aplicativos agrupados pelo campo trace
:
Use a Google Cloud CLI
Para ver os registros do App Engine na linha de comando, use o seguinte comando:
gcloud app logs tail
Saiba mais em gcloud app logs tail.
Como ler registros de maneira programática
Se você quiser ler os registros de maneira programática, use um destes métodos:
- Use um coletor de registros para o Pub/Sub e um script para extrair do Pub/Sub.
- Chame a API Cloud Logging por meio da biblioteca de cliente para sua linguagem de programação.
- Chame os endpoints da API REST do Cloud Logging diretamente.
Entender os registros de escalonamento de instância
Quando novas instâncias são iniciadas para seu app, o Cloud Logging
inclui entradas de registro no nome de registro varlog/system
para refletir por que cada
instância foi criada. A entrada de registro segue este formato:
Starting new instance. Reason: REASON - DESCRIPTION
A tabela a seguir mostra um detalhamento das descrições de instâncias:
Motivo | Descrição |
---|---|
CUSTOMER_MIN_INSTANCE |
Instância mínima configurada pelo cliente para o app. |
SCHEDULED |
A instância foi iniciada devido a fatores de escalonamento configurados (por exemplo, utilização da CPU, taxa de transferência de solicitações etc.) e aos respectivos destinos. |
OVERFLOW |
A instância foi iniciada porque não foi encontrada capacidade para o tráfego atual. |
Política de retenção de registros, preços e cotas
Saiba mais sobre os preços aplicáveis aos registros de solicitações e de aplicativos em preços do Cloud Logging.
Veja a política de retenção de registros e o tamanho máximo das entradas de registro em Cotas e limites. É possível exportar os registros para o Cloud Storage se você quiser armazená-los por mais tempo. Além disso, é possível exportá-los para o BigQuery e Pub/Sub se quiser processamento adicional.
Como gerenciar o uso de recursos de registro
É possível controlar a quantidade de atividade de geração de registros no aplicativo escrevendo mais ou menos entradas no código do aplicativo. Os registros de solicitação são criados automaticamente. Portanto, para gerenciar o número de entradas de registro de solicitação associadas ao aplicativo, use o recurso de exclusão de registros do Cloud Logging.
Problemas conhecidos
Confira a seguir alguns problemas de geração de registros nos ambientes de execução de segunda geração:
Às vezes, as entradas de registro do aplicativo não estão relacionadas ao registro de solicitação. Isso acontece na primeira vez que o aplicativo recebe uma solicitação e qualquer outra vez que o App Engine grava mensagens de status no registro do aplicativo. Saiba mais em https://issuetracker.google.com/issues/138365527.
Quando você encaminha registros do coletor de registros para o Cloud Storage, o destino do Cloud Storage contém apenas registros de solicitação. O App Engine grava os registros de aplicativos em pastas diferentes.
O BigQuery não consegue ingerir registros devido ao campo
@type
nos registros de solicitação. Isso interrompe a detecção automática do esquema, já que o BigQuery não permite@type
em nomes de campo. Para resolver isso, você precisa definir manualmente o esquema e remover o campo@type
dos registros de solicitação.Se você usa as APIs REST de geração de registros, uma linha de execução em segundo plano grava os registros no Cloud Logging. Se a linha de execução principal não estiver ativa, a instância não receberá tempo de CPU, o que fará com que a linha de execução em segundo plano seja interrompida. O tempo de processamento de registros é atrasado. Em algum momento, a instância é removida e todos os registros não enviados são perdidos. Para evitar a perda de registros, use uma das seguintes opções:
- Configure o SDK do Cloud Logging para usar o gRPC. Com o gRPC, os registros são enviados ao Cloud Logging imediatamente. No entanto, isso pode aumentar os limites de CPU necessários.
- Envie mensagens de registro para o Cloud Logging usando
stdout/stderr
. Esse pipeline está fora da instância do App Engine e não é limitado.
A seguir
- Consulte Monitorar e alertar latência para saber como usar o Cloud Logging para visualizar registros de depuração de erros e como usar o Cloud Trace para entender a latência do app.