Назад | Перейти на главную страницу

Установить серьезность Stackdriver на основе 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 не даст мне желаемого контроля.

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

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

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

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