Не удалось получить информацию о трассировке 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, которые вы видите).