Не удалось получить информацию о трассировке Stackdriver в Google Cloud Console

У меня есть несколько микросервисов, работающих в Container Engine (GKE), и я пытаюсь получить информацию о трассировке в консоли Google, но что-то идет не так.

Вот мой контрольный список:

  • Stackdriver Trace API включен в диспетчере API.
  • Панель инструментов API Manager показывает коэффициент ошибок 99,98%.
  • GKE имеет разрешения:
    • Трассировка Stackdriver: только для записи
    • API ведения журнала в стеке: только для записи
    • API мониторинга Stackdriver: полный
    • Сервисный контроль: включен
  • В логах ошибок нет
  • Я использовал следующие руководства для интеграции Trace API:

Я что-то пропустил? Заранее спасибо.


Обновление: мне удалось запросить трассировку API вручную с помощью curl из модуля GKE:

kubectl exec -it POD -- /bin/bash

curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" -H "Metadata-Flavor: Google"


curl --verbose -d '{"traces": [{"projectId":"xxxx","traceId":"12345678901234567890123456789053","spans":[{"spanId":3,"name":"test"}]}]}' -X PATCH https://cloudtrace.googleapis.com/v1/projects/xxxx/traces -H "Content-Type: application/json" -H "Authorization":"Bearer TOKEN"

скручиваемость вывода:

  • Имя хоста НЕ найдено в кеше DNS
  • Попытка 173.194.202.95...
  • Подключен к cloudtrace.googleapis.com (173.194.202.95) порт 443 (#0)
  • успешно установлен сертификат, проверьте места:
  • CAfile: нет CApath: / etc / ssl / certs
  • SSLv3, рукопожатие TLS, клиент привет (1):
  • SSLv3, рукопожатие TLS, сервер привет (2):
  • SSLv3, рукопожатие TLS, CERT (11):
  • SSLv3, рукопожатие TLS, обмен ключами сервера (12):
  • SSLv3, рукопожатие TLS, сервер завершен (14):
  • SSLv3, TLS handshake, обмен ключами клиента (16):
  • SSLv3, шифр изменения TLS, клиент привет (1):
  • SSLv3, рукопожатие TLS, Завершено (20):
  • SSLv3, шифр изменения TLS, клиент привет (1):
  • SSLv3, рукопожатие TLS, Завершено (20):
  • SSL-соединение с использованием TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
  • Сертификат сервера:
  • тема: C= США; ST= Калифорния; L= Маунтин-Вью; O=Google Inc; CN=*. Googleapis.com
  • дата начала: 2017-07-05 08:20:33 GMT
  • Срок годности: 2017-09-27 08:09:00 по Гринвичу
  • subjectAltName: cloudtrace.googleapis.com соответствует
  • эмитент: C= US; O = Google Inc; CN = Google Internet Authority G2
  • SSL-сертификат подтвердите.

    PATCH / v1 / projects / line-b / traces HTTP / 1.1 Пользователь-агент: curl/7.38.0 Хост: cloudtrace.googleapis.com Принимайте: / Content-Type: application / json Авторизация:Bearer TOKEN Content-Length: 118

  • загрузка полностью отправлена: 118 из 118 байтов

Панель инструментов также обновлена:

1 ответ

Вы можете посмотреть на графики отчетности API, чтобы увидеть, что ваши звонки google.devtools.cloudtrace.v1.TraceService.PatchTraces потерпеть неудачу с 403 Forbidden ошибки.

403 Запрещено, если запрос к серверу не авторизован. Поэтому ваши звонки из вашего кластерного движка (GKE) на cloudtrace.PatchTraces не авторизованы.

Это может быть связано с ограниченным разрешением Stackdriver Trace "Только запись", которое вы установили. Кроме того, убедитесь, что вы добавили область "trace.append" при создании кластера.


По поводу пропавших бревен в Stackdriver. Когда для вашего кластера включена регистрация Stackdriver, вы сможете просто писать в "STDOUT" и "STDERR". Fluentd должен позаботиться об отправке этого в Stackdriver, и вывод должен быть доступен в Log Viewer под выпадающим списком "GKE Container".

В качестве альтернативы вы всегда можете использовать клиентскую библиотеку ведения журнала Stackdriver для прямой записи в Stackdriver, так же, как вы делаете это с помощью Stackdriver Trace API. Вам также следует установить уровень важности журнала, чтобы упростить фильтрацию в средстве просмотра журналов для поиска определенных журналов ошибок (например, 403, которые вы видите).

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