logstash-input-remote_proc 0.1.8 → 0.1.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/logstash/inputs/remote_proc.rb +54 -34
- data/logstash-input-remote_proc.gemspec +1 -1
- 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: 5fca24e5d1158779effdece8b7c0cafcf52f7150
|
4
|
+
data.tar.gz: 6c7ca10796ad5786a6c7c53407775dae0b06754f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 98e493503bbbf1a5fefc5cc42cc792f0db95f8a18c20e4cf0c77755481a2a0150871908ef692be2685a4775073709999f327a1d5b8b7de59bf1bb37e0f523c97
|
7
|
+
data.tar.gz: 2816b99edcc52e08a151197ef2f5c81dabf7ae1f5b8bc588e44554392a6597176d390954e54d57919ee947057d90e12acd70051833c22cf081052cdf40712a62
|
@@ -134,52 +134,71 @@ module LogStash
|
|
134
134
|
# we can abort the loop if stop? becomes true
|
135
135
|
until stop?
|
136
136
|
@ssh_sessions.each do |ssh|
|
137
|
-
ssh.
|
138
|
-
|
139
|
-
result_data = String.new('')
|
140
|
-
error_data = String.new('')
|
137
|
+
ssh.properties['_commands'].each do |method, command|
|
138
|
+
ssh.open_channel do |chan|
|
141
139
|
chan.exec(command) do |ch, success|
|
142
|
-
|
140
|
+
ch[:result_data] = String.new('')
|
141
|
+
ch[:result_error] = String.new('')
|
142
|
+
ch[:result_host] = ssh.properties['host']
|
143
|
+
ch[:result_port] = ssh.properties['port']
|
144
|
+
unless success
|
145
|
+
@logger.warn('CHANNEL_EXEC_UNSUCCESS',
|
146
|
+
command: command,
|
147
|
+
host: ch[:result_host],
|
148
|
+
port: ch[:result_port])
|
149
|
+
next
|
150
|
+
end
|
143
151
|
# "on_data" called when the process writes to stdout
|
144
|
-
ch.on_data { |_c, data| result_data << data }
|
152
|
+
ch.on_data { |_c, data| ch[:result_data] << data }
|
153
|
+
ch.on_process do |_c|
|
154
|
+
unless ch[:result_error].empty?
|
155
|
+
ch[:result_error].chomp!
|
156
|
+
ch[:result_error] = ch[:result_error].force_encoding('UTF-8')
|
157
|
+
@logger.warn(ch[:result_error])
|
158
|
+
next
|
159
|
+
end
|
160
|
+
next if ch[:result_data].empty?
|
161
|
+
result = send("proc_#{method}",
|
162
|
+
ch[:result_data].force_encoding('UTF-8'))
|
163
|
+
next if result.empty?
|
164
|
+
event = LogStash::Event.new(
|
165
|
+
method => result,
|
166
|
+
host: @host,
|
167
|
+
type: @type || "system-#{method}",
|
168
|
+
metric_name: "system-#{method}",
|
169
|
+
remote_host: ch[:result_host],
|
170
|
+
remote_port: ch[:result_port],
|
171
|
+
command: command,
|
172
|
+
message: ch[:result_data]
|
173
|
+
)
|
174
|
+
decorate(event)
|
175
|
+
queue << event
|
176
|
+
end
|
177
|
+
ch.on_open_failed do |c, code, desc|
|
178
|
+
@logger.warn('CHANNEL_OPEN_FAILED',
|
179
|
+
host: ch[:result_host],
|
180
|
+
channel: c,
|
181
|
+
code: code,
|
182
|
+
description: desc)
|
183
|
+
end
|
145
184
|
# "on_extended_data", called when the process writes to stderr
|
146
|
-
ch.on_extended_data
|
185
|
+
ch.on_extended_data do |_ch, _type, data|
|
186
|
+
ch[:result_error] << data
|
187
|
+
end
|
147
188
|
ch.on_close(&:close)
|
148
189
|
end
|
149
190
|
chan.wait
|
150
|
-
unless error_data.empty?
|
151
|
-
error_data.chomp!
|
152
|
-
error_data = error_data.force_encoding('UTF-8')
|
153
|
-
@logger.warn(error_data)
|
154
|
-
next
|
155
|
-
end
|
156
|
-
next if result_data.empty?
|
157
|
-
result = send("proc_#{method}",
|
158
|
-
result_data.force_encoding('UTF-8'))
|
159
|
-
next if result.empty?
|
160
|
-
event = LogStash::Event.new(
|
161
|
-
method => result,
|
162
|
-
host: @host,
|
163
|
-
type: @type || "system-#{method}",
|
164
|
-
metric_name: "system-#{method}",
|
165
|
-
remote_host: chan.connection.options[:properties]['host'],
|
166
|
-
remote_port: chan.connection.options[:properties]['port'],
|
167
|
-
command: command,
|
168
|
-
message: result_data
|
169
|
-
)
|
170
|
-
decorate(event)
|
171
|
-
queue << event
|
172
191
|
end
|
173
192
|
end
|
174
|
-
ssh.loop
|
175
193
|
end # @ssh_sessions block
|
194
|
+
@ssh_sessions.each(&:loop)
|
176
195
|
Stud.stoppable_sleep(@interval) { stop? }
|
177
196
|
end # until loop
|
178
197
|
end # def run
|
179
198
|
|
180
199
|
def stop
|
181
|
-
@ssh_sessions.
|
182
|
-
@ssh_gateways.
|
200
|
+
@ssh_sessions.each(&:close)
|
201
|
+
@ssh_gateways.each(&:shutdown!) unless @ssh_gateways.empty?
|
183
202
|
end
|
184
203
|
|
185
204
|
private
|
@@ -187,7 +206,7 @@ module LogStash
|
|
187
206
|
# Return only valide property keys.
|
188
207
|
def prepare_servers!(server)
|
189
208
|
server.select! { |k| SERVER_OPTIONS.include?(k) }
|
190
|
-
server.merge!(SERVER_OPTIONS) { |
|
209
|
+
server.merge!(SERVER_OPTIONS) { |_key, old, _new| old }
|
191
210
|
cmds = if (@proc_list - ['_all']).empty?
|
192
211
|
COMMANDS.dup
|
193
212
|
else
|
@@ -197,7 +216,8 @@ module LogStash
|
|
197
216
|
server['_commands'] = cmds.each do |k, v|
|
198
217
|
cmds[k] = v % { system_reader: server['system_reader'],
|
199
218
|
proc_prefix_path: server['proc_prefix_path'] }
|
200
|
-
end
|
219
|
+
end
|
220
|
+
server['_commands'].freeze
|
201
221
|
end
|
202
222
|
|
203
223
|
# Prepare all server configuration
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'logstash-input-remote_proc'
|
3
|
-
s.version = '0.1.
|
3
|
+
s.version = '0.1.9'
|
4
4
|
s.licenses = ['Apache-2.0']
|
5
5
|
s.summary = 'This Logstash plugin collects PROCFS metrics through remote SSH servers.'
|
6
6
|
s.description = 'This gem is a Logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/logstash-plugin install gemname. This gem is not a stand-alone program'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-input-remote_proc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christian Kakesa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-12-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|