fluent-plugin-td-monitoring 0.2.4 → 1.0.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 +4 -4
- data/ChangeLog +4 -0
- data/VERSION +1 -1
- data/lib/fluent/plugin/in_td_monitor_agent.rb +8 -8
- data/lib/fluent/plugin/tdms_ext_fluentd.rb +24 -104
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3617cf72d677582e10dcf7cae85badbf4f9164f8
|
4
|
+
data.tar.gz: b066629763a167e9fe70e814d9647524b18637a2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e392a0df7ad378881964738e721a19a560e1be4a4894e1a85189530854b5574e9206bc3a0d4f850bc850656fa63c0d2fae4419c737d83135195e6ee9510547a0
|
7
|
+
data.tar.gz: cb3b23a3321e85fe24b232f93c816a5c9939820504dc44c3aa1f12144c7d03754312f75f21bedfc170fabf3763ed3b240c41605905577a9cde3012d7c9b30d22
|
data/ChangeLog
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
1.0.0
|
@@ -1,11 +1,13 @@
|
|
1
|
-
|
1
|
+
require 'fluent/plugin/input'
|
2
|
+
|
3
|
+
module Fluent::Plugin
|
2
4
|
require_relative 'tdms_ext_fluentd'
|
3
|
-
require_relative 'out_td_counter'
|
5
|
+
#require_relative 'out_td_counter'
|
4
6
|
|
5
7
|
class TDMonitorAgentInput < Input
|
6
|
-
VERSION = "0.
|
8
|
+
VERSION = "0.3.0"
|
7
9
|
|
8
|
-
Plugin.register_input('td_monitor_agent', self)
|
10
|
+
Fluent::Plugin.register_input('td_monitor_agent', self)
|
9
11
|
|
10
12
|
config_param :apikey, :string, :secret => true
|
11
13
|
config_param :emit_interval, :time, :default => 60
|
@@ -37,7 +39,7 @@ module Fluent
|
|
37
39
|
@num_call = 0
|
38
40
|
@call_interval = interval / 10
|
39
41
|
@log = log
|
40
|
-
super(
|
42
|
+
super(5, repeat)
|
41
43
|
end
|
42
44
|
|
43
45
|
def on_timer
|
@@ -63,8 +65,6 @@ module Fluent
|
|
63
65
|
end
|
64
66
|
|
65
67
|
def start
|
66
|
-
Engine.set_tag_path
|
67
|
-
|
68
68
|
@started_at = Time.now.to_i
|
69
69
|
@monitor_agent = ExMonitorAgentInput.new
|
70
70
|
begin
|
@@ -78,7 +78,7 @@ module Fluent
|
|
78
78
|
@disable_node_info = true
|
79
79
|
log.warn "Failed to get system metrics. Set 'disable_node_info' to true: #{e}"
|
80
80
|
end
|
81
|
-
@counters = collect_counters
|
81
|
+
@counters = [] #collect_counters
|
82
82
|
|
83
83
|
unless register_instance_info
|
84
84
|
log.warn "Can't register instance information at start"
|
@@ -1,6 +1,6 @@
|
|
1
|
-
|
2
|
-
require 'fluent/plugin/in_monitor_agent'
|
1
|
+
require 'fluent/plugin/in_monitor_agent'
|
3
2
|
|
3
|
+
module Fluent::Plugin
|
4
4
|
class MonitorAgentInput
|
5
5
|
def self.collect_children(pe, array=[])
|
6
6
|
array << pe
|
@@ -17,29 +17,36 @@ module Fluent
|
|
17
17
|
|
18
18
|
class ExMonitorAgentInput < MonitorAgentInput
|
19
19
|
TD_MONITOR_INFO = MONITOR_INFO.merge(
|
20
|
-
'buffer_type' => '
|
21
|
-
'buffer_path' => '@buffer.
|
22
|
-
'flush_interval' => '@flush_interval')
|
23
|
-
%W(plugin_id config buffer_queue_length buffer_total_queued_size retry_count).each { |k|
|
20
|
+
'buffer_type' => '@buffer_config[:@type]',
|
21
|
+
'buffer_path' => '@buffer.path',
|
22
|
+
'flush_interval' => '@buffer_config.flush_interval')
|
23
|
+
%W(plugin_id config buffer_queue_length buffer_total_queued_size retry_count buffer_timekeys).each { |k|
|
24
24
|
TD_MONITOR_INFO.delete(k)
|
25
25
|
}
|
26
26
|
|
27
27
|
TD_PLUGIN_METRIC_INFO = {
|
28
|
-
'buffer_queue_length' =>
|
29
|
-
'buffer_queued_size' =>
|
30
|
-
'emit_count' =>
|
31
|
-
'retry_count' =>
|
28
|
+
'buffer_queue_length' => ->(){ throw(:skip) unless instance_variable_defined?(:@buffer) && !@buffer.nil? && @buffer.is_a?(::Fluent::Plugin::Buffer); @buffer.queue.size },
|
29
|
+
'buffer_queued_size' => ->(){ throw(:skip) unless instance_variable_defined?(:@buffer) && !@buffer.nil? && @buffer.is_a?(::Fluent::Plugin::Buffer); @buffer.stage_size + @buffer.queue_size },
|
30
|
+
'emit_count' => ->(){ @emit_count },
|
31
|
+
'retry_count' => ->(){
|
32
|
+
throw(:skip) unless instance_variable_defined?(:@buffer) && !@buffer.nil? && @buffer.is_a?(::Fluent::Plugin::Buffer)
|
33
|
+
begin
|
34
|
+
@retry ? @retry.steps : 0
|
35
|
+
rescue
|
36
|
+
0
|
37
|
+
end
|
38
|
+
},
|
32
39
|
}
|
33
40
|
|
34
41
|
def get_monitor_info(pe, opts = {})
|
35
|
-
obj = {'plugin_id'.freeze => pe.
|
42
|
+
obj = {'plugin_id'.freeze => pe.plugin_id}
|
36
43
|
conf = {
|
37
44
|
'type'.freeze => pe.config['@type'.freeze] || pe.config['type'.freeze],
|
38
|
-
'output_plugin'.freeze => pe.is_a?(::Fluent::Output),
|
45
|
+
'output_plugin'.freeze => pe.is_a?(::Fluent::Plugin::Output),
|
39
46
|
'plugin_category'.freeze => plugin_category(pe)
|
40
47
|
}
|
41
48
|
|
42
|
-
if pe.is_a?(
|
49
|
+
if pe.is_a?(::Fluent::Plugin::Output) && pe.instance_variable_get(:@buffering)
|
43
50
|
TD_MONITOR_INFO.each_pair { |key, code|
|
44
51
|
begin
|
45
52
|
v = pe.instance_eval(code)
|
@@ -60,7 +67,7 @@ module Fluent
|
|
60
67
|
metrics = {}
|
61
68
|
TD_PLUGIN_METRIC_INFO.each_pair { |key, code|
|
62
69
|
begin
|
63
|
-
v = pe.
|
70
|
+
v = pe.instance_exec(&code)
|
64
71
|
unless v.nil?
|
65
72
|
metrics[key] = {'value' => v}
|
66
73
|
end
|
@@ -69,9 +76,9 @@ module Fluent
|
|
69
76
|
}
|
70
77
|
|
71
78
|
# set each configruration limit
|
72
|
-
|
73
|
-
metrics['buffer_queue_length']['max'] =
|
74
|
-
metrics['buffer_queued_size']['max'] =
|
79
|
+
total_size = pe.instance_eval('@buffer.total_limit_size')
|
80
|
+
metrics['buffer_queue_length']['max'] = total_size / pe.instance_eval('@buffer.chunk_limit_size')
|
81
|
+
metrics['buffer_queued_size']['max'] = total_size
|
75
82
|
|
76
83
|
metrics
|
77
84
|
end
|
@@ -86,91 +93,4 @@ module Fluent
|
|
86
93
|
@id ? @id : @tag_path ? @tag_path : "object:#{object_id.to_s(16)}"
|
87
94
|
end
|
88
95
|
end
|
89
|
-
|
90
|
-
if defined?(::Fluent::EventRouter) # for v0.12 or later
|
91
|
-
class EngineClass
|
92
|
-
def set_tag_path(prefix = '')
|
93
|
-
rules = @root_agent.event_router.instance_variable_get(:@match_rules)
|
94
|
-
set_tag_path_in_rules(prefix, rules)
|
95
|
-
|
96
|
-
labels = @root_agent.labels
|
97
|
-
labels.each { |n, label|
|
98
|
-
rules = label.event_router.instance_variable_get(:@match_rules)
|
99
|
-
set_tag_path_in_rules("#{prefix}/#{n}", rules)
|
100
|
-
}
|
101
|
-
end
|
102
|
-
|
103
|
-
def set_tag_path_in_rules(prefix, rules)
|
104
|
-
rules.each { |rule|
|
105
|
-
tag_path = "#{prefix}/#{rule.pattern_str}"
|
106
|
-
collector = rule.collector
|
107
|
-
if collector.is_a?(Output)
|
108
|
-
collector.tag_path = tag_path
|
109
|
-
if collector.is_a?(MultiOutput) && collector.respond_to?(:outputs)
|
110
|
-
set_tag_path_to_multi_output(tag_path, collector)
|
111
|
-
end
|
112
|
-
if collector.respond_to?(:output) && collector.output.is_a?(Output)
|
113
|
-
set_tag_path_to_wrap_output(tag_path, collector)
|
114
|
-
end
|
115
|
-
end
|
116
|
-
}
|
117
|
-
end
|
118
|
-
end
|
119
|
-
else # for v0.10
|
120
|
-
class Match
|
121
|
-
alias orig_init initialize
|
122
|
-
attr_reader :pattern_str
|
123
|
-
|
124
|
-
def initialize(pattern_str, output)
|
125
|
-
@pattern_str = pattern_str.dup
|
126
|
-
orig_init(pattern_str, output)
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
|
-
class EngineClass
|
131
|
-
def set_tag_path(prefix = '')
|
132
|
-
@matches.each { |m|
|
133
|
-
if m.is_a?(Match)
|
134
|
-
tag_path = "#{prefix}/#{m.pattern_str}"
|
135
|
-
m.output.tag_path = tag_path
|
136
|
-
if m.output.is_a?(MultiOutput) && m.output.respond_to?(:outputs)
|
137
|
-
set_tag_path_to_multi_output(tag_path, m.output)
|
138
|
-
end
|
139
|
-
if m.output.respond_to?(:output) && m.output.output.is_a?(Output)
|
140
|
-
set_tag_path_to_wrap_output(tag_path, m.output)
|
141
|
-
end
|
142
|
-
end
|
143
|
-
}
|
144
|
-
end
|
145
|
-
end
|
146
|
-
end
|
147
|
-
|
148
|
-
# Helper methods for tag setting
|
149
|
-
class EngineClass
|
150
|
-
def set_tag_path_to_multi_output(prefix, multi_output)
|
151
|
-
new_prefix = "#{prefix}/#{get_type_from_klass(multi_output.class)}"
|
152
|
-
multi_output.outputs.each_with_index { |output, index|
|
153
|
-
set_tag_path_to_output("#{new_prefix}.#{index}", output)
|
154
|
-
}
|
155
|
-
end
|
156
|
-
|
157
|
-
def set_tag_path_to_wrap_output(prefix, wrap_output)
|
158
|
-
new_prefix = "#{prefix}/#{get_type_from_klass(wrap_output.class)}"
|
159
|
-
set_tag_path_to_output(new_prefix, wrap_output.output)
|
160
|
-
end
|
161
|
-
|
162
|
-
def set_tag_path_to_output(prefix, output)
|
163
|
-
if output.is_a?(MultiOutput)
|
164
|
-
set_tag_path_to_multi_output(prefix, output)
|
165
|
-
else
|
166
|
-
output.tag_path = "#{prefix}/#{get_type_from_klass(output.class)}"
|
167
|
-
end
|
168
|
-
end
|
169
|
-
|
170
|
-
def get_type_from_klass(klass)
|
171
|
-
Plugin.instance_variable_get(:@output).each { |name, output|
|
172
|
-
return name if output == klass
|
173
|
-
}
|
174
|
-
end
|
175
|
-
end
|
176
96
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-td-monitoring
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Masahiro Nakagawa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-04-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fluentd
|