Настройка сообщения об ошибках для 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 отчета.