fluent-plugin-google-cloud 0.6.6 → 0.6.7.pre.1

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.
@@ -14,7 +14,9 @@
14
14
 
15
15
  # Constants used by unit tests for Google Cloud Logging plugin.
16
16
  module Constants
17
- include Fluent::GoogleCloudOutput::Constants
17
+ include Fluent::GoogleCloudOutput::ServiceConstants
18
+ include Fluent::GoogleCloudOutput::ConfigConstants
19
+ include Fluent::GoogleCloudOutput::InternalConstants
18
20
 
19
21
  # Generic attributes.
20
22
  HOSTNAME = Socket.gethostname
@@ -26,6 +28,10 @@ module Constants
26
28
  FULLY_QUALIFIED_ZONE = 'projects/' + PROJECT_ID + '/zones/' + ZONE
27
29
  VM_ID = '9876543210'
28
30
 
31
+ # Attributes used for the Metadata Agent resources.
32
+ METADATA_ZONE = 'us-central1-c'
33
+ METADATA_VM_ID = '0123456789'
34
+
29
35
  # Attributes used for custom (overridden) configs.
30
36
  CUSTOM_PROJECT_ID = 'test-custom-project-id'
31
37
  CUSTOM_ZONE = 'us-custom-central1-b'
@@ -51,6 +57,16 @@ module Constants
51
57
  MANAGED_VM_BACKEND_NAME = 'default'
52
58
  MANAGED_VM_BACKEND_VERSION = 'guestbook2.0'
53
59
 
60
+ # Docker Container labels.
61
+ DOCKER_CONTAINER_ID = '0d0f03ff8d3c42688692536d1af77a28cd135c0a5c531f25a31'
62
+ DOCKER_CONTAINER_NAME = 'happy_hippo'
63
+ DOCKER_CONTAINER_STREAM_STDOUT = 'stdout'
64
+ DOCKER_CONTAINER_STREAM_STDERR = 'stderr'
65
+ # Timestamp for 1234567890 seconds and 987654321 nanoseconds since epoch.
66
+ DOCKER_CONTAINER_TIMESTAMP = '2009-02-13T23:31:30.987654321Z'
67
+ DOCKER_CONTAINER_SECONDS_EPOCH = 1_234_567_890
68
+ DOCKER_CONTAINER_NANOS = 987_654_321
69
+
54
70
  # Container Engine / Kubernetes specific labels.
55
71
  CONTAINER_CLUSTER_NAME = 'cluster-1'
56
72
  CONTAINER_NAMESPACE_ID = '898268c8-4a36-11e5-9d81-42010af0194c'
@@ -120,6 +136,10 @@ module Constants
120
136
  APPLICATION_DEFAULT_CONFIG = %(
121
137
  )
122
138
 
139
+ DETECT_JSON_CONFIG = %(
140
+ detect_json true
141
+ )
142
+
123
143
  # rubocop:disable Metrics/LineLength
124
144
  PRIVATE_KEY_CONFIG = %(
125
145
  auth_method private_key
@@ -145,6 +165,20 @@ module Constants
145
165
  monitoring_type prometheus
146
166
  )
147
167
 
168
+ ENABLE_METADATA_AGENT_CONFIG = %(
169
+ enable_metadata_agent true
170
+ )
171
+
172
+ DISABLE_METADATA_AGENT_CONFIG = %(
173
+ enable_metadata_agent false
174
+ )
175
+
176
+ DOCKER_CONTAINER_CONFIG = %(
177
+ enable_metadata_agent true
178
+ label_map { "source": "#{DOCKER_CONSTANTS[:service]}/stream" }
179
+ detect_json true
180
+ )
181
+
148
182
  CUSTOM_METADATA_CONFIG = %(
149
183
  project_id #{CUSTOM_PROJECT_ID}
150
184
  zone #{CUSTOM_ZONE}
@@ -201,6 +235,8 @@ module Constants
201
235
  )
202
236
 
203
237
  # Service configurations for various services.
238
+
239
+ # GCE.
204
240
  COMPUTE_PARAMS = {
205
241
  resource: {
206
242
  type: COMPUTE_CONSTANTS[:resource_type],
@@ -215,7 +251,16 @@ module Constants
215
251
  "#{COMPUTE_CONSTANTS[:service]}/resource_name" => HOSTNAME
216
252
  }
217
253
  }
254
+ COMPUTE_PARAMS_WITH_METADATA_VM_ID_AND_ZONE = COMPUTE_PARAMS.merge(
255
+ resource: COMPUTE_PARAMS[:resource].merge(
256
+ labels: {
257
+ 'instance_id' => METADATA_VM_ID,
258
+ 'zone' => METADATA_ZONE
259
+ }
260
+ )
261
+ )
218
262
 
263
+ # GAE.
219
264
  VMENGINE_PARAMS = {
220
265
  resource: {
221
266
  type: APPENGINE_CONSTANTS[:resource_type],
@@ -233,12 +278,13 @@ module Constants
233
278
  }
234
279
  }
235
280
 
281
+ # GKE Container.
236
282
  CONTAINER_TAG = "kubernetes.#{CONTAINER_POD_NAME}_" \
237
283
  "#{CONTAINER_NAMESPACE_NAME}_#{CONTAINER_CONTAINER_NAME}"
238
284
 
239
285
  CONTAINER_FROM_METADATA_PARAMS = {
240
286
  resource: {
241
- type: CONTAINER_CONSTANTS[:resource_type],
287
+ type: GKE_CONSTANTS[:resource_type],
242
288
  labels: {
243
289
  'cluster_name' => CONTAINER_CLUSTER_NAME,
244
290
  'namespace_id' => CONTAINER_NAMESPACE_ID,
@@ -251,10 +297,10 @@ module Constants
251
297
  log_name: CONTAINER_CONTAINER_NAME,
252
298
  project_id: PROJECT_ID,
253
299
  labels: {
254
- "#{CONTAINER_CONSTANTS[:service]}/namespace_name" =>
300
+ "#{GKE_CONSTANTS[:service]}/namespace_name" =>
255
301
  CONTAINER_NAMESPACE_NAME,
256
- "#{CONTAINER_CONSTANTS[:service]}/pod_name" => CONTAINER_POD_NAME,
257
- "#{CONTAINER_CONSTANTS[:service]}/stream" => CONTAINER_STREAM,
302
+ "#{GKE_CONSTANTS[:service]}/pod_name" => CONTAINER_POD_NAME,
303
+ "#{GKE_CONSTANTS[:service]}/stream" => CONTAINER_STREAM,
258
304
  "label/#{CONTAINER_LABEL_KEY}" => CONTAINER_LABEL_VALUE,
259
305
  "#{COMPUTE_CONSTANTS[:service]}/resource_name" => HOSTNAME
260
306
  }
@@ -264,7 +310,7 @@ module Constants
264
310
  # namespace and pod names.
265
311
  CONTAINER_FROM_TAG_PARAMS = {
266
312
  resource: {
267
- type: CONTAINER_CONSTANTS[:resource_type],
313
+ type: GKE_CONSTANTS[:resource_type],
268
314
  labels: {
269
315
  'cluster_name' => CONTAINER_CLUSTER_NAME,
270
316
  'namespace_id' => CONTAINER_NAMESPACE_NAME,
@@ -277,14 +323,58 @@ module Constants
277
323
  log_name: CONTAINER_CONTAINER_NAME,
278
324
  project_id: PROJECT_ID,
279
325
  labels: {
280
- "#{CONTAINER_CONSTANTS[:service]}/namespace_name" =>
326
+ "#{GKE_CONSTANTS[:service]}/namespace_name" =>
281
327
  CONTAINER_NAMESPACE_NAME,
282
- "#{CONTAINER_CONSTANTS[:service]}/pod_name" => CONTAINER_POD_NAME,
283
- "#{CONTAINER_CONSTANTS[:service]}/stream" => CONTAINER_STREAM,
328
+ "#{GKE_CONSTANTS[:service]}/pod_name" => CONTAINER_POD_NAME,
329
+ "#{GKE_CONSTANTS[:service]}/stream" => CONTAINER_STREAM,
284
330
  "#{COMPUTE_CONSTANTS[:service]}/resource_name" => HOSTNAME
285
331
  }
286
332
  }
287
333
 
334
+ CONTAINER_FROM_APPLICATION_PARAMS = {
335
+ resource: {
336
+ type: GKE_CONSTANTS[:resource_type],
337
+ labels: {
338
+ 'cluster_name' => CONTAINER_CLUSTER_NAME,
339
+ 'namespace_id' => CONTAINER_NAMESPACE_ID,
340
+ 'instance_id' => VM_ID,
341
+ 'pod_id' => CONTAINER_POD_ID,
342
+ 'container_name' => CONTAINER_CONTAINER_NAME,
343
+ 'zone' => ZONE
344
+ }
345
+ },
346
+ log_name: 'redis',
347
+ project_id: PROJECT_ID,
348
+ labels: {
349
+ "#{COMPUTE_CONSTANTS[:service]}/resource_name" => HOSTNAME
350
+ }
351
+ }
352
+
353
+ # Docker Container.
354
+ DOCKER_CONTAINER_PARAMS = {
355
+ resource: {
356
+ type: DOCKER_CONSTANTS[:resource_type],
357
+ labels: {
358
+ 'container_id' => DOCKER_CONTAINER_ID,
359
+ 'location' => ZONE
360
+ }
361
+ },
362
+ log_name: 'test',
363
+ project_id: PROJECT_ID,
364
+ labels: {
365
+ "#{DOCKER_CONSTANTS[:service]}/stream" => DOCKER_CONTAINER_STREAM_STDOUT
366
+ }
367
+ }
368
+ DOCKER_CONTAINER_PARAMS_WITH_STREAM_STDERR = DOCKER_CONTAINER_PARAMS.merge(
369
+ labels: DOCKER_CONTAINER_PARAMS[:labels].merge(
370
+ "#{DOCKER_CONSTANTS[:service]}/stream" => DOCKER_CONTAINER_STREAM_STDERR
371
+ )
372
+ )
373
+ DOCKER_CONTAINER_PARAMS_WITH_NO_STREAM = DOCKER_CONTAINER_PARAMS.merge(
374
+ labels: {}
375
+ )
376
+
377
+ # Cloud Functions.
288
378
  CLOUDFUNCTIONS_TAG = "kubernetes.#{CLOUDFUNCTIONS_POD_NAME}_" \
289
379
  "#{CLOUDFUNCTIONS_NAMESPACE_NAME}_" \
290
380
  "#{CLOUDFUNCTIONS_CONTAINER_NAME}"
@@ -301,8 +391,8 @@ module Constants
301
391
  project_id: PROJECT_ID,
302
392
  labels: {
303
393
  'execution_id' => CLOUDFUNCTIONS_EXECUTION_ID,
304
- "#{CONTAINER_CONSTANTS[:service]}/instance_id" => VM_ID,
305
- "#{CONTAINER_CONSTANTS[:service]}/cluster_name" =>
394
+ "#{GKE_CONSTANTS[:service]}/instance_id" => VM_ID,
395
+ "#{GKE_CONSTANTS[:service]}/cluster_name" =>
306
396
  CLOUDFUNCTIONS_CLUSTER_NAME,
307
397
  "#{COMPUTE_CONSTANTS[:service]}/resource_id" => VM_ID,
308
398
  "#{COMPUTE_CONSTANTS[:service]}/resource_name" => HOSTNAME,
@@ -321,8 +411,8 @@ module Constants
321
411
  log_name: 'cloud-functions',
322
412
  project_id: PROJECT_ID,
323
413
  labels: {
324
- "#{CONTAINER_CONSTANTS[:service]}/instance_id" => VM_ID,
325
- "#{CONTAINER_CONSTANTS[:service]}/cluster_name" =>
414
+ "#{GKE_CONSTANTS[:service]}/instance_id" => VM_ID,
415
+ "#{GKE_CONSTANTS[:service]}/cluster_name" =>
326
416
  CLOUDFUNCTIONS_CLUSTER_NAME,
327
417
  "#{COMPUTE_CONSTANTS[:service]}/resource_id" => VM_ID,
328
418
  "#{COMPUTE_CONSTANTS[:service]}/resource_name" => HOSTNAME,
@@ -330,6 +420,7 @@ module Constants
330
420
  }
331
421
  }
332
422
 
423
+ # Cloud Dataflow.
333
424
  DATAFLOW_PARAMS = {
334
425
  resource: {
335
426
  type: DATAFLOW_CONSTANTS[:resource_type],
@@ -349,6 +440,7 @@ module Constants
349
440
  }
350
441
  }
351
442
 
443
+ # Cloud Dataproc.
352
444
  DATAPROC_PARAMS = {
353
445
  resource: {
354
446
  type: DATAPROC_CONSTANTS[:resource_type],
@@ -367,6 +459,7 @@ module Constants
367
459
  }
368
460
  }
369
461
 
462
+ # Cloud ML.
370
463
  ML_PARAMS = {
371
464
  resource: {
372
465
  type: ML_CONSTANTS[:resource_type],
@@ -477,4 +570,50 @@ module Constants
477
570
  '' => '_'
478
571
  }
479
572
  ALL_TAGS = VALID_TAGS.merge(INVALID_TAGS)
573
+
574
+ # Stub value for Monitored resources from Metadata Agent.
575
+ # Map from the local_resource_id to the retrieved monitored resource.
576
+ MONITORED_RESOURCE_STUBS = {
577
+ # Implicit GCE instance.
578
+ IMPLICIT_LOCAL_RESOURCE_ID =>
579
+ {
580
+ 'type' => COMPUTE_CONSTANTS[:resource_type],
581
+ 'labels' => {
582
+ 'zone' => METADATA_ZONE,
583
+ 'instance_id' => METADATA_VM_ID
584
+ }
585
+ }.to_json,
586
+ # Docker container stderr / stdout logs.
587
+ "container.#{DOCKER_CONTAINER_ID}" =>
588
+ {
589
+ 'type' => DOCKER_CONSTANTS[:resource_type],
590
+ 'labels' => {
591
+ 'location' => ZONE,
592
+ 'container_id' => DOCKER_CONTAINER_ID
593
+ }
594
+ }.to_json,
595
+ # Docker container application logs.
596
+ "containerName.#{DOCKER_CONTAINER_NAME}" =>
597
+ {
598
+ 'type' => DOCKER_CONSTANTS[:resource_type],
599
+ 'labels' => {
600
+ 'location' => ZONE,
601
+ 'container_id' => DOCKER_CONTAINER_ID
602
+ }
603
+ }.to_json,
604
+ # GKE container logs.
605
+ "gke_containerName.#{CONTAINER_NAMESPACE_ID}.#{CONTAINER_POD_NAME}." \
606
+ "#{CONTAINER_CONTAINER_NAME}" =>
607
+ {
608
+ 'type' => GKE_CONSTANTS[:resource_type],
609
+ 'labels' => {
610
+ 'cluster_name' => CONTAINER_CLUSTER_NAME,
611
+ 'container_name' => CONTAINER_CONTAINER_NAME,
612
+ 'instance_id' => VM_ID,
613
+ 'namespace_id' => CONTAINER_NAMESPACE_ID,
614
+ 'pod_id' => CONTAINER_POD_ID,
615
+ 'zone' => ZONE
616
+ }
617
+ }.to_json
618
+ }
480
619
  end
@@ -185,6 +185,7 @@ class GoogleCloudOutputTest < Test::Unit::TestCase
185
185
 
186
186
  # synonyms for existing log levels
187
187
  assert_equal('ERROR', test_obj.parse_severity('ERR'))
188
+ assert_equal('ERROR', test_obj.parse_severity('SEVERE'))
188
189
  assert_equal('WARNING', test_obj.parse_severity('WARN'))
189
190
  assert_equal('CRITICAL', test_obj.parse_severity('FATAL'))
190
191
  assert_equal('DEBUG', test_obj.parse_severity('TRACE'))
@@ -192,6 +193,7 @@ class GoogleCloudOutputTest < Test::Unit::TestCase
192
193
  assert_equal('DEBUG', test_obj.parse_severity('FINE'))
193
194
  assert_equal('DEBUG', test_obj.parse_severity('FINER'))
194
195
  assert_equal('DEBUG', test_obj.parse_severity('FINEST'))
196
+ assert_equal('DEBUG', test_obj.parse_severity('CONFIG'))
195
197
 
196
198
  # single letters.
197
199
  assert_equal('DEBUG', test_obj.parse_severity('D'))
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-google-cloud
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.6
4
+ version: 0.6.7.pre.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Todd Derr
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-08-29 00:00:00.000000000 Z
12
+ date: 2017-09-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fluentd
@@ -249,9 +249,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
249
249
  version: '2.0'
250
250
  required_rubygems_version: !ruby/object:Gem::Requirement
251
251
  requirements:
252
- - - ">="
252
+ - - ">"
253
253
  - !ruby/object:Gem::Version
254
- version: '0'
254
+ version: 1.3.1
255
255
  requirements: []
256
256
  rubyforge_project:
257
257
  rubygems_version: 2.4.8