fluent-plugin-viaq_data_model 0.0.6 → 0.0.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 129a8f3798e87df17888fe973bc9215a4fe9c42c
4
- data.tar.gz: a22524738b672742e90dd2a626c6126e8b00f97d
3
+ metadata.gz: '05957e3bf287a122835a57a9c8664d689a618d64'
4
+ data.tar.gz: 26d5f3dca6e874e40553f1965d096f0669954e41
5
5
  SHA512:
6
- metadata.gz: 00f295b2a060138b84c041b59785f785cfce8a51f1a6754574c9fb0a1160e85a1ba16757806373f23721781939ad824ae871cfbdd99e6140655b26ac6b0a782c
7
- data.tar.gz: 0abc2a05dda5dc57a29c8982176827a7dc3e654415c13a26af7d8e5ad9ec98228a3666fd9a281a59155509c428a97ba6290e8a9d498fc41dd3485b3cf31a4886
6
+ metadata.gz: c25c5635ac44f09da3b6eacd863b7753a9fa3f1ed460c676d85eb293d80766177f0d7e32edec23598bc54fc980188cca51e0d2a63ff7bbade9c4e92fac06e917
7
+ data.tar.gz: 8e17b6ed4ea137598c1831f1de606fcfe3f679550204547bf5194f70c2e0f04f438f255e826298addcd9e16aa24de22cb2fb474b2b74c67afe644c68ca154c8f
data/README.md CHANGED
@@ -96,6 +96,9 @@ See `filter-viaq_data_model.conf` for an example filter configuration.
96
96
  * This is the name of the top level field to hold the time value. The value
97
97
  is taken from the value of the `src_time_name` field.
98
98
  * `formatter` - a formatter for a well known common data model source
99
+ * `enabled` - default `true` - is this formatter enabled? **NOTE** if the
100
+ formatter is disabled, it will still match, it just won't do anything, and
101
+ it will skip the other formatters.
99
102
  * `type` - one of the well known sources
100
103
  * `sys_journal` - a record read from the systemd journal
101
104
  * `k8s_journal` - a Kubernetes container record read from the systemd
@@ -109,6 +112,9 @@ See `filter-viaq_data_model.conf` for an example filter configuration.
109
112
  `normalizer` - the default is `collector`
110
113
  * `elasticsearch_index_name` - how to construct Elasticsearch index names or
111
114
  prefixes for given tags
115
+ * `enabled` - default `true` - is this item enabled? **NOTE** if the
116
+ item is disabled, it will still match, it just won't do anything, and
117
+ it will skip the other index name items.
112
118
  * `tag` - the Fluentd tag pattern to match for these records
113
119
  * `name_type` - the well known type of index name or prefix to create -
114
120
  `operations_full, project_full, operations_prefix, project_prefix` - The
@@ -231,7 +237,6 @@ Given a configuration like this:
231
237
  tag "**"
232
238
  name_type project_full
233
239
  </elasticsearch_index_name>
234
- elasticsearch_index_field viaq_index_name
235
240
 
236
241
  A record with tag `journal.system` like this:
237
242
 
@@ -261,6 +266,54 @@ will end up looking like this:
261
266
  "viaq_index_name":"project.myproject.000000.2017.07.07"
262
267
  }
263
268
 
269
+
270
+ ### Note about using enabled false
271
+
272
+ Given a configuration like this:
273
+
274
+ <elasticsearch_index_name>
275
+ enabled false
276
+ tag "journal.system** system.var.log** **_default_** **_openshift_** **_openshift-infra_** mux.ops"
277
+ name_type operations_full
278
+ </elasticsearch_index_name>
279
+ <elasticsearch_index_name>
280
+ tag "**"
281
+ name_type project_full
282
+ </elasticsearch_index_name>
283
+
284
+ A record with tag `journal.system` like this:
285
+
286
+ {
287
+ "@timestamp":"2017-07-27T17:27:46.216527+00:00"
288
+ }
289
+
290
+ will end up looking like this:
291
+
292
+ {
293
+ "@timestamp":"2017-07-27T17:27:46.216527+00:00",
294
+ }
295
+
296
+ That is, the tag will match the first `elasticsearch_index_name`, but since it
297
+ is disabled, no index name will be created, and it will _not_ fall through to
298
+ the `**` match below. Using `enabled false` in this case allows you to not
299
+ generate index names for operations indices, but still continue to generate
300
+ index names for project indices.
301
+
302
+ A record with tag `kubernetes.journal.container` like this:
303
+
304
+ {
305
+ "@timestamp":"2017-07-27T17:27:46.216527+00:00",
306
+ "kubernetes":{"namespace_name":"myproject","namespace_id":"000000"}
307
+ }
308
+
309
+ will end up looking like this:
310
+
311
+ {
312
+ "@timestamp":"2017-07-27T17:27:46.216527+00:00",
313
+ "kubernetes":{"namespace_name":"myproject","namespace_id":"000000"}
314
+ "viaq_index_name":"project.myproject.000000.2017.07.07"
315
+ }
316
+
264
317
  ## Installation
265
318
 
266
319
  gem install fluent-plugin-viaq_data_model
@@ -7,7 +7,7 @@ FLUENTD_VERSION = ENV['FLUENTD_VERSION'] || "0.12.0"
7
7
 
8
8
  Gem::Specification.new do |gem|
9
9
  gem.name = "fluent-plugin-viaq_data_model"
10
- gem.version = "0.0.6"
10
+ gem.version = "0.0.7"
11
11
  gem.authors = ["Rich Megginson"]
12
12
  gem.email = ["rmeggins@redhat.com"]
13
13
  gem.description = %q{Filter plugin to ensure data is in the ViaQ common data model}
@@ -99,6 +99,8 @@ module Fluent
99
99
  # come before more general matches
100
100
  desc 'Formatters for common data model, for well known record types'
101
101
  config_section :formatter, param_name: :formatters do
102
+ desc 'is this formatter enabled?'
103
+ config_param :enabled, :bool, default: true
102
104
  desc 'one of the well known formatter types'
103
105
  config_param :type, :enum, list: [:sys_journal, :k8s_journal, :sys_var_log, :k8s_json_file]
104
106
  desc 'process records with this tag pattern'
@@ -127,7 +129,11 @@ module Fluent
127
129
  # come before more general matches e.g. make sure tag "**" is last
128
130
  desc 'Construct Elasticsearch index names or prefixes based on the matching tags pattern and type'
129
131
  config_section :elasticsearch_index_name, param_name: :elasticsearch_index_names do
132
+ desc 'is this index name enabled?'
133
+ config_param :enabled, :bool, default: true
134
+ desc 'create index names for records with this tag pattern'
130
135
  config_param :tag, :string
136
+ desc 'type of index name to create'
131
137
  config_param :name_type, :enum, list: [:operations_full, :project_full, :operations_prefix, :project_prefix]
132
138
  end
133
139
  desc 'Store the Elasticsearch index name in this field'
@@ -219,12 +225,14 @@ module Fluent
219
225
 
220
226
  def process_sys_var_log_fields(tag, time, record, fmtr_type = nil)
221
227
  record['systemd'] = {"t" => {"PID" => record['pid']}, "u" => {"SYSLOG_IDENTIFIER" => record['ident']}}
222
- rectime = record['time'] || time
223
- # handle the case where the time reported in /var/log/messages is for a previous year
224
- if Time.at(rectime) > Time.now
225
- record['time'] = Time.new((rectime.year - 1), rectime.month, rectime.day, rectime.hour, rectime.min, rectime.sec, rectime.utc_offset).utc.to_datetime.rfc3339(6)
226
- else
227
- record['time'] = rectime.utc.to_datetime.rfc3339(6)
228
+ unless record[@dest_time_name] # e.g. already has @timestamp
229
+ rectime = record['time'] || time
230
+ # handle the case where the time reported in /var/log/messages is for a previous year
231
+ if Time.at(rectime) > Time.now
232
+ record['time'] = Time.new((rectime.year - 1), rectime.month, rectime.day, rectime.hour, rectime.min, rectime.sec, rectime.utc_offset).utc.to_datetime.rfc3339(6)
233
+ else
234
+ record['time'] = rectime.utc.to_datetime.rfc3339(6)
235
+ end
228
236
  end
229
237
  if record['host'].eql?('localhost') && @docker_hostname
230
238
  record['hostname'] = @docker_hostname
@@ -241,7 +249,9 @@ module Fluent
241
249
  elsif @docker_hostname
242
250
  record['hostname'] = @docker_hostname
243
251
  end
244
- record['time'] = record['time'].utc.to_datetime.rfc3339(6)
252
+ unless record[@dest_time_name] # e.g. already has @timestamp
253
+ record['time'] = record['time'].utc.to_datetime.rfc3339(6)
254
+ end
245
255
  end
246
256
 
247
257
  def check_for_match_and_format(tag, time, record)
@@ -250,8 +260,7 @@ module Fluent
250
260
  fmtr = @formatter_cache[tag]
251
261
  unless fmtr
252
262
  idx = @formatters.index{|fmtr| fmtr.matcher.match(tag)}
253
- if idx
254
- fmtr = @formatters[idx]
263
+ if idx && (fmtr = @formatters[idx]).enabled
255
264
  @formatter_cache[tag] = fmtr
256
265
  else
257
266
  @formatter_cache_nomatch[tag] = true
@@ -260,7 +269,7 @@ module Fluent
260
269
  end
261
270
  fmtr.fmtr_func.call(tag, time, record, fmtr.fmtr_type)
262
271
 
263
- if record['time'].nil?
272
+ if record[@dest_time_name].nil? && record['time'].nil?
264
273
  record['time'] = Time.at(time).utc.to_datetime.rfc3339(6)
265
274
  end
266
275
 
@@ -275,7 +284,7 @@ module Fluent
275
284
  "ipaddr6" => @ipaddr6,
276
285
  "inputname" => "fluent-plugin-systemd",
277
286
  "name" => "fluentd",
278
- "received_at" => Time.at(time).utc.to_datetime.rfc3339(6),
287
+ "received_at" => Time.now.utc.to_datetime.rfc3339(6),
279
288
  "version" => @pipeline_version
280
289
  }
281
290
  end
@@ -285,6 +294,7 @@ module Fluent
285
294
  @elasticsearch_index_names.each do |ein|
286
295
  if ein.matcher.match(tag)
287
296
  found = true
297
+ return unless ein.enabled
288
298
  if ein.name_type == :operations_full || ein.name_type == :project_full
289
299
  field_name = @elasticsearch_index_name_field
290
300
  need_time = true
@@ -333,7 +343,11 @@ module Fluent
333
343
  end
334
344
  end
335
345
  unless found
336
- log.warn("no match for tag #{tag}")
346
+ if ENV['CDM_DEBUG']
347
+ unless tag == ENV['CDM_DEBUG_IGNORE_TAG']
348
+ log.error("no match for tag #{tag}")
349
+ end
350
+ end
337
351
  end
338
352
  end
339
353
 
@@ -18,6 +18,7 @@
18
18
  #
19
19
  #require_relative '../helper'
20
20
  require 'fluent/test'
21
+ require 'flexmock/test_unit'
21
22
 
22
23
  require 'fluent/plugin/filter_viaq_data_model'
23
24
 
@@ -28,6 +29,9 @@ class ViaqDataModelFilterTest < Test::Unit::TestCase
28
29
  Fluent::Test.setup
29
30
  @time = Fluent::Engine.now
30
31
  log = Fluent::Engine.log
32
+ @timestamp = Time.now
33
+ @timestamp_str = @timestamp.utc.to_datetime.rfc3339(6)
34
+ flexmock(Time).should_receive(:now).and_return(@timestamp)
31
35
  end
32
36
 
33
37
  def create_driver(conf = '')
@@ -368,10 +372,28 @@ class ViaqDataModelFilterTest < Test::Unit::TestCase
368
372
  assert_equal('fluent-plugin-systemd', rec['pipeline_metadata']['normalizer']['inputname'])
369
373
  assert_equal('fluentd', rec['pipeline_metadata']['normalizer']['name'])
370
374
  assert_equal('fversion dversion', rec['pipeline_metadata']['normalizer']['version'])
371
- assert_equal(Time.at(@time).utc.to_datetime.rfc3339(6), rec['pipeline_metadata']['normalizer']['received_at'])
375
+ assert_equal(@timestamp_str, rec['pipeline_metadata']['normalizer']['received_at'])
372
376
  dellist = 'log,stream,MESSAGE,_SOURCE_REALTIME_TIMESTAMP,__REALTIME_TIMESTAMP,CONTAINER_ID,CONTAINER_ID_FULL,CONTAINER_NAME,PRIORITY,_BOOT_ID,_CAP_EFFECTIVE,_CMDLINE,_COMM,_EXE,_GID,_HOSTNAME,_MACHINE_ID,_PID,_SELINUX_CONTEXT,_SYSTEMD_CGROUP,_SYSTEMD_SLICE,_SYSTEMD_UNIT,_TRANSPORT,_UID,_AUDIT_LOGINUID,_AUDIT_SESSION,_SYSTEMD_OWNER_UID,_SYSTEMD_SESSION,_SYSTEMD_USER_UNIT,CODE_FILE,CODE_FUNCTION,CODE_LINE,ERRNO,MESSAGE_ID,RESULT,UNIT,_KERNEL_DEVICE,_KERNEL_SUBSYSTEM,_UDEV_SYSNAME,_UDEV_DEVNODE,_UDEV_DEVLINK,SYSLOG_FACILITY,SYSLOG_IDENTIFIER,SYSLOG_PID'.split(',')
373
377
  dellist.each{|field| assert_nil(rec[field])}
374
378
  end
379
+ test 'disable journal record processing' do
380
+ ENV['IPADDR4'] = '127.0.0.1'
381
+ ENV['IPADDR6'] = '::1'
382
+ ENV['FLUENTD_VERSION'] = 'fversion'
383
+ ENV['DATA_VERSION'] = 'dversion'
384
+ rec = emit_with_tag('journal.system', normal_input, '
385
+ <formatter>
386
+ enabled false
387
+ tag "journal.system**"
388
+ type sys_journal
389
+ remove_keys log,stream,MESSAGE,_SOURCE_REALTIME_TIMESTAMP,__REALTIME_TIMESTAMP,CONTAINER_ID,CONTAINER_ID_FULL,CONTAINER_NAME,PRIORITY,_BOOT_ID,_CAP_EFFECTIVE,_CMDLINE,_COMM,_EXE,_GID,_HOSTNAME,_MACHINE_ID,_PID,_SELINUX_CONTEXT,_SYSTEMD_CGROUP,_SYSTEMD_SLICE,_SYSTEMD_UNIT,_TRANSPORT,_UID,_AUDIT_LOGINUID,_AUDIT_SESSION,_SYSTEMD_OWNER_UID,_SYSTEMD_SESSION,_SYSTEMD_USER_UNIT,CODE_FILE,CODE_FUNCTION,CODE_LINE,ERRNO,MESSAGE_ID,RESULT,UNIT,_KERNEL_DEVICE,_KERNEL_SUBSYSTEM,_UDEV_SYSNAME,_UDEV_DEVNODE,_UDEV_DEVLINK,SYSLOG_FACILITY,SYSLOG_IDENTIFIER,SYSLOG_PID
390
+ </formatter>
391
+ pipeline_type normalizer
392
+ ')
393
+ assert_nil(rec['systemd'])
394
+ notdellist = 'log,stream,MESSAGE,_SOURCE_REALTIME_TIMESTAMP,__REALTIME_TIMESTAMP,CONTAINER_ID,CONTAINER_ID_FULL,CONTAINER_NAME,PRIORITY,_BOOT_ID,_CAP_EFFECTIVE,_CMDLINE,_COMM,_EXE,_GID,_HOSTNAME,_MACHINE_ID,_PID,_SELINUX_CONTEXT,_SYSTEMD_CGROUP,_SYSTEMD_SLICE,_SYSTEMD_UNIT,_TRANSPORT,_UID,_AUDIT_LOGINUID,_AUDIT_SESSION,_SYSTEMD_OWNER_UID,_SYSTEMD_SESSION,_SYSTEMD_USER_UNIT,CODE_FILE,CODE_FUNCTION,CODE_LINE,ERRNO,MESSAGE_ID,RESULT,UNIT,_KERNEL_DEVICE,_KERNEL_SUBSYSTEM,_UDEV_SYSNAME,_UDEV_DEVNODE,_UDEV_DEVLINK,SYSLOG_FACILITY,SYSLOG_IDENTIFIER,SYSLOG_PID'.split(',')
395
+ notdellist.each{|field| assert_equal(normal_input[field], rec[field])}
396
+ end
375
397
  test 'process a journal record, override remove_keys' do
376
398
  ENV['IPADDR4'] = '127.0.0.1'
377
399
  ENV['IPADDR6'] = '::1'
@@ -397,7 +419,7 @@ class ViaqDataModelFilterTest < Test::Unit::TestCase
397
419
  assert_equal('fluent-plugin-systemd', rec['pipeline_metadata']['normalizer']['inputname'])
398
420
  assert_equal('fluentd', rec['pipeline_metadata']['normalizer']['name'])
399
421
  assert_equal('fversion dversion', rec['pipeline_metadata']['normalizer']['version'])
400
- assert_equal(Time.at(@time).utc.to_datetime.rfc3339(6), rec['pipeline_metadata']['normalizer']['received_at'])
422
+ assert_equal(@timestamp_str, rec['pipeline_metadata']['normalizer']['received_at'])
401
423
  keeplist = 'log,stream,MESSAGE,_SOURCE_REALTIME_TIMESTAMP,__REALTIME_TIMESTAMP,CONTAINER_ID,CONTAINER_ID_FULL,_BOOT_ID,_CAP_EFFECTIVE,_CMDLINE,_COMM,_EXE,_GID,_HOSTNAME,_MACHINE_ID,_PID,_SELINUX_CONTEXT,_SYSTEMD_CGROUP,_SYSTEMD_SLICE,_SYSTEMD_UNIT,_TRANSPORT,_UID,_AUDIT_LOGINUID,_AUDIT_SESSION,_SYSTEMD_OWNER_UID,_SYSTEMD_SESSION,_SYSTEMD_USER_UNIT,CODE_FILE,CODE_FUNCTION,CODE_LINE,ERRNO,MESSAGE_ID,RESULT,UNIT,_KERNEL_DEVICE,_KERNEL_SUBSYSTEM,_UDEV_SYSNAME,_UDEV_DEVNODE,_UDEV_DEVLINK,SYSLOG_FACILITY,SYSLOG_IDENTIFIER,SYSLOG_PID'.split(',')
402
424
  keeplist.each{|field| normal_input[field] && assert_not_nil(rec[field])}
403
425
  dellist = 'CONTAINER_NAME,PRIORITY'.split(',')
@@ -490,10 +512,28 @@ class ViaqDataModelFilterTest < Test::Unit::TestCase
490
512
  assert_equal('fluent-plugin-systemd', rec['pipeline_metadata']['normalizer']['inputname'])
491
513
  assert_equal('fluentd', rec['pipeline_metadata']['normalizer']['name'])
492
514
  assert_equal('fversion dversion', rec['pipeline_metadata']['normalizer']['version'])
493
- assert_equal(Time.at(@time).utc.to_datetime.rfc3339(6), rec['pipeline_metadata']['normalizer']['received_at'])
515
+ assert_equal(@timestamp_str, rec['pipeline_metadata']['normalizer']['received_at'])
494
516
  dellist = 'log,stream,MESSAGE,_SOURCE_REALTIME_TIMESTAMP,__REALTIME_TIMESTAMP,CONTAINER_ID,CONTAINER_ID_FULL,CONTAINER_NAME,PRIORITY,_BOOT_ID,_CAP_EFFECTIVE,_CMDLINE,_COMM,_EXE,_GID,_HOSTNAME,_MACHINE_ID,_PID,_SELINUX_CONTEXT,_SYSTEMD_CGROUP,_SYSTEMD_SLICE,_SYSTEMD_UNIT,_TRANSPORT,_UID,_AUDIT_LOGINUID,_AUDIT_SESSION,_SYSTEMD_OWNER_UID,_SYSTEMD_SESSION,_SYSTEMD_USER_UNIT,CODE_FILE,CODE_FUNCTION,CODE_LINE,ERRNO,MESSAGE_ID,RESULT,UNIT,_KERNEL_DEVICE,_KERNEL_SUBSYSTEM,_UDEV_SYSNAME,_UDEV_DEVNODE,_UDEV_DEVLINK,SYSLOG_FACILITY,SYSLOG_IDENTIFIER,SYSLOG_PID'.split(',')
495
517
  dellist.each{|field| assert_nil(rec[field])}
496
518
  end
519
+ test 'disable kubernetes journal record processing' do
520
+ ENV['IPADDR4'] = '127.0.0.1'
521
+ ENV['IPADDR6'] = '::1'
522
+ ENV['FLUENTD_VERSION'] = 'fversion'
523
+ ENV['DATA_VERSION'] = 'dversion'
524
+ rec = emit_with_tag('kubernetes.journal.container', normal_input, '
525
+ <formatter>
526
+ enabled false
527
+ tag "kubernetes.journal.container**"
528
+ type k8s_journal
529
+ remove_keys log,stream,MESSAGE,_SOURCE_REALTIME_TIMESTAMP,__REALTIME_TIMESTAMP,CONTAINER_ID,CONTAINER_ID_FULL,CONTAINER_NAME,PRIORITY,_BOOT_ID,_CAP_EFFECTIVE,_CMDLINE,_COMM,_EXE,_GID,_HOSTNAME,_MACHINE_ID,_PID,_SELINUX_CONTEXT,_SYSTEMD_CGROUP,_SYSTEMD_SLICE,_SYSTEMD_UNIT,_TRANSPORT,_UID,_AUDIT_LOGINUID,_AUDIT_SESSION,_SYSTEMD_OWNER_UID,_SYSTEMD_SESSION,_SYSTEMD_USER_UNIT,CODE_FILE,CODE_FUNCTION,CODE_LINE,ERRNO,MESSAGE_ID,RESULT,UNIT,_KERNEL_DEVICE,_KERNEL_SUBSYSTEM,_UDEV_SYSNAME,_UDEV_DEVNODE,_UDEV_DEVLINK,SYSLOG_FACILITY,SYSLOG_IDENTIFIER,SYSLOG_PID
530
+ </formatter>
531
+ pipeline_type normalizer
532
+ ')
533
+ assert_nil(rec['systemd'])
534
+ notdellist = 'log,stream,MESSAGE,_SOURCE_REALTIME_TIMESTAMP,__REALTIME_TIMESTAMP,CONTAINER_ID,CONTAINER_ID_FULL,CONTAINER_NAME,PRIORITY,_BOOT_ID,_CAP_EFFECTIVE,_CMDLINE,_COMM,_EXE,_GID,_HOSTNAME,_MACHINE_ID,_PID,_SELINUX_CONTEXT,_SYSTEMD_CGROUP,_SYSTEMD_SLICE,_SYSTEMD_UNIT,_TRANSPORT,_UID,_AUDIT_LOGINUID,_AUDIT_SESSION,_SYSTEMD_OWNER_UID,_SYSTEMD_SESSION,_SYSTEMD_USER_UNIT,CODE_FILE,CODE_FUNCTION,CODE_LINE,ERRNO,MESSAGE_ID,RESULT,UNIT,_KERNEL_DEVICE,_KERNEL_SUBSYSTEM,_UDEV_SYSNAME,_UDEV_DEVNODE,_UDEV_DEVLINK,SYSLOG_FACILITY,SYSLOG_IDENTIFIER,SYSLOG_PID'.split(',')
535
+ notdellist.each{|field| assert_equal(normal_input[field], rec[field])}
536
+ end
497
537
  test 'process a kubernetes journal record, given kubernetes.host' do
498
538
  input = normal_input.merge({})
499
539
  input['kubernetes'] = {'host' => 'k8shost'}
@@ -521,7 +561,7 @@ class ViaqDataModelFilterTest < Test::Unit::TestCase
521
561
  assert_equal('fluent-plugin-systemd', rec['pipeline_metadata']['normalizer']['inputname'])
522
562
  assert_equal('fluentd', rec['pipeline_metadata']['normalizer']['name'])
523
563
  assert_equal('fversion dversion', rec['pipeline_metadata']['normalizer']['version'])
524
- assert_equal(Time.at(@time).utc.to_datetime.rfc3339(6), rec['pipeline_metadata']['normalizer']['received_at'])
564
+ assert_equal(@timestamp_str, rec['pipeline_metadata']['normalizer']['received_at'])
525
565
  dellist = 'log,stream,MESSAGE,_SOURCE_REALTIME_TIMESTAMP,__REALTIME_TIMESTAMP,CONTAINER_ID,CONTAINER_ID_FULL,CONTAINER_NAME,PRIORITY,_BOOT_ID,_CAP_EFFECTIVE,_CMDLINE,_COMM,_EXE,_GID,_HOSTNAME,_MACHINE_ID,_PID,_SELINUX_CONTEXT,_SYSTEMD_CGROUP,_SYSTEMD_SLICE,_SYSTEMD_UNIT,_TRANSPORT,_UID,_AUDIT_LOGINUID,_AUDIT_SESSION,_SYSTEMD_OWNER_UID,_SYSTEMD_SESSION,_SYSTEMD_USER_UNIT,CODE_FILE,CODE_FUNCTION,CODE_LINE,ERRNO,MESSAGE_ID,RESULT,UNIT,_KERNEL_DEVICE,_KERNEL_SUBSYSTEM,_UDEV_SYSNAME,_UDEV_DEVNODE,_UDEV_DEVLINK,SYSLOG_FACILITY,SYSLOG_IDENTIFIER,SYSLOG_PID'.split(',')
526
566
  dellist.each{|field| assert_nil(rec[field])}
527
567
  end
@@ -552,7 +592,7 @@ class ViaqDataModelFilterTest < Test::Unit::TestCase
552
592
  assert_equal('fluent-plugin-systemd', rec['pipeline_metadata']['normalizer']['inputname'])
553
593
  assert_equal('fluentd', rec['pipeline_metadata']['normalizer']['name'])
554
594
  assert_equal('fversion dversion', rec['pipeline_metadata']['normalizer']['version'])
555
- assert_equal(Time.at(@time).utc.to_datetime.rfc3339(6), rec['pipeline_metadata']['normalizer']['received_at'])
595
+ assert_equal(@timestamp_str, rec['pipeline_metadata']['normalizer']['received_at'])
556
596
  dellist = 'log,stream,MESSAGE,_SOURCE_REALTIME_TIMESTAMP,__REALTIME_TIMESTAMP,CONTAINER_ID,CONTAINER_ID_FULL,CONTAINER_NAME,PRIORITY,_BOOT_ID,_CAP_EFFECTIVE,_CMDLINE,_COMM,_EXE,_GID,_HOSTNAME,_MACHINE_ID,_PID,_SELINUX_CONTEXT,_SYSTEMD_CGROUP,_SYSTEMD_SLICE,_SYSTEMD_UNIT,_TRANSPORT,_UID,_AUDIT_LOGINUID,_AUDIT_SESSION,_SYSTEMD_OWNER_UID,_SYSTEMD_SESSION,_SYSTEMD_USER_UNIT,CODE_FILE,CODE_FUNCTION,CODE_LINE,ERRNO,MESSAGE_ID,RESULT,UNIT,_KERNEL_DEVICE,_KERNEL_SUBSYSTEM,_UDEV_SYSNAME,_UDEV_DEVNODE,_UDEV_DEVLINK,SYSLOG_FACILITY,SYSLOG_IDENTIFIER,SYSLOG_PID'.split(',')
557
597
  dellist.each{|field| assert_nil(rec[field])}
558
598
  end
@@ -581,7 +621,7 @@ class ViaqDataModelFilterTest < Test::Unit::TestCase
581
621
  assert_equal('fluent-plugin-systemd', rec['pipeline_metadata']['normalizer']['inputname'])
582
622
  assert_equal('fluentd', rec['pipeline_metadata']['normalizer']['name'])
583
623
  assert_equal('fversion dversion', rec['pipeline_metadata']['normalizer']['version'])
584
- assert_equal(Time.at(@time).utc.to_datetime.rfc3339(6), rec['pipeline_metadata']['normalizer']['received_at'])
624
+ assert_equal(@timestamp_str, rec['pipeline_metadata']['normalizer']['received_at'])
585
625
  dellist = 'host,pid,ident'.split(',')
586
626
  dellist.each{|field| assert_nil(rec[field])}
587
627
  end
@@ -612,7 +652,7 @@ class ViaqDataModelFilterTest < Test::Unit::TestCase
612
652
  assert_equal('fluent-plugin-systemd', rec['pipeline_metadata']['normalizer']['inputname'])
613
653
  assert_equal('fluentd', rec['pipeline_metadata']['normalizer']['name'])
614
654
  assert_equal('fversion dversion', rec['pipeline_metadata']['normalizer']['version'])
615
- assert_equal(Time.at(@time).utc.to_datetime.rfc3339(6), rec['pipeline_metadata']['normalizer']['received_at'])
655
+ assert_equal(@timestamp_str, rec['pipeline_metadata']['normalizer']['received_at'])
616
656
  dellist = 'host,pid,ident'.split(',')
617
657
  dellist.each{|field| assert_nil(rec[field])}
618
658
  end
@@ -640,7 +680,7 @@ class ViaqDataModelFilterTest < Test::Unit::TestCase
640
680
  assert_equal('fluent-plugin-systemd', rec['pipeline_metadata']['normalizer']['inputname'])
641
681
  assert_equal('fluentd', rec['pipeline_metadata']['normalizer']['name'])
642
682
  assert_equal('fversion dversion', rec['pipeline_metadata']['normalizer']['version'])
643
- assert_equal(Time.at(@time).utc.to_datetime.rfc3339(6), rec['pipeline_metadata']['normalizer']['received_at'])
683
+ assert_equal(@timestamp_str, rec['pipeline_metadata']['normalizer']['received_at'])
644
684
  dellist = 'host,pid,ident'.split(',')
645
685
  dellist.each{|field| assert_nil(rec[field])}
646
686
  end
@@ -716,6 +756,30 @@ class ViaqDataModelFilterTest < Test::Unit::TestCase
716
756
  ')
717
757
  assert_equal('.operations.2017.07.27', rec['my_index_name'])
718
758
  end
759
+ test 'disable operations index name' do
760
+ rec = emit_with_tag('journal.system', normal_input, '
761
+ <formatter>
762
+ tag "journal.system**"
763
+ type sys_journal
764
+ remove_keys log,stream,MESSAGE,_SOURCE_REALTIME_TIMESTAMP,__REALTIME_TIMESTAMP,CONTAINER_ID,CONTAINER_ID_FULL,CONTAINER_NAME,PRIORITY,_BOOT_ID,_CAP_EFFECTIVE,_CMDLINE,_COMM,_EXE,_GID,_HOSTNAME,_MACHINE_ID,_PID,_SELINUX_CONTEXT,_SYSTEMD_CGROUP,_SYSTEMD_SLICE,_SYSTEMD_UNIT,_TRANSPORT,_UID,_AUDIT_LOGINUID,_AUDIT_SESSION,_SYSTEMD_OWNER_UID,_SYSTEMD_SESSION,_SYSTEMD_USER_UNIT,CODE_FILE,CODE_FUNCTION,CODE_LINE,ERRNO,MESSAGE_ID,RESULT,UNIT,_KERNEL_DEVICE,_KERNEL_SUBSYSTEM,_UDEV_SYSNAME,_UDEV_DEVNODE,_UDEV_DEVLINK,SYSLOG_FACILITY,SYSLOG_IDENTIFIER,SYSLOG_PID
765
+ </formatter>
766
+ <formatter>
767
+ tag "kubernetes.journal.container**"
768
+ type k8s_journal
769
+ remove_keys log,stream,MESSAGE,_SOURCE_REALTIME_TIMESTAMP,__REALTIME_TIMESTAMP,CONTAINER_ID,CONTAINER_ID_FULL,CONTAINER_NAME,PRIORITY,_BOOT_ID,_CAP_EFFECTIVE,_CMDLINE,_COMM,_EXE,_GID,_HOSTNAME,_MACHINE_ID,_PID,_SELINUX_CONTEXT,_SYSTEMD_CGROUP,_SYSTEMD_SLICE,_SYSTEMD_UNIT,_TRANSPORT,_UID,_AUDIT_LOGINUID,_AUDIT_SESSION,_SYSTEMD_OWNER_UID,_SYSTEMD_SESSION,_SYSTEMD_USER_UNIT,CODE_FILE,CODE_FUNCTION,CODE_LINE,ERRNO,MESSAGE_ID,RESULT,UNIT,_KERNEL_DEVICE,_KERNEL_SUBSYSTEM,_UDEV_SYSNAME,_UDEV_DEVNODE,_UDEV_DEVLINK,SYSLOG_FACILITY,SYSLOG_IDENTIFIER,SYSLOG_PID
770
+ </formatter>
771
+ <elasticsearch_index_name>
772
+ enabled false
773
+ tag "journal.system** system.var.log** **_default_** **_openshift_** **_openshift-infra_** mux.ops"
774
+ name_type operations_full
775
+ </elasticsearch_index_name>
776
+ <elasticsearch_index_name>
777
+ tag "**"
778
+ name_type project_full
779
+ </elasticsearch_index_name>
780
+ ')
781
+ assert_nil(rec['viaq_index_name'])
782
+ end
719
783
  test 'log error if missing kubernetes field' do
720
784
  rec = emit_with_tag('kubernetes.journal.container.something', normal_input, '
721
785
  <formatter>
@@ -866,5 +930,53 @@ class ViaqDataModelFilterTest < Test::Unit::TestCase
866
930
  ')
867
931
  assert_equal('project.name.uuid.2017.07.27', rec['my_index_name'])
868
932
  end
933
+ test 'disable kubernetes index names but allow operations index names' do
934
+ input = normal_input.merge({})
935
+ input['kubernetes'] = {'namespace_name'=>'name', 'namespace_id'=>'uuid'}
936
+ rec = emit_with_tag('kubernetes.journal.container.something', input, '
937
+ <formatter>
938
+ tag "journal.system**"
939
+ type sys_journal
940
+ remove_keys log,stream,MESSAGE,_SOURCE_REALTIME_TIMESTAMP,__REALTIME_TIMESTAMP,CONTAINER_ID,CONTAINER_ID_FULL,CONTAINER_NAME,PRIORITY,_BOOT_ID,_CAP_EFFECTIVE,_CMDLINE,_COMM,_EXE,_GID,_HOSTNAME,_MACHINE_ID,_PID,_SELINUX_CONTEXT,_SYSTEMD_CGROUP,_SYSTEMD_SLICE,_SYSTEMD_UNIT,_TRANSPORT,_UID,_AUDIT_LOGINUID,_AUDIT_SESSION,_SYSTEMD_OWNER_UID,_SYSTEMD_SESSION,_SYSTEMD_USER_UNIT,CODE_FILE,CODE_FUNCTION,CODE_LINE,ERRNO,MESSAGE_ID,RESULT,UNIT,_KERNEL_DEVICE,_KERNEL_SUBSYSTEM,_UDEV_SYSNAME,_UDEV_DEVNODE,_UDEV_DEVLINK,SYSLOG_FACILITY,SYSLOG_IDENTIFIER,SYSLOG_PID
941
+ </formatter>
942
+ <formatter>
943
+ tag "kubernetes.journal.container**"
944
+ type k8s_journal
945
+ remove_keys log,stream,MESSAGE,_SOURCE_REALTIME_TIMESTAMP,__REALTIME_TIMESTAMP,CONTAINER_ID,CONTAINER_ID_FULL,CONTAINER_NAME,PRIORITY,_BOOT_ID,_CAP_EFFECTIVE,_CMDLINE,_COMM,_EXE,_GID,_HOSTNAME,_MACHINE_ID,_PID,_SELINUX_CONTEXT,_SYSTEMD_CGROUP,_SYSTEMD_SLICE,_SYSTEMD_UNIT,_TRANSPORT,_UID,_AUDIT_LOGINUID,_AUDIT_SESSION,_SYSTEMD_OWNER_UID,_SYSTEMD_SESSION,_SYSTEMD_USER_UNIT,CODE_FILE,CODE_FUNCTION,CODE_LINE,ERRNO,MESSAGE_ID,RESULT,UNIT,_KERNEL_DEVICE,_KERNEL_SUBSYSTEM,_UDEV_SYSNAME,_UDEV_DEVNODE,_UDEV_DEVLINK,SYSLOG_FACILITY,SYSLOG_IDENTIFIER,SYSLOG_PID
946
+ </formatter>
947
+ <elasticsearch_index_name>
948
+ tag "journal.system** system.var.log** **_default_** **_openshift_** **_openshift-infra_** mux.ops"
949
+ name_type operations_full
950
+ </elasticsearch_index_name>
951
+ <elasticsearch_index_name>
952
+ enabled false
953
+ tag "**"
954
+ name_type project_full
955
+ </elasticsearch_index_name>
956
+ ')
957
+ assert_nil(rec['viaq_index_name'])
958
+ rec = emit_with_tag('journal.system.something', normal_input, '
959
+ <formatter>
960
+ tag "journal.system**"
961
+ type sys_journal
962
+ remove_keys log,stream,MESSAGE,_SOURCE_REALTIME_TIMESTAMP,__REALTIME_TIMESTAMP,CONTAINER_ID,CONTAINER_ID_FULL,CONTAINER_NAME,PRIORITY,_BOOT_ID,_CAP_EFFECTIVE,_CMDLINE,_COMM,_EXE,_GID,_HOSTNAME,_MACHINE_ID,_PID,_SELINUX_CONTEXT,_SYSTEMD_CGROUP,_SYSTEMD_SLICE,_SYSTEMD_UNIT,_TRANSPORT,_UID,_AUDIT_LOGINUID,_AUDIT_SESSION,_SYSTEMD_OWNER_UID,_SYSTEMD_SESSION,_SYSTEMD_USER_UNIT,CODE_FILE,CODE_FUNCTION,CODE_LINE,ERRNO,MESSAGE_ID,RESULT,UNIT,_KERNEL_DEVICE,_KERNEL_SUBSYSTEM,_UDEV_SYSNAME,_UDEV_DEVNODE,_UDEV_DEVLINK,SYSLOG_FACILITY,SYSLOG_IDENTIFIER,SYSLOG_PID
963
+ </formatter>
964
+ <formatter>
965
+ tag "kubernetes.journal.container**"
966
+ type k8s_journal
967
+ remove_keys log,stream,MESSAGE,_SOURCE_REALTIME_TIMESTAMP,__REALTIME_TIMESTAMP,CONTAINER_ID,CONTAINER_ID_FULL,CONTAINER_NAME,PRIORITY,_BOOT_ID,_CAP_EFFECTIVE,_CMDLINE,_COMM,_EXE,_GID,_HOSTNAME,_MACHINE_ID,_PID,_SELINUX_CONTEXT,_SYSTEMD_CGROUP,_SYSTEMD_SLICE,_SYSTEMD_UNIT,_TRANSPORT,_UID,_AUDIT_LOGINUID,_AUDIT_SESSION,_SYSTEMD_OWNER_UID,_SYSTEMD_SESSION,_SYSTEMD_USER_UNIT,CODE_FILE,CODE_FUNCTION,CODE_LINE,ERRNO,MESSAGE_ID,RESULT,UNIT,_KERNEL_DEVICE,_KERNEL_SUBSYSTEM,_UDEV_SYSNAME,_UDEV_DEVNODE,_UDEV_DEVLINK,SYSLOG_FACILITY,SYSLOG_IDENTIFIER,SYSLOG_PID
968
+ </formatter>
969
+ <elasticsearch_index_name>
970
+ tag "journal.system** system.var.log** **_default_** **_openshift_** **_openshift-infra_** mux.ops"
971
+ name_type operations_full
972
+ </elasticsearch_index_name>
973
+ <elasticsearch_index_name>
974
+ enabled false
975
+ tag "**"
976
+ name_type project_full
977
+ </elasticsearch_index_name>
978
+ ')
979
+ assert_equal('.operations.2017.07.27', rec['viaq_index_name'])
980
+ end
869
981
  end
870
982
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-viaq_data_model
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rich Megginson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-29 00:00:00.000000000 Z
11
+ date: 2017-09-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd