fluent-plugin-google-cloud 0.7.23 → 0.7.24
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 +4 -4
- data/Gemfile.lock +2 -2
- data/fluent-plugin-google-cloud.gemspec +1 -1
- data/lib/fluent/plugin/monitoring.rb +50 -29
- data/test/plugin/base_test.rb +9 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 527f693c53835e46491da82100bf40d63c512ff8bbc1a5d087c9b3371ed11df8
|
4
|
+
data.tar.gz: 293ae1af2b793cbc199a112bffe3491f4ef7dbb1e99776ffe4cb3268db662186
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 410f93cf504d5fb3aada4121cf4531ff9e8aa152ab71bdb6f6a35e9d42394bd5becd69352cdb21fcf6b08a86c94a23e8782dfaca016415e8b22a1b6e008080e7
|
7
|
+
data.tar.gz: a9665e0d2755ceb29cf1ea5a83e9f21a67384c4cf4d582cb4ef6db64d8931178325c6a94fa811c12e9c0e6b4d54d2a2cb7cd2334bf9e3b3f568a7a93a9d24a4e
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
fluent-plugin-google-cloud (0.7.
|
4
|
+
fluent-plugin-google-cloud (0.7.24)
|
5
5
|
fluentd (= 1.6.3)
|
6
6
|
google-api-client (= 0.30.8)
|
7
7
|
google-cloud-logging (= 1.6.6)
|
@@ -45,7 +45,7 @@ GEM
|
|
45
45
|
representable (~> 3.0)
|
46
46
|
retriable (>= 2.0, < 4.0)
|
47
47
|
signet (~> 0.10)
|
48
|
-
google-cloud-core (1.4.
|
48
|
+
google-cloud-core (1.4.1)
|
49
49
|
google-cloud-env (~> 1.0)
|
50
50
|
google-cloud-env (1.3.0)
|
51
51
|
faraday (~> 0.11)
|
@@ -10,7 +10,7 @@ eos
|
|
10
10
|
gem.homepage =
|
11
11
|
'https://github.com/GoogleCloudPlatform/fluent-plugin-google-cloud'
|
12
12
|
gem.license = 'Apache-2.0'
|
13
|
-
gem.version = '0.7.
|
13
|
+
gem.version = '0.7.24'
|
14
14
|
gem.authors = ['Stackdriver Agents Team']
|
15
15
|
gem.email = ['stackdriver-agents@google.com']
|
16
16
|
gem.required_ruby_version = Gem::Requirement.new('>= 2.2')
|
@@ -33,13 +33,15 @@ module Monitoring
|
|
33
33
|
|
34
34
|
# OpenCensus implementation of counters.
|
35
35
|
class OpenCensusCounter < BaseCounter
|
36
|
-
def initialize(recorder, measure)
|
36
|
+
def initialize(recorder, measure, translator)
|
37
37
|
raise ArgumentError, 'measure must not be nil' if measure.nil?
|
38
38
|
@recorder = recorder
|
39
39
|
@measure = measure
|
40
|
+
@translator = translator
|
40
41
|
end
|
41
42
|
|
42
43
|
def increment(by: 1, labels: {})
|
44
|
+
labels = @translator.translate_labels(labels)
|
43
45
|
tag_map = OpenCensus::Tags::TagMap.new(
|
44
46
|
labels.map { |k, v| [k.to_s, v.to_s] }.to_h)
|
45
47
|
@recorder.record(@measure.create_measurement(value: by, tags: tag_map))
|
@@ -74,8 +76,12 @@ module Monitoring
|
|
74
76
|
end
|
75
77
|
|
76
78
|
# Exception-driven behavior to avoid synchronization errors.
|
77
|
-
def counter(name,
|
78
|
-
|
79
|
+
def counter(name, _labels, docstring)
|
80
|
+
# When we upgrade to Prometheus client 0.10.0 or higher, pass the
|
81
|
+
# labels in the metric constructor. The 'labels' field in
|
82
|
+
# Prometheus client 0.9.0 has a different function and will not
|
83
|
+
# work as intended.
|
84
|
+
return PrometheusCounter.new(@registry.counter(name, docstring))
|
79
85
|
rescue Prometheus::Client::Registry::AlreadyRegisteredError
|
80
86
|
return PrometheusCounter.new(@registry.get(name))
|
81
87
|
end
|
@@ -105,48 +111,28 @@ module Monitoring
|
|
105
111
|
end
|
106
112
|
|
107
113
|
def counter(name, labels, docstring)
|
108
|
-
|
109
|
-
measure = OpenCensus::Stats::MeasureRegistry.get(name)
|
114
|
+
translator = MetricTranslator.new(name, labels)
|
115
|
+
measure = OpenCensus::Stats::MeasureRegistry.get(translator.name)
|
110
116
|
if measure.nil?
|
111
117
|
measure = OpenCensus::Stats.create_measure_int(
|
112
|
-
name: name,
|
118
|
+
name: translator.name,
|
113
119
|
unit: OpenCensus::Stats::Measure::UNIT_NONE,
|
114
120
|
description: docstring
|
115
121
|
)
|
116
122
|
end
|
117
123
|
OpenCensus::Stats.create_and_register_view(
|
118
|
-
name: name,
|
124
|
+
name: translator.name,
|
119
125
|
measure: measure,
|
120
126
|
aggregation: OpenCensus::Stats.create_sum_aggregation,
|
121
127
|
description: docstring,
|
122
|
-
columns:
|
128
|
+
columns: translator.view_labels.map(&:to_s)
|
123
129
|
)
|
124
|
-
OpenCensusCounter.new(@recorder, measure)
|
130
|
+
OpenCensusCounter.new(@recorder, measure, translator)
|
125
131
|
end
|
126
132
|
|
127
133
|
def export
|
128
134
|
@exporter.export @recorder.views_data
|
129
135
|
end
|
130
|
-
|
131
|
-
class << self
|
132
|
-
# Translate the internal metrics to the curated metrics in Stackdriver.
|
133
|
-
# The Prometheus metrics are collected by Google Kubernetes Engine's
|
134
|
-
# monitoring, so we can't redefine them.
|
135
|
-
def translate_metric_name(name)
|
136
|
-
case name
|
137
|
-
when :stackdriver_successful_requests_count,
|
138
|
-
:stackdriver_failed_requests_count
|
139
|
-
:request_count
|
140
|
-
when :stackdriver_ingested_entries_count,
|
141
|
-
:stackdriver_dropped_entries_count
|
142
|
-
:log_entry_count
|
143
|
-
when :stackdriver_retried_entries_count
|
144
|
-
:log_entry_retry_count
|
145
|
-
else
|
146
|
-
name
|
147
|
-
end
|
148
|
-
end
|
149
|
-
end
|
150
136
|
end
|
151
137
|
|
152
138
|
# Factory that is used to create a monitoring registry based on
|
@@ -168,4 +154,39 @@ module Monitoring
|
|
168
154
|
registry.new(project_id, monitored_resource)
|
169
155
|
end
|
170
156
|
end
|
157
|
+
|
158
|
+
# Translate the internal metrics to the curated metrics in Stackdriver. The
|
159
|
+
# Prometheus metrics are collected by Google Kubernetes Engine's monitoring,
|
160
|
+
# so we can't redefine them.
|
161
|
+
# Avoid this mechanism for new metrics by defining them in their final form,
|
162
|
+
# so they don't need translation.
|
163
|
+
class MetricTranslator
|
164
|
+
attr_reader :name
|
165
|
+
attr_reader :view_labels
|
166
|
+
|
167
|
+
def initialize(name, metric_labels)
|
168
|
+
@legacy = true
|
169
|
+
case name
|
170
|
+
when :stackdriver_successful_requests_count,
|
171
|
+
:stackdriver_failed_requests_count
|
172
|
+
@name = :request_count
|
173
|
+
when :stackdriver_ingested_entries_count,
|
174
|
+
:stackdriver_dropped_entries_count
|
175
|
+
@name = :log_entry_count
|
176
|
+
when :stackdriver_retried_entries_count
|
177
|
+
@name = :log_entry_retry_count
|
178
|
+
else
|
179
|
+
@name = name
|
180
|
+
@legacy = false
|
181
|
+
end
|
182
|
+
# Collapsed from [:response_code, :grpc]
|
183
|
+
@view_labels = @legacy ? [:response_code] : metric_labels
|
184
|
+
end
|
185
|
+
|
186
|
+
def translate_labels(labels)
|
187
|
+
return labels unless @legacy
|
188
|
+
translation = { code: :response_code, grpc: :grpc }
|
189
|
+
labels.map { |k, v| [translation[k], v] }.to_h
|
190
|
+
end
|
191
|
+
end
|
171
192
|
end
|
data/test/plugin/base_test.rb
CHANGED
@@ -2734,8 +2734,15 @@ module BaseTest
|
|
2734
2734
|
end
|
2735
2735
|
|
2736
2736
|
def assert_opencensus_metric_value(metric_name, expected_value, labels = {})
|
2737
|
-
|
2738
|
-
|
2737
|
+
translator = Monitoring::MetricTranslator.new(metric_name, labels)
|
2738
|
+
metric_name = translator.name
|
2739
|
+
labels = translator.translate_labels(labels)
|
2740
|
+
# The next line collapses the labels to assert against the aggregated data,
|
2741
|
+
# which can have some labels removed. Without this, it would test against
|
2742
|
+
# the raw data. The view is more representative of the user experience, even
|
2743
|
+
# though both tests should work because currently we only aggregate away one
|
2744
|
+
# label that never changes during runtime.
|
2745
|
+
labels.select! { |k, _| translator.view_labels.include? k }
|
2739
2746
|
labels = labels.map { |k, v| [k.to_s, v.to_s] }.to_h
|
2740
2747
|
stats_recorder = OpenCensus::Stats.ensure_recorder
|
2741
2748
|
view_data = stats_recorder.view_data metric_name
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-google-cloud
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.24
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stackdriver Agents Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-11-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fluentd
|