fluent-plugin-mqtt-io 0.3.5 → 0.3.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d276b49bf5d719468bf9290820334ee0069c9cd1
4
- data.tar.gz: 3256a5038f1673bd6abbc50fde3c422de8f0705d
3
+ metadata.gz: 6e38c839b0a95cb6cf2cebc4c54d2b6c7b40529c
4
+ data.tar.gz: 2070c495dd6162a84477057b41170b95880b82b7
5
5
  SHA512:
6
- metadata.gz: ae2fd591fb25d976fea2f83d46c08ff97ec96469aa4af041cc71c87a7f0852ec460e6c87b23c1e047c50c8c81305c9159498914f14d5117979c7c7d309c4b971
7
- data.tar.gz: d1def163b352d5a05f0e34bbed980093c32c370e9d51c3494d4578e7050c69cd36c763bc2e2c2bab41309f6309e165fbdaf13596b7cb8572b2698dcc7ce5ecdc
6
+ metadata.gz: 49a35a2dccbe28249c27731ac447a63d7f8462d0005486fa1736dc5f1316fa43ec46f09573ea758120b0d2c7dac8136b44f946e6cb7a3e16c39dac0b568eb5e1
7
+ data.tar.gz: d06614888b953bf57df4ab2110947f1ec77d2a489fe6bfcc27f0b1e3692397c140178d693aa6bb3981f807f9d32a5546cba9a8528a862c4ba8cf207a7d1d872b
data/README.md CHANGED
@@ -76,8 +76,13 @@ The default MQTT topic is "#". Configurable options are the following:
76
76
  - **ca_file**: CA certificate file path
77
77
  - **key_file**: private key file path
78
78
  - **cert_file**: certificate file path
79
- - **recv_time**: Add receive time to message in millisecond (ms) as integer for debug and performance/delay analysis
80
- - **recv_time_key**: An attribute of recv_time
79
+ - **recv_time**: Add receive time to message in millisecond (ms) as integer for debug and performance/delay analysis. only for fluent-plugin-mqtt-io <= 0.2.3
80
+ - **recv_time_key**: An attribute of recv_time. only for fluent-plugin-mqtt-io <= 0.2.3
81
+ - **monitor**: monitor section. only for fluent-plugin-mqtt-io ~> 0.3.0
82
+ - **recv_time**: Add receive time to message in millisecond (ms) as integer for debug and performance/delay analysis (default: false). only for fluent-plugin-mqtt-io ~> 0.3.0
83
+ - **recv_time_key**: An attribute of recv_time (default: "recv_time"). only for fluent-plugin-mqtt-io ~> 0.3.0
84
+ - **time_type**: Type of time format (string (default), unixtime, float) only for fluent-plugin-mqtt-io ~> 0.3.0
85
+ - **time_format**: Time format e.g. %FT%T.%N%:z (refer strftime) only for fluent-plugin-mqtt-io ~> 0.3.0
81
86
  - **initial_interval**: An initial value of retry interval (s) (default 1)
82
87
  - **retry_inc_ratio**: An increase ratio of retry interval per connection failure (default 2 (double)). It may be better to set the value to 1 in a mobile environment for eager reconnection.
83
88
  - **max_retry_interval**: Maximum value of retry interval (default 300) only for fluent-plugin-mqtt-io ~> 0.3.0
@@ -118,13 +123,18 @@ For fluent-plugin-mqtt-io ~> v0.3.0
118
123
 
119
124
  The options are basically the same as Input Plugin except for "format" and "bulk_trans" (only for Input). Additional options for Output Plugin are the following.
120
125
 
121
- - time_key: An attribute name used for timestamp field genarated from fluentd time field. Default is nil (omitted).
126
+ - **time_key**: An attribute name used for timestamp field genarated from fluentd time field. Default is nil (omitted).
122
127
  If this option is omitted, timestamp field is not appended to the output record.
123
- - time_format: Output format of timestamp field. Default is ISO8601. You can specify your own format by using TimeParser.
124
- - topic_rewrite_pattern: Regexp pattern to extract replacement words from received topic or tag name
125
- - topic_rewrite_replacement: Topic name used for the publish using extracted pattern
126
- - send_time: Add send time to message in millisecond (ms) as integer for debug and performance/delay analysis
127
- - send_time_key: An attribute of recv_time
128
+ - **time_format**: Output format of timestamp field. Default is ISO8601. You can specify your own format by using TimeParser.
129
+ - **topic_rewrite_pattern**: Regexp pattern to extract replacement words from received topic or tag name
130
+ - **topic_rewrite_replacement**: Topic name used for the publish using extracted pattern
131
+ - **send_time**: Add send time to message in millisecond (ms) as integer for debug and performance/delay analysis. only for fluent-plugin-mqtt-io <= 0.2.3
132
+ - **send_time_key**: An attribute of send_time. only for fluent-plugin-mqtt-io <= 0.2.3
133
+ - **monitor**: monitor section. only for fluent-plugin-mqtt-io ~> 0.3.0
134
+ - **send_time**: Add send time to message in millisecond (ms) as integer for debug and performance/delay analysis. only for fluent-plugin-mqtt-io ~> 0.3.0
135
+ - **send_time_key**: An attribute of send_time. only for fluent-plugin-mqtt-io ~> 0.3.0
136
+ - **time_type**: Type of time format (string (default), unixtime, float) only for fluent-plugin-mqtt-io ~> 0.3.0
137
+ - **time_format**: Time format e.g. %FT%T.%N%:z (refer strftime) only for fluent-plugin-mqtt-io ~> 0.3.0
128
138
 
129
139
  If you use different source, e.g. the other MQTT broker, log file and so on, there is no need to specifie topic rewriting. Skip the following descriptions.
130
140
 
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "fluent-plugin-mqtt-io"
7
- spec.version = "0.3.5"
7
+ spec.version = "0.3.6"
8
8
  spec.authors = ["Toyokazu Akiyama"]
9
9
  spec.email = ["toyokazu@gmail.com"]
10
10
 
@@ -6,6 +6,7 @@ require 'fluent/plugin/mqtt_proxy'
6
6
  module Fluent::Plugin
7
7
  class MqttInput < Input
8
8
  include MqttProxy
9
+ include Fluent::TimeMixin::Formatter
9
10
 
10
11
  Fluent::Plugin.register_input('mqtt', self)
11
12
 
@@ -25,12 +26,21 @@ module Fluent::Plugin
25
26
  desc 'Record received time into message or not.'
26
27
  config_param :recv_time, :bool, default: false
27
28
  desc 'Specify the attribute name of received time.'
28
- config_param :recv_time_key, :string, default: "recv_time"
29
+ config_param :recv_time_key, :string, default: 'recv_time'
30
+ desc 'Specify time type of recv_time (string, unixtime, float).'
31
+ config_param :time_type, :string, default: 'string'
32
+ desc 'Specify time format of recv_time (e.g. %FT%T.%N%:z).'
33
+ config_param :time_format, :string, default: nil
29
34
  end
30
35
 
31
36
  def configure(conf)
32
37
  super
33
38
  configure_parser(conf)
39
+ if !@monitor.nil?
40
+ @recv_time_formatter = time_formatter_create(
41
+ type: @monitor.time_type.to_sym, format: @monitor.time_format
42
+ )
43
+ end
34
44
  end
35
45
 
36
46
  def configure_parser(conf)
@@ -69,9 +79,9 @@ module Fluent::Plugin
69
79
  end
70
80
 
71
81
  def add_recv_time(record)
72
- if @recv_time
82
+ if !@monitor.nil? && @monitor.recv_time
73
83
  # recv_time is recorded in ms
74
- record.merge({"#{@recv_time_key}": Fluent::EventTime.now})
84
+ record.merge({"#{@monitor.recv_time_key}": @recv_time_formatter.format(Fluent::EventTime.now)})
75
85
  else
76
86
  record
77
87
  end
@@ -83,7 +93,6 @@ module Fluent::Plugin
83
93
  log.debug "Since time_key field is nil, Fluent::EventTime.now is used."
84
94
  time = Fluent::EventTime.now
85
95
  end
86
- log.debug "#{topic}, #{time}, #{add_recv_time(record)}"
87
96
  return [time, add_recv_time(record)]
88
97
  end
89
98
  end
@@ -92,6 +101,7 @@ module Fluent::Plugin
92
101
  begin
93
102
  tag = topic.gsub("/","\.")
94
103
  time, record = parse(message)
104
+ log.debug "MqttInput#emit: #{tag}, #{time}, #{add_recv_time(record)}"
95
105
  if record.is_a?(Array)
96
106
  mes = Fluent::MultiEventStream.new
97
107
  record.each do |single_record|
@@ -6,6 +6,7 @@ require 'fluent/plugin/mqtt_proxy'
6
6
  module Fluent::Plugin
7
7
  class MqttOutput < Output
8
8
  include MqttProxy
9
+ include Fluent::TimeMixin::Formatter
9
10
 
10
11
  Fluent::Plugin.register_output('mqtt', self)
11
12
 
@@ -21,6 +22,10 @@ module Fluent::Plugin
21
22
  config_param :send_time, :bool, default: false
22
23
  desc 'Recording key name of send time for monitoring.'
23
24
  config_param :send_time_key, :string, default: "send_time"
25
+ desc 'Specify time type of send_time (string, unixtime, float).'
26
+ config_param :time_type, :string, default: 'string'
27
+ desc 'Specify time format of send_time (e.g. %FT%T.%N%:z).'
28
+ config_param :time_format, :string, default: nil
24
29
  end
25
30
 
26
31
  # This method is called before starting.
@@ -32,6 +37,11 @@ module Fluent::Plugin
32
37
  formatter_config = conf.elements(name: 'format').first
33
38
  @formatter = formatter_create(conf: formatter_config)
34
39
  @has_buffer_section = conf.elements(name: 'buffer').size > 0
40
+ if !@monitor.nil?
41
+ @send_time_formatter = time_formatter_create(
42
+ type: @monitor.time_type.to_sym, format: @monitor.time_format
43
+ )
44
+ end
35
45
  end
36
46
 
37
47
  def rewrite_tag(tag)
@@ -72,9 +82,9 @@ module Fluent::Plugin
72
82
  end
73
83
 
74
84
  def add_send_time(record)
75
- if @send_time
85
+ if !@monitor.nil? && @monitor.send_time
76
86
  # send_time is recorded in ms
77
- record.merge({"#{@send_time_key}": Fluent::EventTime.now})
87
+ record.merge({"#{@monitor.send_time_key}": @send_time_formatter.format(Fluent::EventTime.now)})
78
88
  else
79
89
  record
80
90
  end
@@ -84,7 +94,7 @@ module Fluent::Plugin
84
94
  if es.class == Fluent::OneEventStream
85
95
  es = inject_values_to_event_stream(tag, es)
86
96
  es.each do |time, record|
87
- log.debug "#{rewrite_tag(tag)}, #{time}, #{add_send_time(record)}"
97
+ log.debug "MqttOutput#publish_event_stream: #{rewrite_tag(tag)}, #{time}, #{add_send_time(record)}"
88
98
  rescue_disconnection do
89
99
  @client.publish(rewrite_tag(tag), @formatter.format(tag, time, add_send_time(record)))
90
100
  end
@@ -93,7 +103,7 @@ module Fluent::Plugin
93
103
  es = inject_values_to_event_stream(tag, es)
94
104
  array = []
95
105
  es.each do |time, record|
96
- log.debug "#{rewrite_tag(tag)}, #{time}, #{add_send_time(record)}"
106
+ log.debug "MqttOutput#publish_event_stream: #{rewrite_tag(tag)}, #{time}, #{add_send_time(record)}"
97
107
  array << add_send_time(record)
98
108
  end
99
109
  rescue_disconnection do
@@ -120,7 +130,7 @@ module Fluent::Plugin
120
130
  return if chunk.empty?
121
131
  chunk.each do |tag, time, record|
122
132
  rescue_disconnection do
123
- log.debug "#{rewrite_tag(rewrite_tag(tag))}, #{time}, #{add_send_time(record)}"
133
+ log.debug "MqttOutput#write: #{rewrite_tag(rewrite_tag(tag))}, #{time}, #{add_send_time(record)}"
124
134
  @client.publish(rewrite_tag(tag), @formatter.format(tag, time, add_send_time(record)))
125
135
  end
126
136
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-mqtt-io
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.5
4
+ version: 0.3.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Toyokazu Akiyama
8
8
  autorequire:
9
9
  bindir: []
10
10
  cert_chain: []
11
- date: 2017-08-25 00:00:00.000000000 Z
11
+ date: 2017-08-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd