Instrumentar aplicativos Ruby para o Error Reporting

É possível enviar relatórios de erros para o Error Reporting a partir de aplicativos Ruby usando a biblioteca do Error Reporting para Ruby (em inglês).

O Error Reporting é integrado a alguns serviços do Google Cloud, como App Engine, Compute Engine e Google Kubernetes Engine. Essa ferramenta exibe os erros registrados no Cloud Logging por aplicativos em execução nesses serviços. Para mais informações, consulte a seção Como executar no Google Cloud Platform nesta página.

Também é possível enviar dados de erros para o Error Reporting usando o Logging. Para mais informações sobre os requisitos de formatação de dados, leia Como formatar mensagens de erro no Logging (em inglês).

Antes de começar

  1. Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de 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. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  3. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  4. Ative a Error Reporting API .

    Ative a API

  5. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  6. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  7. Ative a Error Reporting API .

    Ative a API

  8. Instale o Ruby 2.2+ ou posterior.

Instalar a biblioteca de cliente

Com a biblioteca do Error Reporting para Ruby, você consegue monitorar e visualizar os erros 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.

Como 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.

Como relatar erros

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

Como executar no Google Cloud

O uso da biblioteca do Error Reporting para Ruby exige o papel de gravador do Error Reporting do gerenciamento de identidade e acesso. Por padrão, a maioria das plataformas de computação do Google Cloud concede esse papel.

É possível configurar o Error Reporting para Ruby nos seguintes ambientes do Google Cloud.

Ambiente flexível do App Engine

O App Engine concede o papel Gravador do Error Reporting (em inglês) por padrão.

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

No GKE, você precisa adicionar o escopo de acesso cloud-platform ao criar o cluster, como mostra este exemplo de comando:

gcloud container clusters create example-cluster-name --scopes https://www.googleapis.com/auth/cloud-platform

Compute Engine

Ao usar instâncias de VM do Compute Engine, adicione o escopo de acesso cloud-platform a cada instância. Ao criar uma nova instância por meio do console do Google Cloud, faça isso na seção Identidade e acesso à API do painel Criar instância. Use a conta de serviço padrão do Compute Engine ou outra de sua escolha e selecione Permitir acesso completo a todas as APIs do Cloud na seção Identidade e acesso à API. Seja qual for a conta de serviço selecionada, verifique se ela tem o papel de gravador do Error Reporting na seção IAM e administrador do console do Google Cloud.

Execução local e em outro lugar

Para usar a biblioteca do Error Reporting para Ruby fora do Google Cloud, incluindo a execução da biblioteca na sua própria estação de trabalho, nos computadores do seu data center ou nas instâncias de VM de outro provedor de nuvem, forneça as credenciais da conta de serviço e o ID do projeto do Google Cloud diretamente para a biblioteca do Error Reporting para Ruby.

É possível criar e receber credenciais da conta de serviço manualmente. Ao especificar o campo Papel, use o papel de gravador do Error Reporting. Para mais informações sobre os papéis de gerenciamento de identidade e acesso, consulte o Guia de controle de acesso.

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 conjunto de operações do Google Cloud usando este comando:

require "stackdriver"

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

Como visualizar relatórios de erros

No console do Google Cloud, selecione Error Reporting ou clique no botão a seguir e selecione um projeto:

Acessar o Error Reporting

Para mais informações, consulte Como visualizar erros.