logstash-input-perfmon 0.1.1 → 0.1.2

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: 912cecdb5d9d7caa1b6010d2c5d544bbb258ca52
4
- data.tar.gz: 180877863382a2cc1f719e08f53ef5b6e9b8d67e
3
+ metadata.gz: a02d8e9c2007451db119daba0b7cc49edd7d4d1b
4
+ data.tar.gz: 3f883c2fc4e5a85fa1c777f96bb4329aa108d42c
5
5
  SHA512:
6
- metadata.gz: a38105130ea4f3e34ef586b88274febc153e95590996d0c096ea35bc25888e84d638c3428c611934acea4e0ae7673c6df9012b29311b950a57cf57c4f6963d80
7
- data.tar.gz: 8dc370b3de33743434a8c80d9f01ac9913b61b2b007e83a7f06bf7e3bd21d2c432e6f6d46fb319c371822ab588dd7fff2b673a748a357aca742c0f2c11a29083
6
+ metadata.gz: e30516a092a4e498b3e90289dfe69cea0343f966bed7d1a9eb0e6447f46e00a20e421a0859553a74a4f4cbe85527ebab4adb2d806725d1ea9e9eb6b0c51d26e8
7
+ data.tar.gz: f642dc8d47e9573d32e59003aeb6c71e24745a533a1abe30c9888e3a4f5d733047acd37566f45e28022587d875e82253d54fa95b2b4b54556f0db149c09960a9
data/README.md CHANGED
@@ -13,14 +13,13 @@ To run the tests (be sure that JRuby is installed prior):
13
13
  ```
14
14
  git clone https://github.com/NickMRamirez/logstash-input-perfmon.git
15
15
  cd logstash-input-perfmon
16
+ jruby -S gem install bundler
16
17
  jruby -S bundle install
17
18
  jruby -S bundle exec rspec spec
18
19
  ```
19
20
 
20
21
  To build the gem:
21
22
  ```
22
- git clone https://github.com/NickMRamirez/logstash-input-perfmon.git
23
- cd logstash-input-perfmon
24
23
  gem build logstash-input-perfmon.gemspec
25
24
  ```
26
25
 
@@ -56,6 +55,10 @@ output {
56
55
  }
57
56
  }
58
57
  ```
58
+ Run logstash:
59
+ ```
60
+ logstash -f C:\path\to\conf
61
+ ```
59
62
 
60
63
  This configuration will produce output like:
61
64
  ```json
@@ -63,6 +66,7 @@ This configuration will produce output like:
63
66
  "message":"06/05/2015 15:40:46.999,0.781236,7.032877,6.249891",
64
67
  "@version":"1",
65
68
  "@timestamp":"2015-06-05T19:40:48.468Z",
69
+ "host":"Webserver1",
66
70
  "Occurred":"06/05/2015 15:40:46.999",
67
71
  "PrivilegedTime":0.781236,
68
72
  "ProcessorTime":7.032877,
@@ -70,7 +74,14 @@ This configuration will produce output like:
70
74
  }
71
75
  ```
72
76
 
73
- Run logstash:
77
+ ## Troubleshooting
78
+
79
+ If you get bundler errors having to do with not being able to install a gem, such as:
80
+ ```
81
+ You have requested:
82
+ logstash-devutil >= 0
83
+
84
+ The bundle currently has logstash-devutil locked at 0.0.13.
85
+ Try running 'bundle update logstash-devutils'
74
86
  ```
75
- logstash -f C:\path\to\conf
76
- ```
87
+ The JRuby -S parameter looks at your PATH and it may be defaulting to another version of Ruby.
@@ -27,7 +27,7 @@ require_relative "typeperf_wrapper"
27
27
  # }
28
28
  # }
29
29
  class LogStash::Inputs::Perfmon < LogStash::Inputs::Base
30
- attr_reader :counters, :interval
30
+ attr_reader :counters, :interval, :host
31
31
 
32
32
  config_name "perfmon"
33
33
 
@@ -43,17 +43,28 @@ class LogStash::Inputs::Perfmon < LogStash::Inputs::Base
43
43
  # Sets the frequency, in seconds, at which to collect perfmon metrics
44
44
  config :interval, :validate => :number, :required => false, :default => 10
45
45
 
46
+ # Identifies the server being monitored. Defaults to hostname, but can be overriden.
47
+ # [source,ruby]
48
+ # input {
49
+ # perfmon {
50
+ # interval => 10
51
+ # counters => ["\Processor(_Total)\% Privileged Time"],
52
+ # host => "webserver1"
53
+ # }
54
+ # }
55
+ config :host, :required => false, :default => Socket.gethostname
56
+
46
57
  #------------Public Methods--------------------
47
58
  public
48
59
 
49
60
  # Registers the plugin with logstash
50
61
  def register
51
- @host = Socket.gethostname
52
62
  @typeperf = TypeperfWrapper.new(PerfmonProcGetter.new, @interval)
53
63
  @counters.each { |counter| @typeperf.add_counter(counter) }
54
64
  end
55
65
 
56
66
  # Runs the perf monitor and monitors its output
67
+ # [queue] The queue to add new events to
57
68
  def run(queue)
58
69
  @typeperf.start_monitor
59
70
 
@@ -64,6 +75,9 @@ class LogStash::Inputs::Perfmon < LogStash::Inputs::Base
64
75
 
65
76
  @codec.decode(data) do |event|
66
77
  decorate(event)
78
+
79
+ event['host'] = @host
80
+
67
81
  queue << event
68
82
  @logger.debug("Added event to queue: #{event}")
69
83
  end
@@ -18,8 +18,8 @@ class PerfmonProcGetter
18
18
 
19
19
  f.each do |line|
20
20
  next if counters.any? { |counter| line.include? counter } # don't show lines that contain headers
21
- line.gsub!('"', '') # remove quotes
22
- line.strip!
21
+ line.gsub!('"', '') # remove quotes
22
+ line.strip!
23
23
  output_queue << line
24
24
  end
25
25
  end
@@ -53,8 +53,8 @@ class TypeperfWrapper
53
53
  private
54
54
 
55
55
  def open_thread_and_do_work
56
- @t1 = Thread.new do
57
- @perfmon_proc_getter.start_process(@counters, @interval, @msg_queue)
56
+ Thread.new do
57
+ @perfmon_proc_getter.start_process(@counters, @interval, @msg_queue)
58
58
  end
59
59
 
60
60
  @perfmon_proc_getter.wait_for_process_to_start
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'logstash-input-perfmon'
3
- s.version = '0.1.1'
3
+ s.version = '0.1.2'
4
4
  s.licenses = ['Apache License (2.0)']
5
5
  s.summary = "Logstash input for Windows Performance Monitor"
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/plugin install gemname. This gem is not a stand-alone program. Logstash input for Windows Performance Monitor metrics."
@@ -7,14 +7,41 @@ describe 'IntegrationTests' do
7
7
  subject(:plugin) do
8
8
  LogStash::Inputs::Perfmon.new(
9
9
  "interval" => 1,
10
- "counters" => ["\\processor(_total)\\% processor time"]
10
+ "counters" => ["\\processor(_total)\\% processor time"],
11
+ "host" => "webserver1"
11
12
  )
12
13
  end
13
14
 
14
15
  describe 'initialize' do
15
- it 'assigns counters and interval' do
16
+ it 'assigns counters' do
16
17
  expect(plugin.counters).to eq ["\\processor(_total)\\% processor time"]
17
- expect(plugin.interval).to eq 1
18
+ end
19
+
20
+ it 'assigns interval' do
21
+ expect(plugin.interval).to eq 1
22
+ end
23
+
24
+ it 'assigns hostname to host when host is not set' do
25
+ my_plugin = LogStash::Inputs::Perfmon.new(
26
+ "interval" => 1,
27
+ "counters" => ["\\processor(_total)\\% processor time"]
28
+ )
29
+
30
+ my_plugin.register
31
+
32
+ expect(my_plugin.host).to eq Socket.gethostname
33
+ end
34
+
35
+ it 'overrides hostname as host when host is set' do
36
+ my_plugin = LogStash::Inputs::Perfmon.new(
37
+ "interval" => 1,
38
+ "counters" => ["\\processor(_total)\\% processor time"],
39
+ "host" => "webserver1"
40
+ )
41
+
42
+ my_plugin.register
43
+
44
+ expect(my_plugin.host).to eq 'webserver1'
18
45
  end
19
46
  end
20
47
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-input-perfmon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Ramirez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-06 00:00:00.000000000 Z
11
+ date: 2015-06-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logstash-core