У меня есть приложение Rails, работающее в GKE, и я пытаюсь настроить отчеты об ошибках Google Cloud. Я установил драгоценный камень stackdriver
и потребовал его при запуске приложения. Я могу без проблем вручную сообщать об ошибках из консоли Rails, но они не отображаются в пользовательском интерфейсе отчетов об ошибках GCP.
irb(main):021:0> Google::Cloud::ErrorReporting.report(Exception.new(msg: "from console")).result
=> [true, [], nil]
Я также подтвердил, что он настроен правильно project_id
и что я просматриваю правильный проект в пользовательском интерфейсе GCP.
ОБНОВЛЯТЬ
Я использовал фрагмент кода, найденный здесь, заменил $stderr
на $stdout
и изменил уровень журнала на DEBUG, чтобы получить некоторое представление о вызове RPC. Когда я попытался сообщить о другом исключении в консоли, я увидел следующее...
Failing with status #<struct Struct::Status code=7, details = "User not authorized.", metadata = {}, debug_error_string = "UNKNOWN:Error received from peer ipv4:xxx.xxx.xxx.xx:443 {grpc_message:\"User not authorized.\", grpc_status:7, created_time:\"2024-05-23T17:54:30.826579798+00:00\"}">
Увидев эту ошибку «Пользователь не авторизован», я проверил назначенные роли сервисной учетной записи и увидел, что у нее нет необходимой роли errorreporting.errorEvents.create
. Как только это было добавлено, я смог сообщить об исключении и увидеть его появление в пользовательском интерфейсе отчетов об ошибках.
Возможно, возникла проблема с настройкой отчетов об ошибках GCP. Следующие шаги могут помочь вам решить эту проблему:
Еще раз убедитесь, что API для отчетов об ошибках включен для соответствующего проекта Google Cloud.
Проверьте, имеет ли связанный ServiceAccount с кластером GKE все необходимые разрешения. Кроме того, учетная запись службы должна иметь роль «roles/errorreporting.writer» для записи в отчеты об ошибках Stackdriver.
Проверьте, установлена ли правильная клиентская библиотека отчетов об ошибках для Ruby. Для Ruby требуется гем google-cloud-error_reporting.
Еще раз убедитесь, что кластер GKE имеет все необходимые разрешения для доступа к сервисам GCP.
Обратитесь к официальному приложению GCP Instrument Ruby для отчетов об ошибках для получения дополнительной информации.
Также проверьте этот документ Github на google-cloud-error_reporting для получения более подробной информации.
Да, видимо мне просто не хватало нужной роли. К сожалению, выходные данные метода report
не указывают на какую-либо проблему.
Разве я не получу какую-то ошибку, если API не будет включен или если у учетной записи службы не будет необходимых разрешений? Кроме того, если бы правильная библиотека не была установлена, мой отчет об ошибках вручную из консоли Rails завершился бы с ошибкой NameError.