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

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

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

  • Stackdriver Trace API включен в API Manager.
  • На панели управления API Manager отображается коэффициент ошибок 99,98%.
    • Stackdriver Trace: только запись
    • Stackdriver Logging API: только запись
    • Stackdriver Monitoring API: полный
    • Service Control: Enabled
  • В журналах ошибок нет
  • Я использовал следующие руководства, чтобы интегрировать Trace API:

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

api manager errors


Обновление: мне удалось вручную запросить 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"

вывод curl:

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

    PATCH / v1 / projects / line-b / traces HTTP / 1.1 Пользовательский агент: curl / 7.38.0 Хост: cloudtrace.googleapis.com Принять: / Тип содержимого: приложение / json Авторизация: ТОКЕН на предъявителя Content-Length: 118

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

Информационная панель также обновлена:

enter image description here

0
задан 16 July 2017 в 00:59
1 ответ

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

403 Запрещено, когда запрос к серверу не авторизован. Следовательно, ваши вызовы из кластера Container Engine (GKE) в 'cloudtrace.PatchTraces' не авторизованы.

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


Относительно отсутствующих журналов в Stackdriver. Как только Stackdriver Logging будет включен для вашего кластера, вы сможете просто писать в «STDOUT» и «STDERR». Fluentd должен позаботиться об отправке этого в Stackdriver, а результат должен быть доступен в средстве просмотра журналов в раскрывающемся списке «Контейнер GKE».

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

3
ответ дан 4 December 2019 в 12:19

Теги

Похожие вопросы