9

Я немного смущен тем, как настроить отчет об ошибках в кубернетах, поэтому ошибки видны в Google Cloud Console/Stackdriver «Отчеты об ошибках»?Как настроить отчет об ошибках в Stackdriver из kubernetes pods?

В соответствии с документацией нам необходимо включить плагин прямого доступа «вперед», а затем отправить данные исключений из наших приложений. Я думаю, что этот подход сработал бы, если бы у нас была настройка, и он уже предварительно установлен на каждом узле в контейнере, который просто запускает gcr.io/google_containers/fluentd-gcp изображение докеры.

Как мы можем включить форвардный вход на этих стручках и убедиться, что порт http доступен для каждого модуля на узлах? Мы также должны убедиться, что эта конфигурация используется по умолчанию, когда мы добавляем больше узлов в наш кластер.

Любая помощь будет оценена, возможно, я смотрю на все это из-за неправильной точки?

+0

Вы используете GKE или GCE? –

+1

Я менеджер продукта для отчета об ошибках Stackdriver. В настоящее время эта функция находится в бета-версии, и мы официально не поддерживаем Kubernetes. Мы постараемся предоставить наш лучший ответ здесь, когда у нас будет решение поделиться. – Steren

+1

Спасибо за ответ. Мы используем GKE - мы хотим отправить отчет об ошибках из наших java-пакетов в Stackdriver Error Reporting. @Steren, спасибо, с нетерпением жду этого. – s3ncha

ответ

14

Основная идея состоит в том, чтобы создать отдельный модуль, который получает структурированные журналы через TCP и пересылает его в Cloud Logging, аналогично локально работающему агенту fluentd. Ниже приведены шаги, которые я использовал.

(К сожалению, протоколирование поддержка, которая встроена в Докер и Kubernetes не может быть использована - он просто передает отдельные строки текста из стандартного вывода/STDERR в виде отдельных записей журнала, который предотвращает отчеты об ошибках видеть полные следы стека.)

Создать Docker изображение для fluentd форвардера с использованием Dockerfile следующим образом:

FROM gcr.io/google_containers/fluentd-gcp:1.18 

COPY fluentd-forwarder.conf /etc/google-fluentd/google-fluentd.conf 

Где fluentd-forwarder.conf содержит следующее:

<source> 
    type forward 
    port 24224 
</source> 

<match **> 
    type google_cloud 
    buffer_chunk_limit 2M 
    buffer_queue_limit 24 
    flush_interval 5s 
    max_retry_wait 30 
    disable_retry_limit 
</match> 

Затем построить и нажать на изображение:

$ docker build -t gcr.io/###your project id###/fluentd-forwarder:v1 . 
$ gcloud docker push gcr.io/###your project id###/fluentd-forwarder:v1 

вам нужен контроллер репликации (fluentd-forwarder-controller.yaml):

apiVersion: v1 
kind: ReplicationController 
metadata: 
    name: fluentd-forwarder 
spec: 
    replicas: 1 
    template: 
    metadata: 
     name: fluentd-forwarder 
     labels: 
     app: fluentd-forwarder 
    spec: 
     containers: 
     - name: fluentd-forwarder 
     image: gcr.io/###your project id###/fluentd-forwarder:v1 
     env: 
     - name: FLUENTD_ARGS 
      value: -qq 
     ports: 
     - containerPort: 24224 

Вам также потребуется обслуживание (fluentd-forwarder-service.yaml):

apiVersion: v1 
kind: Service 
metadata: 
    name: fluentd-forwarder 
spec: 
    selector: 
    app: fluentd-forwarder 
    ports: 
    - protocol: TCP 
    port: 24224 

Тогда создать контроллер репликации и услугу:

$ kubectl create -f fluentd-forwarder-controller.yaml 
$ kubectl create -f fluentd-forwarder-service.yaml 

Наконец, в приложении, вместо того, чтобы использовать «локальный» и 24224 для подключения к fluentd агента, как описано на https://cloud.google.com/error-reporting/docs/setting-up-on-compute-engine, использовать значения переменных Evironment FLUENTD_FORWARDER_SERVICE_HOST и FLUENTD_FORWARDER_SERVICE_PORT.

+0

Благодарю вас за вход Boris! это в значительной степени то, что мы закончили с :) – s3ncha

+0

Добро пожаловать. Появляются ли ваши ошибки, как ожидалось? Пожалуйста, напишите отзыв, если у вас есть - используйте «!» значок в правом верхнем углу консоли при просмотре страницы с сообщением об ошибках, и команда получит это напрямую. Благодаря! –

+0

Настройка клиента fluentd в приложении может быть смоделирована после этого: https://cloud.google.com/error-reporting/docs/setup/ec2 – orourkedd

0

Чтобы добавить к ответу Бориса: до тех пор, пока ошибки регистрируются в правильном формате (см. https://cloud.google.com/error-reporting/docs/troubleshooting) и включен облачный журнал (вы можете увидеть ошибки в https://console.cloud.google.com/logs/viewer), тогда ошибки превратятся в отчет об ошибках без дальнейших настроить.

Смежные вопросы