Instrumentar apps Ruby para o Error Reporting

É possível enviar eventos de erro para o Error Reporting a partir de aplicativos Ruby usando a biblioteca do Error Reporting para Ruby (em inglês). Use a biblioteca do Error Reporting para Ruby para criar grupos de erros nos seguintes casos:

  • Um bucket de registros que contém suas entradas de registro tem chaves de criptografia gerenciadas pelo cliente (CMEK).
  • O bucket de registros atende a um dos seguintes requisitos:
    • O bucket de registros é armazenado no mesmo projeto em que as entradas de registro foram originadas.
    • As entradas de registro foram encaminhadas para um projeto, e esse projeto armazenou essas entradas de registro em um bucket de registros de propriedade dele.
  • Você quer informar eventos de erro personalizados.

O Error Reporting é integrado a alguns Google Cloud serviços, como o Cloud Run Functions e o App Engine, o Compute Engine e o Google Kubernetes Engine. O Error Reporting mostra os eventos de erro registrados no Cloud Logging por aplicativos em execução nesses serviços. Para mais informações, acesse Como executar no Google Cloud nesta página.

Também é possível enviar eventos de erro para o Error Reporting usando o Logging. Para informações sobre os requisitos de formatação de dados, leia Formatar uma entrada de registro para informar eventos de erro.

Antes de começar

  1. Faça login na sua Google Cloud conta do. Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Error Reporting API .

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Error Reporting API .

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  8. Instale Ruby 2.2+ ou mais recente.

Instale a biblioteca de cliente

Com a biblioteca do Error Reporting para Ruby, você consegue monitorar e visualizar os eventos de erro relatados por aplicativos Ruby executados em praticamente qualquer lugar.

  1. Adicione a gem google-cloud-error_reporting ao Gemfile:

    gem "google-cloud-error_reporting"
  2. Use o Bundler para instalar a gem:

    bundle install

Como ativar a biblioteca

Se você estiver usando o Ruby on Rails, o Bundler carregará a biblioteca automaticamente no seu aplicativo quando ela for iniciada.

Outros aplicativos baseados em Rack podem usar o middleware do Rack fornecido pela biblioteca:

require "google/cloud/error_reporting"

use Google::Cloud::ErrorReporting::Middleware

Para mais informações sobre a instalação, leia a documentação da biblioteca do Error Reporting para Ruby (em inglês). Além disso, use o rastreador de problemas (em inglês) para informá-los.

Configurar a biblioteca de cliente

É possível personalizar o comportamento da biblioteca do Error Reporting para Ruby. Consulte a configuração da biblioteca para ver uma lista das opções possíveis.

Executar apps no Google Cloud

Para criar grupos de erros usando projects.events.report, sua conta de serviço precisa do papel Gravador do Error Reporting (roles/errorreporting.writer).

Alguns Google Cloud serviços concedem automaticamente o papel Gravador do Error Reporting (roles/errorreporting.writer) à conta de serviço apropriada. No entanto, é necessário conceder esse papel à conta de serviço apropriada para alguns serviços.

Cloud Run e Cloud Run Functions

A conta de serviço padrão usada pelo Cloud Run tem as permissões do papel Gravador do Error Reporting (roles/errorreporting.writer).

A biblioteca do Error Reporting para Ruby pode ser usada sem a necessidade de fornecer credenciais explicitamente.

O Cloud Run está configurado para usar o Error Reporting automaticamente. As exceções de JavaScript não processadas serão exibidas no Logging e processadas pelo Error Reporting sem a necessidade de usar a biblioteca dessa ferramenta para Ruby.

Como usar a interface de configuração do Ruby on Rails

Para usar a biblioteca do Error Reporting para Ruby com o framework Ruby on Rails, forneça os parâmetros por meio da interface de configuração do Ruby on Rails:

# 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

Também é possível definir uma configuração compartilhada para todas as gems do Stackdriver usando o seguinte código:

# Add this to config/environments/*.rb
Rails.application.configure do |config|
  # Stackdriver Shared parameters
  config.google_cloud.project_id = "YOUR-PROJECT-ID"
  config.google_cloud.keyfile    = "/path/to/service-account.json"
end

O Error Reporting é ativado por padrão quando o Rails está em execução no modo de produção. Para habilitar o Error Reporting no modo de desenvolvimento, adicione o seguinte:

# Add this to config/environments/development.rb
Rails.application.configure do |config|
  config.google_cloud.use_error_reporting = true
end

Como usar a interface de configuração de instrumentação

Para usar a biblioteca do Error Reporting para Ruby em outros aplicativos baseados em Rack, forneça os parâmetros por meio da interface de configuração:

require "google/cloud/error_reporting"

Google::Cloud.configure do |config|
  # Stackdriver Error Reporting specific parameters
  config.error_reporting.project_id = "YOUR-PROJECT-ID"
  config.error_reporting.keyfile    = "/path/to/service-account.json"
end

Também é possível definir uma configuração compartilhada para todas as gems do Google Cloud Observability usando o seguinte código:

require "stackdriver"

Google::Cloud.configure do |config|
  # Stackdriver Shared parameters
  config.project_id = "YOUR-PROJECT-ID"
  config.keyfile    = "/path/to/service-account.json"
end

Ambiente flexível do App Engine

O App Engine concede o papel Gravador do Error Reporting (roles/errorreporting.writer) à sua conta de serviço padrão automaticamente.

A biblioteca do Error Reporting para Ruby pode ser usada sem a necessidade de fornecer credenciais explicitamente.

O Error Reporting é ativado automaticamente para aplicativos do ambiente flexível do App Engine. Nenhuma outra configuração é necessária.

Google Kubernetes Engine

Para usar o Error Reporting com o Google Kubernetes Engine, faça o seguinte:

  1. Verifique se a conta de serviço a ser usada pelo contêiner recebeu o papel Gravador do Error Reporting (roles/errorreporting.writer).

    É possível usar a conta de serviço padrão do Compute Engine ou uma conta de serviço personalizada.

    Para saber mais sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

  2. Crie o cluster e conceda a ele o cloud-platform escopo de acesso.

    Por exemplo, o comando de criação a seguir especifica o escopo de acesso cloud-platform e uma conta de serviço:

    gcloud container clusters create CLUSTER_NAME --service-account  SERVICE_ACCT_NAME --scopes=cloud-platform
    

Compute Engine

Para usar o Error Reporting com instâncias de VM do Compute Engine, faça o seguinte:

  1. Verifique se a conta de serviço a ser usada pela instância de VM recebeu o papel Gravador do Error Reporting (roles/errorreporting.writer).

    É possível usar a conta de serviço padrão do Compute Engine ou uma conta de serviço personalizada.

    Para saber mais sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

  2. Noconsole, acesse a página Instâncias de VM : Google Cloud

    Acessar Instâncias de VM

    Se você usar a barra de pesquisa para encontrar a página, selecione o resultado com o subtítulo Compute Engine.

  3. Selecione a instância de VM que você quer receber o cloud-platform escopo de acesso.

  4. Clique em Parar e em Editar.

  5. Na seção Identidade e acesso à API, selecione uma conta de serviço que tenha o papel Gravador do Error Reporting (roles/errorreporting.writer).

  6. Na seção Escopos de acesso, selecione Permitir acesso completo a todas as APIs do Cloud e salve as alterações.

  7. Clique em Iniciar/retomar.

Exemplo

Como relatar erros em bibliotecas com base em rack

A biblioteca do Error Reporting para Ruby facilita a integração do Error Reporting aos frameworks da Web de Ruby baseados em Rack mais conhecidos, como Ruby on Rails e Sinatra. Quando a biblioteca está ativa, ela informa automaticamente as exceções capturadas na pilha de racks do aplicativo.

Como relatar erros manualmente

É possível relatar um erro, manualmente, chamando o método report, conforme visto no exemplo a seguir:

require "google/cloud/error_reporting"

begin
  raise "Something went wrong"
rescue StandardError => e
  Google::Cloud::ErrorReporting.report e
end

Executar apps em um ambiente de desenvolvimento local

Para usar a biblioteca do Error Reporting para Ruby em um ambiente de desenvolvimento local, como executar a biblioteca na sua própria estação de trabalho, forneça as credenciais padrão do aplicativo local para a biblioteca do Error Reporting para Ruby. Para mais informações, consulte Autenticar no Error Reporting.

Para usar os exemplos do Ruby nesta página em um ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e configure o Application Default Credentials com suas credenciais de usuário.

  1. Instale a Google Cloud CLI.

  2. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.

  3. Se você estiver usando um shell local, crie credenciais de autenticação local para sua conta de usuário:

    gcloud auth application-default login

    Não é necessário fazer isso se você estiver usando o Cloud Shell.

    Se um erro de autenticação for retornado e você estiver usando um provedor de identidade (IdP) externo, confirme se você fez login na CLI gcloud com sua identidade federada.

Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

O método projects.events.report também aceita chaves de API. Se você quiser usar chaves de API na autenticação, não será necessário configurar um arquivo local do Application Default Credentials. Para mais informações, consulte Criar uma chave de API na documentação de autenticação Google Cloud .

Como usar a interface de configuração do Ruby on Rails

Para usar a biblioteca do Error Reporting para Ruby com o framework Ruby on Rails, forneça os parâmetros por meio da interface de configuração do Ruby on Rails:

# 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

Também é possível definir uma configuração compartilhada para todas as gems do Stackdriver usando o seguinte código:

# Add this to config/environments/*.rb
Rails.application.configure do |config|
  # Stackdriver Shared parameters
  config.google_cloud.project_id = "YOUR-PROJECT-ID"
  config.google_cloud.keyfile    = "/path/to/service-account.json"
end

O Error Reporting é ativado por padrão quando o Rails está em execução no modo de produção. Para habilitar o Error Reporting no modo de desenvolvimento, adicione o seguinte:

# Add this to config/environments/development.rb
Rails.application.configure do |config|
  config.google_cloud.use_error_reporting = true
end

Como usar a interface de configuração de instrumentação

Para usar a biblioteca do Error Reporting para Ruby em outros aplicativos baseados em Rack, forneça os parâmetros por meio da interface de configuração:

require "google/cloud/error_reporting"

Google::Cloud.configure do |config|
  # Stackdriver Error Reporting specific parameters
  config.error_reporting.project_id = "YOUR-PROJECT-ID"
  config.error_reporting.keyfile    = "/path/to/service-account.json"
end

Também é possível definir uma configuração compartilhada para todas as gems do Google Cloud Observability usando o seguinte código:

require "stackdriver"

Google::Cloud.configure do |config|
  # Stackdriver Shared parameters
  config.project_id = "YOUR-PROJECT-ID"
  config.keyfile    = "/path/to/service-account.json"
end

Ver grupos de erros

Noconsole, acesse a página Error Reporting : Google Cloud

Acessar o Error Reporting

Também é possível encontrar essa página usando a barra de pesquisa.

Para mais informações, consulte Visualizar e filtrar grupos de erros.