Definir a gravidade do Stackdriver com base em textPayload

Definir a gravidade do Stackdriver com base em textPayload

Temos um aplicativo Java interno criado por nossos desenvolvedores que usa log4jpara formatar suas mensagens de log. Recentemente, começamos a executar isso no Google Kubernetes Engine e, assim, os registros são canalizados para o Stackdriver a partir do stdout automaticamente. No entanto, todos os logs aparecem com o nível de severidade INFO. Uma dessas mensagens tem um textPayload que começa assim:

18 Jul 2019 10:11:32.334 [ERROR] [req=api-test--870259294-18071111-11 sess=cwfscqttcfqh1acsictx3toxv reqMs=4]

É claramente intenção dos desenvolvedores que esta seja uma ERRORmensagem de gravidade, mas como eles não criaram o aplicativo com o Stackdriver em mente, ela é desestruturada e relatada como uma INFOgravidade.

Parece errado ter que alterar o aplicativo para respeitar o registro centralizado que usamos; nossos clientes podem usar outras soluções de registro. Existe alguma maneira de fazer com que o Stackdriver use textPayload para determinar a gravidade? Estou executando o Google Kubernetes Engine, portanto, não configurei nenhuma infraestrutura de registro e não tenho acesso a ela além do que o Google fornecerá.

Estou interessado em fazer essa alteração porque o Error Reporting do Google Cloud Platform é uma ferramenta poderosa para rastrear mensagens de erro, mas se aplica corretamente apenas a registros de gravidade ERRORou superior. A simples criação de uma métrica sobre os registros no Stackdriver não me dará o controle que desejo.

Responder1

A resposta rápida é Não, você precisará alterar seu código e implementar o registro adequado com a gravidade correta para cada mensagem. Você pode exportar os registros do Stackdriver para o BigQuery, o que é normal, e depois executar consultas mais complexas.

Aqui você pode encontrar alguns links úteis:

https://cloud.google.com/logging/docs/export/bigquery

https://cloud.google.com/logging/docs/structured-logging

informação relacionada