fluent-plugin-nostat 0.0.3 → 0.0.4

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: bd29b9aae14064c027767a9f27d9012ee7d811bd
4
- data.tar.gz: cafc6d0346c83f591b05f229a3dd80f4b640451c
3
+ metadata.gz: b677505412349ce2ed445ba002eb0c1de72ef4eb
4
+ data.tar.gz: 476324af36df2f7568245244782367661e137363
5
5
  SHA512:
6
- metadata.gz: 2644490f692a735634fbe12b71d120b81e4204e81976ef5464f931095308bf4de130cf2854c8c0d3e353f7578973efc3b500b5ced474e97d3d02b7856100f0be
7
- data.tar.gz: f516112e839b9cf2e4339d28f1f1e354afc4420414e68aca51df0ff634a0e745f9bddd8f8c2b12a5423094fddb06311c1267e6a0b140e0216f35486aa59ad771
6
+ metadata.gz: fff9be0487e8eccf175fc5f86fab0dfc5330f499f0868c591184f6d48a7688ece921fa155400305194f793ecf8199c673b1b456ba0d596c6310d66dd8e26c391
7
+ data.tar.gz: 4bfc7624620b4a0366c4057d89aff5db30cf31a798709abcaac192187af33f258405abe733661089bb8bcc79a18cdb2545215d2376d14123c58585e665be31f7
data/README.md CHANGED
@@ -14,8 +14,12 @@ $ gem install fluent-plugin-nostat
14
14
  <source>
15
15
  type nostat
16
16
  run_interval 1
17
+ mode dstat # raw or dstat
17
18
  </source>
18
19
  ```
20
+ * **mode** : raw or dstat.
21
+ **raw** : just get the values from /proc/{STATS}.
22
+ **dstat** : modify the values as dstat.
19
23
 
20
24
  ## output
21
25
  the raw stats from /proc directory.
@@ -24,9 +28,15 @@ the raw stats from /proc directory.
24
28
  * disk : sector - https://www.kernel.org/doc/Documentation/ABI/testing/procfs-diskstats
25
29
  * network : bytes - http://www.onlamp.com/pub/a/linux/2000/11/16/LinuxAdmin.html
26
30
 
31
+ ### raw mode
27
32
  ```
28
33
  cpu={"usr"=>52773, "sys"=>28330, "idl"=>2217987, "wai"=>1995, "siq"=>4112, "hiq"=>0} disk={"sda"=>{"read"=>"9786551", "write"=>"29250018"}} net={"enp0s3"=>{"recv"=>8940623796, "send"=>383889456}, "enp0s8"=>{"recv"=>8940623796, "send"=>383889456}} mem={"total"=>1884188, "free"=>67968, "buff"=>0, "cach"=>1546820, "used"=>269400}
29
34
  ```
30
35
 
36
+ ### dstat mode
37
+ ```
38
+ cpu={"usr"=>0, "sys"=>0, "idl"=>100, "wai"=>0, "siq"=>0, "hiq"=>0} mem={"free"=>1693290496, "buff"=>0, "cach"=>60887040, "used"=>175230976} disk={"sda"=>{"read"=>0, "write"=>0}} net={"enp0s3"=>{"recv"=>344, "send"=>1668}, "enp0s8"=>{"recv"=>344, "send"=>1668}}
39
+ ```
40
+
31
41
  ## it was tested on
32
42
  . CentOS 7.x (kernel 3.10.x)
@@ -1,19 +1,13 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: fluent-plugin-nostat 0.0.1 ruby lib
2
+ # stub: fluent-plugin-nostat 0.0.4 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "fluent-plugin-nostat"
6
- s.version = "0.0.3"
6
+ s.version = "0.0.4"
7
7
 
8
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
9
8
  s.require_paths = ["lib"]
10
9
  s.authors = ["No JinHo"]
11
- s.date = "2016-03-15"
12
10
  s.email = "nozino@gmail.com"
13
- s.extra_rdoc_files = [
14
- "LICENSE.txt",
15
- "README.md"
16
- ]
17
11
  s.files = [
18
12
  "Gemfile",
19
13
  "LICENSE.txt",
@@ -23,27 +17,8 @@ Gem::Specification.new do |s|
23
17
  "lib/fluent/plugin/in_nostat.rb",
24
18
  ]
25
19
  s.homepage = "http://github.com/nozino/fluent-plugin-nostat"
26
- s.rubygems_version = "2.0.14"
27
- s.summary = "Linux Resource Monitoring Input plugin for Fluent event collector"
28
-
29
- if s.respond_to? :specification_version then
30
- s.specification_version = 4
20
+ s.description = "Linux Resource Monitoring Input plugin for Fluent event collector"
21
+ s.summary = s.description
31
22
 
32
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
33
- s.add_runtime_dependency(%q<fluent-mixin-rewrite-tag-name>, [">= 0"])
34
- s.add_runtime_dependency(%q<fluentd>, [">= 0.10.7", "< 2"])
35
- s.add_runtime_dependency(%q<rdoc>, [">= 0"])
36
- s.add_development_dependency(%q<bundler>, ["~> 1.0"])
37
- else
38
- s.add_runtime_dependency(%q<fluent-mixin-rewrite-tag-name>, [">= 0"])
39
- s.add_runtime_dependency(%q<fluentd>, [">= 0.10.7", "< 2"])
40
- s.add_runtime_dependency(%q<rdoc>, [">= 0"])
41
- s.add_dependency(%q<bundler>, ["~> 1.0"])
42
- end
43
- else
44
- s.add_runtime_dependency(%q<fluent-mixin-rewrite-tag-name>, [">= 0"])
45
- s.add_runtime_dependency(%q<fluentd>, [">= 0.10.7", "< 2"])
46
- s.add_runtime_dependency(%q<rdoc>, [">= 0"])
47
- s.add_dependency(%q<bundler>, ["~> 1.0"])
48
- end
49
- end
23
+ s.add_runtime_dependency "fluentd", [">= 0.10.7", "< 2"]
24
+ end
@@ -1,5 +1,5 @@
1
1
  module Fluent
2
- class NostatInput < Input
2
+ n class NostatInput < Input
3
3
  Plugin.register_input('nostat', self)
4
4
 
5
5
  @@CPU_STAT = "/proc/stat"
@@ -13,22 +13,26 @@ module Fluent
13
13
  @@CPU_WAI = 5
14
14
  @@CPU_HIQ = 6
15
15
  @@CPU_SIQ = 7
16
-
16
+
17
+ @@LINUX_SECTOR_SIZE_BYTE = 512
18
+
19
+ @@history = {}
20
+
17
21
  def initialize
18
22
  super
19
23
  require 'fluent/timezone'
20
24
  end
21
- n
25
+
22
26
  config_param :tag_prefix, :string, :default => nil
23
27
  config_param :tag, :string, :default => nil
24
28
  config_param :run_interval, :time, :default => nil
29
+ config_param :mode, :string, :default => "raw"
25
30
 
26
31
  def configure(conf)
27
32
  super
28
33
 
29
34
  if !@tag
30
35
  @tag = @tag_prefix + `hostname`.strip.split('.')[0].strip + ".nostat"
31
- log.info "tag=", @tag
32
36
  end
33
37
  if !@run_interval
34
38
  raise ConfigError, "'run_interval' option is required on df input"
@@ -36,6 +40,11 @@ n
36
40
  end
37
41
 
38
42
  def start
43
+ if ( @mode == "dstat" )
44
+ @@history = get_stats
45
+ sleep @run_interval
46
+ end
47
+
39
48
  @finished = false
40
49
  @thread = Thread.new(&method(:run_periodic))
41
50
  end
@@ -50,12 +59,12 @@ n
50
59
 
51
60
  first = File.foreach(@@CPU_STAT).first.split
52
61
 
53
- res["usr"] = first[@@CPU_USR].strip.to_i
54
- res["sys"] = first[@@CPU_SYS].strip.to_i
55
- res["idl"] = first[@@CPU_IDL].strip.to_i
56
- res["wai"] = first[@@CPU_WAI].strip.to_i
57
- res["siq"] = first[@@CPU_SIQ].strip.to_i
58
- res["hiq"] = first[@@CPU_HIQ].strip.to_i
62
+ res["usr"] = first[@@CPU_USR].strip.to_f
63
+ res["sys"] = first[@@CPU_SYS].strip.to_f
64
+ res["idl"] = first[@@CPU_IDL].strip.to_f
65
+ res["wai"] = first[@@CPU_WAI].strip.to_f
66
+ res["siq"] = first[@@CPU_SIQ].strip.to_f
67
+ res["hiq"] = first[@@CPU_HIQ].strip.to_f
59
68
 
60
69
  res
61
70
  end
@@ -63,14 +72,17 @@ n
63
72
  def get_mem_stat
64
73
  res = {}
65
74
  used = 0
75
+ total = 0
66
76
 
67
77
  File.foreach(@@MEM_STAT) do |line|
68
78
  items = line.split
69
79
  name = items[0].split(':').first
70
80
 
81
+
71
82
  case name
72
83
  when "MemTotal"
73
- res["total"] = items[1].strip.to_i
84
+ # res["total"] = items[1].strip.to_i
85
+ total = items[1].strip.to_i
74
86
  when "MemFree"
75
87
  res["free"] = items[1].strip.to_i
76
88
  when "Buffers"
@@ -81,7 +93,7 @@ n
81
93
  end
82
94
  end
83
95
 
84
- res["used"] = res["total"] - res["free"] - res["buff"] - res["cach"]
96
+ res["used"] = total - res["free"] - res["buff"] - res["cach"]
85
97
  res
86
98
  end
87
99
 
@@ -93,8 +105,8 @@ n
93
105
  if ( items[2] =~ /^[hsv]d[a-z]$/ )
94
106
  disk = {}
95
107
 
96
- disk["read"] = items[5]
97
- disk["write"] = items[9]
108
+ disk["read"] = items[5].strip.to_i
109
+ disk["write"] = items[9].strip.to_i
98
110
 
99
111
  res[items[2]] = disk
100
112
  end
@@ -128,17 +140,95 @@ n
128
140
  res
129
141
  end
130
142
 
143
+ def get_dstat_cpu (cpu_stat)
144
+ res = {}
145
+ total = 0
146
+ cpu_stat.each do |key, value|
147
+ res[key] = value - @@history["cpu"][key]
148
+ total += res[key]
149
+ end
150
+
151
+ res.each do |key,value|
152
+ if ( key == "idl" )
153
+ res[key] = (res[key] / total * 100).floor
154
+ else
155
+ res[key] = (res[key] / total * 100).ceil
156
+ end
157
+ end
158
+
159
+ res
160
+ end
161
+
162
+ def get_dstat_mem (mem_stat)
163
+ res = {}
164
+ mem_stat.each do |key, value|
165
+ res[key] = value * 1024
166
+ end
167
+
168
+ res
169
+ end
170
+
171
+ def get_dstat_disk (disk_stat)
172
+ res = {}
173
+ disk = {}
174
+
175
+ disk_stat.each do |key, value|
176
+ disk["read"] = (value["read"] - @@history["disk"][key]["read"]) * @@LINUX_SECTOR_SIZE_BYTE
177
+ disk["write"] = (value["write"] - @@history["disk"][key]["write"]) * @@LINUX_SECTOR_SIZE_BYTE
178
+ res[key] = disk
179
+ end
180
+
181
+ res
182
+ end
183
+
184
+ def get_dstat_net (net_stat)
185
+ res = {}
186
+ net = {}
187
+
188
+ net_stat.each do |key, value|
189
+ net["recv"] = (value["recv"] - @@history["net"][key]["recv"])
190
+ net["send"] = (value["send"] - @@history["net"][key]["send"])
191
+ res[key] = net
192
+ end
193
+
194
+ res
195
+ end
196
+
197
+ def get_dstat_record (stat)
198
+ record = {}
199
+ record["cpu"] = get_dstat_cpu (stat["cpu"])
200
+ record["mem"] = get_dstat_mem (stat["mem"])
201
+ record["disk"] = get_dstat_disk (stat["disk"])
202
+ record["net"] = get_dstat_net (stat["net"])
203
+
204
+ @@history = stat
205
+
206
+ record
207
+ end
208
+
209
+ def get_stats
210
+ stat = {}
211
+
212
+ stat["cpu"] = get_cpu_stat
213
+ stat["disk"] = get_disk_stat
214
+ stat["net"] = get_net_stat
215
+ stat["mem"] = get_mem_stat
216
+
217
+ stat
218
+ end
219
+
131
220
  def run_periodic
132
221
  until @finished
133
222
  begin
134
223
  sleep @run_interval
135
224
 
136
- record = {}
225
+ stat = get_stats
137
226
 
138
- record["cpu"] = get_cpu_stat
139
- record["disk"] = get_disk_stat
140
- record["net"] = get_net_stat
141
- record["mem"] = get_mem_stat
227
+ if (mode == "dstat")
228
+ record = get_dstat_record (stat)
229
+ else
230
+ record = stat
231
+ end
142
232
 
143
233
  emit_tag = @tag.dup
144
234
  time = Engine.now
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-nostat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - No JinHo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-15 00:00:00.000000000 Z
11
+ date: 2016-03-17 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: fluent-mixin-rewrite-tag-name
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - '>='
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - '>='
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: fluentd
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -44,41 +30,11 @@ dependencies:
44
30
  - - <
45
31
  - !ruby/object:Gem::Version
46
32
  version: '2'
47
- - !ruby/object:Gem::Dependency
48
- name: rdoc
49
- requirement: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - '>='
52
- - !ruby/object:Gem::Version
53
- version: '0'
54
- type: :runtime
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - '>='
59
- - !ruby/object:Gem::Version
60
- version: '0'
61
- - !ruby/object:Gem::Dependency
62
- name: bundler
63
- requirement: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - ~>
66
- - !ruby/object:Gem::Version
67
- version: '1.0'
68
- type: :development
69
- prerelease: false
70
- version_requirements: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - ~>
73
- - !ruby/object:Gem::Version
74
- version: '1.0'
75
- description:
33
+ description: Linux Resource Monitoring Input plugin for Fluent event collector
76
34
  email: nozino@gmail.com
77
35
  executables: []
78
36
  extensions: []
79
- extra_rdoc_files:
80
- - LICENSE.txt
81
- - README.md
37
+ extra_rdoc_files: []
82
38
  files:
83
39
  - Gemfile
84
40
  - LICENSE.txt