Stackdriver Log Agent - уровень журнала не имеет отношения к драйверу Google Cloud Logging для Docker

TL, DR; уровни журналов игнорируются при вызове API ведения журнала Stackdriver с использованием CloudLoggingHandler из контейнера Docker с помощью Драйвер Google Cloud Logging.

Подробно. Рекомендуемый способ получения журналов из контейнера Docker, запущенного в Google Compute Engine, - использовать Stackdriver Logging Agent:

Рекомендуется запускать агент Stackdriver Logging на всех экземплярах виртуальных машин. Агент работает как под Linux, так и под Windows. Чтобы установить агент Stackdriver Logging, см. Установка агента Logging.

Следующие шаги были выполнены успешно:

  • Убедитесь, что учетная запись службы Compute Engine по умолчанию имеет роли Editor и Logs Writer.
  • Убедитесь, что у экземпляра виртуальной машины есть область доступа Cloud API для Stackdriver Logging API (полная)
  • Установите и запустите Stackdriver Logging Agent.

Затем я скопировал пример CloudLoggingHandler из Документы Python по облачной платформе.

import logging
import google.cloud.logging
from google.cloud.logging.handlers import CloudLoggingHandler

client = google.cloud.logging.Client()
handler = CloudLoggingHandler(client)

cloud_logger = logging.getLogger('cloudLogger')
cloud_logger.setLevel(logging.INFO)
cloud_logger.addHandler(handler)

cloud_logger.error('bad news error')
cloud_logger.warning('bad news warning')
cloud_logger.info('bad news info')

Контейнер Docker запускается с флагом Google Cloud Logging Driver (--log-driver=gcplogs):

sudo docker run --log-driver=gcplogs --name=server gcr.io/my-project/server:latest

Это работает, однако все журналы, независимо от уровня, видны в Stackdriver только при просмотре «Любой уровень журнала». Как ни странно, само сообщение содержит уровень:

2018-08-22 22:34:42.176 BST
ERROR:bad news error

2018-08-22 22:34:42.176 BST
WARNING:bad news warning

2018-08-22 22:34:42.176 BST
WARNING:bad news info

Это делает невозможным фильтрацию по уровню в пользовательском интерфейсе Stackdriver:

введите описание изображения здесь

На снимке экрана ниже все значки на левой стороне каждой записи журнала показывают уровень как Any:

введите описание изображения здесь


person Jack    schedule 22.08.2018    source источник
comment
issueetracker.google.com/issues/35899495   -  person Martin Zeitler    schedule 23.08.2018
comment
Поскольку вы получаете журналы, с вашей конфигурацией проблем нет. Проблема, похоже, больше связана с агентом Stackdriver Logging, который может устанавливать серьезность в журналах. Ссылка, предоставленная @MartinZeitler, сделана два года назад. Я бы предложил создать новую общедоступную проблему, в которой команда GCP могла бы дополнительно изучить проблему с Stackdriver Logging здесь: Issueetracker.google.com   -  person Jason    schedule 24.08.2018
comment
Вы создали проблему?   -  person gelbander    schedule 08.12.2018
comment
@Jack Вы еще не поняли?   -  person P_equals_NP_2021    schedule 01.10.2019
comment
Для тех, кто застрял с этой проблемой на GCE, а не на GKE, попробуйте переключить свой экземпляр на ОС, поддерживаемую Stackdriver Logging Agent, а не на оптимизированную для контейнера   -  person P_equals_NP_2021    schedule 02.10.2019
comment
Я открыл новую проблему для управляемого Cloud Run разновидности этой проблемы здесь partnerissuetracker.corp.google.com / issues / 150734081   -  person Jake Biesinger    schedule 04.03.2020
comment
ба. должно быть Issueetracker.google.com/issues/150734081.   -  person Jake Biesinger    schedule 04.03.2020


Ответы (1)


Насколько я могу судить, CloudLoggingHandler - это автономный обработчик, который отправляет журналы на уровень Global. Для правильной интеграции с драйвером gcplogs попробуйте использовать _ 4_

person micimize    schedule 26.02.2019