403 ответ с помощью экспортера stackdrvier на экземпляре gcloud - PullRequest
0 голосов
/ 30 ноября 2018

Я потратил на это свой день, и я просто не вижу, что я делаю неправильно, и я не могу найти ответ на свой вопрос в других сообщениях, поэтому я прошу помощи.

У меня есть вычислительный экземпляр с уже установленным prometheus и служебная учетная запись с ролью / средством просмотра, уже настроенным для автоматического обнаружения и работы.

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

Служба запускается так:

/usr/local/bin/stackdriver_exporter --google.project-id PROJECTID --monitoring.metrics-type-prefixes \
cloudsql.googleapis.com/,compute.googleapis.com/,vpn.googleapis.com/,loadbalancing.googleapis.com/,storage.googleapis.com/,redis.googleapis.com/

Ничего там не так, я трижды проверилпроект на случай, если я ослепну, и это кажется хорошим.

Моя проблема в том, что я всегда сталкиваюсь с этой ошибкой:

Nov 30 16:15:34 INSTANCENAME stackdriver_exporter[19149]: time="2018-11-30T16:15:34Z" leve
l=error msg="Error while getting Google Stackdriver Monitoring metrics: googleapi: Error 403: Request had
 insufficient authentication scopes., forbidden" source="monitoring_collector.go:132"

Я подумал о проблеме роли, поэтому ядобавлено средство просмотра мониторинга , затем наблюдение за администратором и даже роль / владелец , но это ничего не сделало.

Я также попытался установить GOOGLE_APPLICATION_CREDENTIALS переменная env, чтобы быть уверенной в учетной записи, но все та же ошибка.

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

1 Ответ

0 голосов
/ 01 декабря 2018

Имейте в виду, что в gcloud окончательные разрешения представляют собой «маску» между ролями / разрешениями учетной записи службы и областями действия экземпляра.

Когда вы настраиваете экземпляр для запуска от имениДля учетной записи службы уровень доступа, который имеет эта учетная запись службы, определяется комбинацией областей доступа, предоставленных экземпляру, и ролей IAM, предоставленных учетной записи службы.

Таким образом, если вы запускаете это с учетной записью службы с ролью monitoring viewer в экземпляре без области действия https://www.googleapis.com/auth/monitoring.read, вы не сможете читать показатели монитора.

1.- Проверьте область действия вашего экземпляра с помощью gcloud compute instances describe INSTANCE.Вы увидите что-то вроде этого:

- email: 487724816353-compute@developer.gserviceaccount.com scopes: - https://www.googleapis.com/auth/monitoring.write - https://www.googleapis.com/auth/logging.write - https://www.googleapis.com/auth/devstorage.read_only Можете ли вы увидеть там нужные области?

2.- Если вы не попытаетесь установить нужные вам области: (для этого вам нужно остановить экземпляр)

gcloud compute instances set-service-account INSTANCE \ --service-account SERVICE_ACCOUNT@xxxxxxxx.iam.gserviceaccount.com \ --scopes cloud-platform

3.-предыдущая команда разрешает полный доступ ко всем APIS в экземпляре, как рекомендовано в рекомендациях по gcloud (https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances#best_practices).). Затем вы можете контролировать окончательные разрешения, просто добавляя / удаляя роли для учетной записи службы.

...