Настройка сообщения об ошибках для GKE

Я пытаюсь настроить отчеты об ошибках Stackdriver для приложения, развернутого в GKE.

Как я понял, есть два способа сделать это: агент ведения журнала Stackdriver и REST API отчетов об ошибках.

В соответствии с документацией по настройке в Google Compute Engine. Если у меня уже есть агент регистрации, я могу связаться с ним по localhost:24224,

Похоже, что уже есть агент регистрации для GKE:

✗ kubectl get pods --namespace=kube-system
NAME                                                      READY     STATUS    RESTARTS   AGE
fluentd-cloud-logging-gke-tc-default-pool-5713124a-969q   1/1       Running   0          3d

Есть ли способ достичь этого fluentd с fluent-logger-node библиотека?

2 ответа

Решение

Steren, спасибо большое за ответ!

Позвольте мне поделиться некоторыми деталями вокруг этой проблемы.

Недавно Stackdriver по умолчанию сделал исключение из списка популярных языков в GKE. Он будет включен в следующем выпуске GKE и исключения будут сброшены в stdout/stderr контейнера будет виден в отчете об ошибках.

Есть ли способ достичь этого свободно с помощью библиотеки fluent-logger-node?

Агент регистрации на GCE и на GKE работает по-разному. На GCE вы устанавливаете агент непосредственно на ВМ и можете получить к нему доступ с той же ВМ, используя localhost, Тем не менее, GKE работает с модулями, прямо на узле ничего не установлено. Каждый модуль имеет свой собственный сетевой стек, поэтому при вызове localhost изнутри контейнера вы обращаетесь не к ВМ, а к этому конкретному модулю.

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

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

Как уже упоминалось, может быть проще развернуть другой свободно распространяемый агент в качестве контейнера с дополнительной тележкой в ​​модуле приложения и настроить его вручную, вот пример того, как сделать это с наименьшими усилиями. В этом случае вы сможете получить доступ к агенту, используя localhost как будто это будет на GCE.

(Обратите внимание, что пока официально не поддерживается отчеты об ошибках Stackdriver)

Этот вопрос и ответ могут помочь вам в настройке fluentd: Как настроить создание отчетов об ошибках в Stackdriver из модулей kubernetes?

Но также, поскольку вы, похоже, используете Node.js, я бы посоветовал вам использовать https://github.com/GoogleCloudPlatform/cloud-errors-nodejs, который отправляет сообщения об ошибках не через журнал, а непосредственно в систему отчетов об ошибках. API отчета.

Другие вопросы по тегам