Настройка ОТЧЕТОВ ОБ ОШИБКАХ для 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библиотеки?


person Sergey L.    schedule 25.01.2017    source источник


Ответы (2)


Стерен, большое спасибо за ваш ответ!

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

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

Есть ли способ добраться до этого fluentd с помощью библиотеки fluent-logger-node?

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

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

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

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

person Mik Vyatskov    schedule 26.01.2017
comment
Вы знаете, когда Stackdriver будет поддерживать чтение исключений из стандартного вывода? Я спросил в stackoverflow .com/questions/43451973/, поскольку из документов следует, что это уже должно работать, но, к сожалению, у меня это не работает - person nambrot; 18.04.2017
comment
Назначает ли fluentd серьезность для stdout как INFO? Отчет об ошибках ищет ERROR или выше. - person Kirk Kelsey; 20.04.2017

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

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

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

person Steren    schedule 26.01.2017