google-cloud-error_reporting 0.27.0 → 0.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/README.md +142 -35
- data/lib/google-cloud-error_reporting.rb +9 -7
- data/lib/google/cloud/error_reporting.rb +25 -16
- data/lib/google/cloud/error_reporting/credentials.rb +32 -16
- data/lib/google/cloud/error_reporting/middleware.rb +3 -2
- data/lib/google/cloud/error_reporting/project.rb +6 -2
- data/lib/google/cloud/error_reporting/rails.rb +9 -3
- data/lib/google/cloud/error_reporting/service.rb +3 -22
- data/lib/google/cloud/error_reporting/v1beta1/doc/google/devtools/clouderrorreporting/v1beta1/error_stats_service.rb +25 -10
- data/lib/google/cloud/error_reporting/v1beta1/doc/google/devtools/clouderrorreporting/v1beta1/report_errors_service.rb +16 -1
- data/lib/google/cloud/error_reporting/v1beta1/doc/google/protobuf/duration.rb +14 -1
- data/lib/google/cloud/error_reporting/v1beta1/doc/google/protobuf/timestamp.rb +26 -1
- data/lib/google/cloud/error_reporting/v1beta1/doc/overview.rb +82 -0
- data/lib/google/cloud/error_reporting/v1beta1/error_group_service_client.rb +64 -44
- data/lib/google/cloud/error_reporting/v1beta1/error_stats_service_client.rb +90 -54
- data/lib/google/cloud/error_reporting/v1beta1/report_errors_service_client.rb +60 -32
- data/lib/google/cloud/error_reporting/version.rb +1 -1
- metadata +8 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 5ce7d566383abf96959435e8f9a50a02a5572c57a40b5a12b6dafe2374b0df0b
|
4
|
+
data.tar.gz: 32bc529ffd05720f2a560536d44ef1dc98295f7aa0b82e155071de9b9f62fd96
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aecb1e6162d607ae4406bbfe832b82e83ec3ecf11a470f73fbe05babc38b75307aecae6a677ebc864328854c343196231c216180d2efde256d9343d9f2cf4a74
|
7
|
+
data.tar.gz: bedc1b1736c010cacd97782bc2b2dc47134087735367ae8f28eb62c460dc7f611425e4f9b6d364a49069ca2525b919b9b317ece027885d7ccca30e8730dc78cf
|
data/README.md
CHANGED
@@ -13,63 +13,170 @@ new errors.
|
|
13
13
|
- [google-cloud-error_reporting on RubyGems](https://rubygems.org/gems/google-cloud-error_reporting)
|
14
14
|
- [Stackdriver ErrorReporting documentation](https://cloud.google.com/error-reporting/docs/)
|
15
15
|
|
16
|
-
google-cloud-error_reporting provides an instrumentation API that makes it easy
|
17
|
-
to report exceptions to the Stackdriver Error Reporting service. It also
|
18
|
-
contains a full API client library for the
|
19
|
-
[Stackdriver Error Reporting API](https://developers.google.com/apis-explorer/#p/clouderrorreporting/v1beta1/)
|
20
|
-
(v1beta1).
|
21
|
-
|
22
16
|
## Quick Start
|
17
|
+
|
18
|
+
Install the gem directly:
|
19
|
+
|
23
20
|
```sh
|
24
21
|
$ gem install google-cloud-error_reporting
|
25
22
|
```
|
26
23
|
|
27
|
-
|
24
|
+
Or install through Bundler:
|
28
25
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
26
|
+
1. Add the `google-cloud-error_reporting` gem to your Gemfile:
|
27
|
+
|
28
|
+
```ruby
|
29
|
+
gem "google-cloud-error_reporting"
|
30
|
+
```
|
31
|
+
|
32
|
+
2. Use Bundler to install the gem:
|
33
|
+
|
34
|
+
```sh
|
35
|
+
$ bundle install
|
36
|
+
```
|
37
|
+
|
38
|
+
Alternatively, check out the [`stackdriver`](../stackdriver) gem that includes
|
39
|
+
the `google-cloud-error_reporting` gem.
|
40
|
+
|
41
|
+
## Enable Stackdriver Error Reporting API
|
42
|
+
|
43
|
+
The Stackdriver Error Reporting library needs the [Stackdriver Error
|
44
|
+
Reporting API](https://console.cloud.google.com/apis/library/clouderrorreporting.googleapis.com)
|
45
|
+
to be enabled on your Google Cloud project. Make sure it's enabled if not
|
46
|
+
already.
|
35
47
|
|
36
|
-
|
37
|
-
|
48
|
+
## Reporting errors in Rack-based frameworks
|
49
|
+
|
50
|
+
The Stackdriver Error Reporting library for Ruby makes it easy to integrate
|
51
|
+
Stackdriver Error Reporting into popular Rack-based Ruby web frameworks such as
|
52
|
+
Ruby on Rails and Sinatra. When the library integration is enabled, it
|
53
|
+
automatically reports exceptions captured from the application's Rack stack.
|
54
|
+
|
55
|
+
### With Ruby on Rails
|
56
|
+
|
57
|
+
You can load the Railtie that comes with the library into your Ruby
|
58
|
+
on Rails application by explicitly requiring it during the application startup:
|
59
|
+
|
60
|
+
```ruby
|
61
|
+
# In config/application.rb
|
62
|
+
require "google/cloud/error_reporting/rails"
|
63
|
+
```
|
64
|
+
|
65
|
+
If you're using the `stackdriver` gem, it automatically loads the Railtie into
|
66
|
+
your application when it starts.
|
67
|
+
|
68
|
+
### With other Rack-based frameworks
|
69
|
+
|
70
|
+
Other Rack-based frameworks, such as Sinatra, can use the Rack Middleware
|
71
|
+
provided by the library:
|
38
72
|
|
39
|
-
## Instrumentation Example
|
40
73
|
```ruby
|
41
74
|
require "google/cloud/error_reporting"
|
42
|
-
|
43
|
-
# Configure Stackdriver ErrorReporting instrumentation
|
44
|
-
Google::Cloud::ErrorReporting.configure do |config|
|
45
|
-
config.project_id = "my-project"
|
46
|
-
config.keyfile = "/path/to/keyfile.json"
|
47
|
-
end
|
48
|
-
|
49
|
-
# Insert a Rack Middleware to report unhanded exceptions
|
50
75
|
use Google::Cloud::ErrorReporting::Middleware
|
51
|
-
|
52
|
-
|
76
|
+
```
|
77
|
+
|
78
|
+
## Reporting errors manually
|
79
|
+
|
80
|
+
Manually reporting an error is as easy as calling the report method:
|
81
|
+
|
82
|
+
```ruby
|
83
|
+
require "google/cloud/error_reporting"
|
53
84
|
begin
|
54
|
-
fail "
|
85
|
+
fail "boom!"
|
55
86
|
rescue => exception
|
56
87
|
Google::Cloud::ErrorReporting.report exception
|
57
88
|
end
|
58
89
|
```
|
59
90
|
|
60
|
-
##
|
91
|
+
## Configuring the library
|
92
|
+
|
93
|
+
You can customize the behavior of the Stackdriver Error Reporting library for
|
94
|
+
Ruby. See the [configuration guide](../stackdriver/docs/configuration.md) for a list
|
95
|
+
of possible configuration options.
|
96
|
+
|
97
|
+
## Running on Google Cloud Platform
|
98
|
+
|
99
|
+
The Stackdriver Error Reporting library for Ruby should work without you
|
100
|
+
manually providing authentication credentials for instances running on Google
|
101
|
+
Cloud Platform, as long as the Stackdriver Error Reporting API access scope is
|
102
|
+
enabled on that instance.
|
103
|
+
|
104
|
+
### App Engine
|
105
|
+
|
106
|
+
On Google App Engine, the Stackdriver Error Reporting API access scope is
|
107
|
+
enabled by default, and the Stackdriver Error Reporting library for Ruby can
|
108
|
+
be used without providing credentials or a project ID.
|
109
|
+
|
110
|
+
### Container Engine
|
111
|
+
|
112
|
+
On Google Container Engine, you must explicitly add the `cloud-platform` OAuth
|
113
|
+
scope when creating the cluster:
|
114
|
+
|
115
|
+
```sh
|
116
|
+
$ gcloud container clusters create example-cluster-name --scopes https://www.googleapis.com/auth/cloud-platform
|
117
|
+
```
|
118
|
+
|
119
|
+
You may also do this through the Google Cloud Platform Console. Select
|
120
|
+
**Enabled** in the **Cloud Platform** section of **Create a container cluster**.
|
121
|
+
|
122
|
+
### Compute Engine
|
123
|
+
|
124
|
+
For Google Compute Engine instances, you must explicitly enable the
|
125
|
+
`cloud-platform` access scope for each instance. When you create a new instance
|
126
|
+
through the Google Cloud Platform Console, you can do this under Identity and
|
127
|
+
API access: Use the Compute Engine default service account and select "Allow
|
128
|
+
full access to all Cloud APIs" under Access scopes.
|
129
|
+
|
130
|
+
## Running locally and elsewhere
|
131
|
+
|
132
|
+
To run the Stackdriver Error Reporting outside of Google Cloud Platform, you
|
133
|
+
must supply your GCP project ID and appropriate service account credentials
|
134
|
+
directly to the Stackdriver Error Reporting. This applies to running the
|
135
|
+
library on your own workstation, on your datacenter's computers, or on the VM
|
136
|
+
instances of another cloud provider. See the [Authentication
|
137
|
+
section](#authentication) for instructions on how to do so.
|
138
|
+
|
139
|
+
## Authentication
|
140
|
+
|
141
|
+
The Instrumentation client and API use Service Account credentials to connect
|
142
|
+
to Google Cloud services. When running on Google Cloud Platform environments,
|
143
|
+
the credentials will be discovered automatically. When running on other
|
144
|
+
environments the Service Account credentials can be specified by providing in
|
145
|
+
several ways.
|
146
|
+
|
147
|
+
The best way to provide authentication information if you're using Ruby on Rails
|
148
|
+
is through the Rails configuration interface:
|
61
149
|
|
62
|
-
This library also provides a built-in Railtie for Ruby on Rails integration. To
|
63
|
-
do this, simply add this line to config/application.rb:
|
64
150
|
```ruby
|
65
|
-
|
151
|
+
# in config/environments/*.rb
|
152
|
+
Rails.application.configure do |config|
|
153
|
+
# Shared parameters
|
154
|
+
config.google_cloud.project_id = "your-project-id"
|
155
|
+
config.google_cloud.keyfile = "/path/to/key.json"
|
156
|
+
# Or Stackdriver Error Reporting specific parameters
|
157
|
+
config.google_cloud.error_reporting.project_id = "your-project-id"
|
158
|
+
config.google_cloud.error_reporting.keyfile = "/path/to/key.json"
|
159
|
+
end
|
66
160
|
```
|
67
161
|
|
68
|
-
|
69
|
-
|
162
|
+
Other Rack-based applications that are loading the Rack Middleware directly or
|
163
|
+
using the manually reporting interface can leverage the configration interface:
|
164
|
+
|
165
|
+
```ruby
|
166
|
+
require "google/cloud/error_reporting"
|
167
|
+
Google::Cloud.configure do |config|
|
168
|
+
# Shared parameters
|
169
|
+
config.project_id = "your-project-id"
|
170
|
+
config.keyfile = "/path/to/key.json"
|
171
|
+
# Or Stackdriver Error Reporting specific parameters
|
172
|
+
config.error_reporting.project_id = "your-project-id"
|
173
|
+
config.error_reporting.keyfile = "/path/to/key.json"
|
174
|
+
end
|
175
|
+
```
|
70
176
|
|
71
|
-
|
72
|
-
|
177
|
+
This library also supports the other authentication methods provided by the
|
178
|
+
`google-cloud-ruby` suite. Instructions and configuration options are covered
|
179
|
+
in the [Authentication Guide](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/google-cloud-debugger/guides/authentication).
|
73
180
|
|
74
181
|
## Supported Ruby Versions
|
75
182
|
|
@@ -70,11 +70,12 @@ module Google
|
|
70
70
|
# For more information on connecting to Google Cloud see the [Authentication
|
71
71
|
# Guide](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/guides/authentication)
|
72
72
|
#
|
73
|
-
# @param [String]
|
74
|
-
# Stackdriver Error Reporting service you are connecting to.
|
75
|
-
#
|
76
|
-
# @param [String, Hash]
|
77
|
-
#
|
73
|
+
# @param [String] project_id Google Cloud Platform project identifier for
|
74
|
+
# the Stackdriver Error Reporting service you are connecting to. If not
|
75
|
+
# present, the default project for the credentials is used.
|
76
|
+
# @param [String, Hash, Google::Auth::Credentials] credentials The path to
|
77
|
+
# the keyfile as a String, the contents of the keyfile as a Hash, or a
|
78
|
+
# Google::Auth::Credentials object. (See {ErrorReporting::Credentials})
|
78
79
|
# @param [String, Array<String>] scope The OAuth 2.0 scopes controlling the
|
79
80
|
# set of resources and operations that the connection can access. See
|
80
81
|
# [Using OAuth 2.0 to Access Google
|
@@ -102,10 +103,11 @@ module Google
|
|
102
103
|
# service_version: "v8"
|
103
104
|
# error_reporting.report error_event
|
104
105
|
#
|
105
|
-
def self.error_reporting
|
106
|
+
def self.error_reporting project_id = nil, credentials = nil, scope: nil,
|
106
107
|
timeout: nil, client_config: nil
|
107
108
|
require "google/cloud/error_reporting"
|
108
|
-
Google::Cloud::ErrorReporting.new
|
109
|
+
Google::Cloud::ErrorReporting.new project_id: project_id,
|
110
|
+
credentials: credentials,
|
109
111
|
scope: scope, timeout: timeout,
|
110
112
|
client_config: client_config
|
111
113
|
end
|
@@ -91,10 +91,12 @@ module Google
|
|
91
91
|
# [Authentication
|
92
92
|
# Guide](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/guides/authentication).
|
93
93
|
#
|
94
|
-
# @param [String]
|
95
|
-
# Reporting service.
|
96
|
-
#
|
97
|
-
#
|
94
|
+
# @param [String] project_id Google Cloud Platform project identifier for
|
95
|
+
# the Stackdriver Error Reporting service you are connecting to. If not
|
96
|
+
# present, the default project for the credentials is used.
|
97
|
+
# @param [String, Hash, Google::Auth::Credentials] credentials The path to
|
98
|
+
# the keyfile as a String, the contents of the keyfile as a Hash, or a
|
99
|
+
# Google::Auth::Credentials object. (See {ErrorReporting::Credentials})
|
98
100
|
# @param [String, Array<String>] scope The OAuth 2.0 scopes controlling
|
99
101
|
# the set of resources and operations that the connection can access.
|
100
102
|
# See [Using OAuth 2.0 to Access Google
|
@@ -107,6 +109,9 @@ module Google
|
|
107
109
|
# @param [Integer] timeout Default timeout to use in requests. Optional.
|
108
110
|
# @param [Hash] client_config A hash of values to override the default
|
109
111
|
# behavior of the API client. Optional.
|
112
|
+
# @param [String] project Alias for the `project_id` argument. Deprecated.
|
113
|
+
# @param [String] keyfile Alias for the `credentials` argument.
|
114
|
+
# Deprecated.
|
110
115
|
#
|
111
116
|
# @return [Google::Cloud::ErrorReporting::Project]
|
112
117
|
#
|
@@ -116,19 +121,23 @@ module Google
|
|
116
121
|
# error_reporting = Google::Cloud::ErrorReporting.new
|
117
122
|
# # ...
|
118
123
|
#
|
119
|
-
def self.new
|
120
|
-
client_config: nil
|
121
|
-
|
122
|
-
|
123
|
-
fail ArgumentError, "
|
124
|
+
def self.new project_id: nil, credentials: nil, scope: nil, timeout: nil,
|
125
|
+
client_config: nil, project: nil, keyfile: nil
|
126
|
+
project_id ||= (project || ErrorReporting::Project.default_project_id)
|
127
|
+
project_id = project_id.to_s
|
128
|
+
fail ArgumentError, "project_id is missing" if project_id.empty?
|
124
129
|
|
125
|
-
credentials
|
126
|
-
|
127
|
-
|
130
|
+
credentials ||= keyfile
|
131
|
+
credentials ||= ErrorReporting::Credentials.default(scope: scope)
|
132
|
+
unless credentials.is_a? Google::Auth::Credentials
|
133
|
+
credentials = ErrorReporting::Credentials.new credentials,
|
134
|
+
scope: scope
|
135
|
+
end
|
128
136
|
|
129
|
-
|
130
|
-
|
131
|
-
|
137
|
+
ErrorReporting::Project.new(
|
138
|
+
ErrorReporting::Service.new(
|
139
|
+
project_id, credentials, timeout: timeout,
|
140
|
+
client_config: client_config
|
132
141
|
)
|
133
142
|
)
|
134
143
|
end
|
@@ -147,7 +156,7 @@ module Google
|
|
147
156
|
# require "google/cloud/error_reporting"
|
148
157
|
#
|
149
158
|
# Google::Cloud::ErrorReporting.configure do |config|
|
150
|
-
# config.project_id = "my-project
|
159
|
+
# config.project_id = "my-project"
|
151
160
|
# config.keyfile = "/path/to/keyfile.json"
|
152
161
|
# config.service_name = "my-service"
|
153
162
|
# config.service_version = "v8"
|
@@ -13,28 +13,44 @@
|
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
15
|
|
16
|
-
require "
|
16
|
+
require "googleauth"
|
17
17
|
|
18
18
|
module Google
|
19
19
|
module Cloud
|
20
20
|
module ErrorReporting
|
21
21
|
##
|
22
|
-
#
|
23
|
-
|
22
|
+
# # Credentials
|
23
|
+
#
|
24
|
+
# Represents the authentication and authorization used to connect to the
|
25
|
+
# Stackdriver Error Reporting service.
|
26
|
+
#
|
27
|
+
# @example
|
28
|
+
# require "google/cloud/error_reporting"
|
29
|
+
#
|
30
|
+
# keyfile = "/path/to/keyfile.json"
|
31
|
+
# creds = Google::Cloud::ErrorReporting::Credentials.new keyfile
|
32
|
+
#
|
33
|
+
# error_reporting = Google::Cloud::ErrorReporting.new(
|
34
|
+
# project_id: "my-project",
|
35
|
+
# credentials: creds
|
36
|
+
# )
|
37
|
+
#
|
38
|
+
# error_reporting.project_id #=> "my-project"
|
39
|
+
#
|
40
|
+
class Credentials < Google::Auth::Credentials
|
24
41
|
SCOPE = ["https://www.googleapis.com/auth/cloud-platform"]
|
25
|
-
PATH_ENV_VARS = %w(
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
end
|
42
|
+
PATH_ENV_VARS = %w(ERROR_REPORTING_CREDENTIALS
|
43
|
+
GOOGLE_CLOUD_CREDENTIALS
|
44
|
+
ERROR_REPORTING_KEYFILE
|
45
|
+
GOOGLE_CLOUD_KEYFILE
|
46
|
+
GCLOUD_KEYFILE)
|
47
|
+
JSON_ENV_VARS = %w(ERROR_REPORTING_CREDENTIALS_JSON
|
48
|
+
GOOGLE_CLOUD_CREDENTIALS_JSON
|
49
|
+
ERROR_REPORTING_KEYFILE_JSON
|
50
|
+
GOOGLE_CLOUD_KEYFILE_JSON
|
51
|
+
GCLOUD_KEYFILE_JSON)
|
52
|
+
DEFAULT_PATHS = \
|
53
|
+
["~/.config/gcloud/application_default_credentials.json"]
|
38
54
|
end
|
39
55
|
end
|
40
56
|
end
|
@@ -171,8 +171,9 @@ module Google
|
|
171
171
|
##
|
172
172
|
# Fallback to default configuration values if not defined already
|
173
173
|
def init_default_config
|
174
|
-
configuration.project_id ||=
|
175
|
-
|
174
|
+
configuration.project_id ||= \
|
175
|
+
(Cloud.configure.project_id ||
|
176
|
+
ErrorReporting::Project.default_project_id)
|
176
177
|
configuration.keyfile ||= Cloud.configure.keyfile
|
177
178
|
configuration.service_name ||=
|
178
179
|
ErrorReporting::Project.default_service_name
|
@@ -50,11 +50,14 @@ module Google
|
|
50
50
|
#
|
51
51
|
# @return [String] default valid GCP project_id
|
52
52
|
#
|
53
|
-
def self.
|
53
|
+
def self.default_project_id
|
54
54
|
ENV["ERROR_REPORTING_PROJECT"] ||
|
55
55
|
ENV["GOOGLE_CLOUD_PROJECT"] ||
|
56
56
|
Google::Cloud.env.project_id
|
57
57
|
end
|
58
|
+
class << self
|
59
|
+
alias_method :default_project, :default_project_id
|
60
|
+
end
|
58
61
|
|
59
62
|
##
|
60
63
|
# Find default service_name from `ERROR_REPORTING_SERVICE`,
|
@@ -102,9 +105,10 @@ module Google
|
|
102
105
|
#
|
103
106
|
# @return [String] The current project_id
|
104
107
|
#
|
105
|
-
def
|
108
|
+
def project_id
|
106
109
|
service.project
|
107
110
|
end
|
111
|
+
alias_method :project, :project_id
|
108
112
|
|
109
113
|
##
|
110
114
|
# Report a {Google::Cloud::ErrorReporting::ErrorEvent} to Stackdriver
|
@@ -121,7 +121,7 @@ module Google
|
|
121
121
|
# Fallback to default config values if config parameters not provided.
|
122
122
|
def self.init_default_config
|
123
123
|
config = ErrorReporting.configure
|
124
|
-
config.project_id ||= ErrorReporting::Project.
|
124
|
+
config.project_id ||= ErrorReporting::Project.default_project_id
|
125
125
|
config.service_name ||= ErrorReporting::Project.default_service_name
|
126
126
|
config.service_version ||=
|
127
127
|
ErrorReporting::Project.default_service_version
|
@@ -129,9 +129,15 @@ module Google
|
|
129
129
|
|
130
130
|
##
|
131
131
|
# @private Verify credentials
|
132
|
-
def self.valid_credentials? project_id,
|
132
|
+
def self.valid_credentials? project_id, credentials
|
133
133
|
begin
|
134
|
-
|
134
|
+
# if credentials is nil, get default
|
135
|
+
credentials ||= ErrorReporting::Credentials.default(scope: scope)
|
136
|
+
# only create a new Credentials object if the val isn't one already
|
137
|
+
unless credentials.is_a? Google::Auth::Credentials
|
138
|
+
# if credentials is not a Credentials object, create one
|
139
|
+
ErrorReporting::Credentials.new credentials, scope: scope
|
140
|
+
end
|
135
141
|
rescue => e
|
136
142
|
STDOUT.puts "Note: Google::Cloud::ErrorReporting is disabled " \
|
137
143
|
"because it failed to authorize with the service. (#{e.message})"
|