Module: Google::Cloud::ErrorReporting

Defined in:
lib/google/cloud/error_reporting.rb,
lib/google/cloud/error_reporting/rails.rb,
lib/google/cloud/error_reporting/project.rb,
lib/google/cloud/error_reporting/service.rb,
lib/google/cloud/error_reporting/version.rb,
lib/google/cloud/error_reporting/middleware.rb,
lib/google/cloud/error_reporting/credentials.rb,
lib/google/cloud/error_reporting/error_event.rb,
lib/google/cloud/error_reporting/async_error_reporter.rb

Overview

Error Reporting

Error Reporting counts, analyzes and aggregates the crashes in your running cloud services.

See Error Reporting Overview.

Defined Under Namespace

Classes: Credentials, ErrorEvent, Middleware, Project, Railtie

Constant Summary collapse

VERSION =
"0.43.0".freeze

Class Method Summary collapse

Class Method Details

.configure {|Google::Cloud.configure.error_reporting| ... } ⇒ Google::Cloud::Config

Configure the default Project client, allows the report public method to reuse these configured parameters.

The following ErrorReporting configuration parameters are supported:

  • project_id - (String) Google Cloud Platform project identifier for the Error Reporting service you are connecting to. (The parameter project is considered deprecated, but may also be used.)
  • credentials - (String, Hash, Google::Auth::Credentials) The path to the keyfile as a String, the contents of the keyfile as a Hash, or a Google::Auth::Credentials object. (See Credentials) (The parameter keyfile is considered deprecated, but may also be used.)
  • scope - (String, Array) The OAuth 2.0 scopes controlling the set of resources and operations that the connection can access.
  • quota_project - (String) The project ID for a project that can be used by client libraries for quota and billing purposes.
  • timeout - (Integer) Default timeout to use in requests.
  • endpoint - (String) Override of the endpoint host name, or nil to use the default endpoint.
  • service_name - (String) Name for the application.
  • service_version - (String) Version identifier for the application.
  • ignore_classes - (Array) Array of exception types that should not be reported.
  • on_error - (Proc) A Proc to be run when an error is encountered on a background thread, such as report or Middleware. The Proc must take the error object as the single argument. If ErrorReporting is being used to report errors using Google::Cloud::cofigure.on_error, then this on_error should be configured to report errors raised when reporting through ErrorReporting.

See the Configuration Guide for full configuration parameters.

Examples:

# in app.rb
require "google/cloud/error_reporting"

Google::Cloud::ErrorReporting.configure do |config|
  config.project_id = "my-project"
  config.credentials = "/path/to/keyfile.json"
  config.service_name = "my-service"
  config.service_version = "v8"
end

begin
  fail "boom"
rescue => exception
  # Report exception using configuration parameters provided above
  Google::Cloud::ErrorReporting.report exception
end

Yields:

Returns:

  • (Google::Cloud::Config)

    The configuration object the Google::Cloud::ErrorReporting module uses.



160
161
162
163
164
# File 'lib/google/cloud/error_reporting.rb', line 160

def self.configure
  yield Google::Cloud.configure.error_reporting if block_given?

  Google::Cloud.configure.error_reporting
end

.default_reporter(&block) ⇒ #report

Returns the global default reporter used by middleware and the report convenience method.

If the default reporter is already defined, returns it. Otherwise, if a block is given, it is called and the result is set as the default reporter. Otherwise, if no block is given, a reporter is constructed from the default project and credentials.

Returns:



266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
# File 'lib/google/cloud/error_reporting.rb', line 266

def self.default_reporter &block
  @default_reporter_mutex.synchronize do
    @default_reporter ||=
      if block
        block.call
      else
        project_id = Project.default_project_id
        credentials = default_credentials
        AsyncErrorReporter.new(
          new(project_id: project_id, credentials: credentials)
        )
      end
  end
  @default_reporter
end

.new(project_id: nil, credentials: nil, scope: nil, timeout: nil, endpoint: nil, project: nil, keyfile: nil) ⇒ Google::Cloud::ErrorReporting::Project

Creates a new object for connecting to the Error Reporting service. Each call creates a new connection.

For more information on connecting to Google Cloud see the Authentication Guide.

Examples:

require "google/cloud/error_reporting"

error_reporting = Google::Cloud::ErrorReporting.new
# ...

Parameters:

  • project_id (String) (defaults to: nil)

    Google Cloud Platform project identifier for the Error Reporting service you are connecting to. If not present, the default project for the credentials is used.

  • credentials (String, Hash, Google::Auth::Credentials) (defaults to: nil)

    The path to the keyfile as a String, the contents of the keyfile as a Hash, or a Google::Auth::Credentials object. (See Credentials)

  • scope (String, Array<String>) (defaults to: nil)

    The OAuth 2.0 scopes controlling the set of resources and operations that the connection can access. See Using OAuth 2.0 to Access Google APIs.

    The default scope is:

    • https://www.googleapis.com/auth/cloud-platform
  • timeout (Integer) (defaults to: nil)

    Default timeout to use in requests. Optional.

  • endpoint (String) (defaults to: nil)

    Override of the endpoint host name. Optional. If the param is nil, uses the default endpoint.

  • project (String) (defaults to: nil)

    Alias for the project_id argument. Deprecated.

  • keyfile (String) (defaults to: nil)

    Alias for the credentials argument. Deprecated.

Returns:



79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/google/cloud/error_reporting.rb', line 79

def self.new project_id: nil,
             credentials: nil,
             scope: nil,
             timeout: nil,
             endpoint: nil,
             project: nil,
             keyfile: nil
  project_id    ||= project
  project_id    ||= ErrorReporting::Project.default_project_id
  scope         ||= configure.scope
  timeout       ||= configure.timeout
  endpoint      ||= configure.endpoint
  credentials   ||= keyfile || default_credentials(scope: scope)

  credentials = resolve_credentials credentials, scope
  project_id = resolve_project_id project_id, credentials

  service = ErrorReporting::Service.new project_id, credentials, host: endpoint, timeout: timeout
  ErrorReporting::Project.new service
end

.report(exception, service_name: nil, service_version: nil) {|error_event| ... } ⇒ Object

Provides an easy-to-use interface to Report a Ruby exception object to Error Reporting service. This method helps users to transform the Ruby exception into an Error Reporting ErrorEvent gRPC structure, so users don't need to. This should be the prefered method to use when users wish to report captured exception in applications.

This public method creates a default Error Reporting client and reuse that between calls. The default client is initialized with parameters defined in configure.

The error event can be customized before reporting. See the example below and ErrorEvent class for avaiable error event fields.

Examples:

Basic usage

# in app.rb
require "google/cloud/error_reporting"

begin
  fail "boom"
rescue => exception
  # Report exception using configuration parameters provided above
  Google::Cloud::ErrorReporting.report exception
end

The error event can be customized if needed

require "google/cloud/error_reporting"

begin
  fail "boom"
rescue => exception
  Google::Cloud::ErrorReporting.report exception do |error_event|
    error_event.user = "johndoh@example.com"
    error_event.http_status = "502"
  end
end

Parameters:

  • exception (Exception)

    The captured Ruby Exception object

  • service_name (String) (defaults to: nil)

    An identifier for running service. Optional.

  • service_version (String) (defaults to: nil)

    A version identifier for running service.

Yields:

  • (error_event)


211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
# File 'lib/google/cloud/error_reporting.rb', line 211

def self.report exception, service_name: nil, service_version: nil
  return if Google::Cloud.configure.use_error_reporting == false

  service_name ||= Project.default_service_name
  service_version ||= Project.default_service_version

  # Ensure the reported exception has a backtrace
  exception.set_backtrace caller if exception.backtrace.nil?

  error_event = ErrorEvent.from_exception(exception).tap do |event|
    event.service_name = service_name
    event.service_version = service_version
  end

  yield error_event if block_given?

  default_reporter.report error_event
end