Stackdriver Отчет об ошибках для Ruby, работающего на GKE
Какие шаги необходимы для сбора ошибок из приложения Rails, работающего на GKE?
Я добавил гем стека-драйвера в свое приложение Rails и создал собственную роль с errorreporting.errorEvents.create
разрешение. Эта роль предоставляется учетной записи службы Compute Engine по умолчанию
Я понимаю, что при работе в GKE не нужно выполнять следующую настройку:
# Add this to config/environments/*.rb
Rails.application.configure do |config|
# Stackdriver Error Reporting specific parameters
config.google_cloud.error_reporting.project_id = "YOUR-PROJECT-ID"
config.google_cloud.error_reporting.keyfile = "/path/to/service-account.json"
end
Я вручную создал исключение
Это дало мне ценную информацию:
irb(main):001:0> Google::Cloud::ErrorReporting.report Exception.new(msg: "from console")
=> nil
irb(main):002:0> {:msg=>"from console"} (Exception)
Google::Cloud::PermissionDeniedError: 7:Stackdriver Error Reporting API has not been used in project NNNNN before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/clouderrorreporting.googleapis.com/overview?project=NNNN then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.
После включения API, я получаю эту ошибку:
irb(main):004:0> {:msg=>"from console"} (Exception)
Google::Cloud::PermissionDeniedError: 7:User not authorized.
Итак, какое разрешение я должен дать тому или иному пользователю для выполнения этой работы?:-|
1 ответ
Это похоже на проблему с разрешениями, поэтому после установки и настройки google-cloud-ruby.
Затем вам нужно включить API отчетов об ошибках Stackdriver.
Затем вам нужно добавить роль "role / errorreporting.writer" в учетную запись службы вычислений по умолчанию.
Контейнерные кластеры gcloud создают пример имени кластера --scopes https://www.googleapis.com/auth/cloud-platform
Когда вы создаете кластер, вам нужно добавить флаг --scope для платформы, см. Пример выше: