Set Stackdriver severity based on textPayload

У нас есть собственное Java-приложение, созданное нашими разработчиками, которое использует log4j для форматирования сообщений журнала. Недавно мы начали запускать его на Google Kubernetes Engine, поэтому логи автоматически передаются в Stackdriver из stdout. Однако все журналы появляются с уровнем серьезности INFO. Одно из таких сообщений имеет textPayload, который начинается следующим образом:

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

Очевидно, что разработчики хотели, чтобы это было сообщение с серьезностью ERROR, но поскольку они не создали свое приложение с учетом Stackdriver, оно неструктурировано и сообщается как INFO.

Мне кажется неправильным изменять приложение для соблюдения централизованного протоколирования, которое мы используем; наши клиенты могут использовать другие решения для протоколирования. Есть ли способ заставить Stackdriver использовать textPayload для определения серьезности? Я работаю на Google Kubernetes Engine, поэтому я не настраивал инфраструктуру протоколирования и не имею к ней доступа, кроме того, что предоставит Google.

Я заинтересован в этом изменении, потому что отчет об ошибках Google Cloud Platform является мощным инструментом для отслеживания сообщений об ошибках, но он справедливо применяется только к журналам, имеющим степень ERROR или выше. Простое создание метрики над журналами в Stackdriver не даст мне нужного контроля.

1
задан 18 July 2019 в 13:21
1 ответ

Быстрый ответ: нет, вам нужно будет изменить свой код и реализовать правильное ведение журнала с правильной серьезностью для каждого сообщения. Вы можете экспортировать журналы Stackdriver в BigQuery, что обычно делается, а затем выполнять более сложные запросы.

Здесь вы можете найти несколько полезных ссылок:

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

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

2
ответ дан 11 August 2020 в 13:23

Теги

Похожие вопросы