fluent-plugin-nostat 0.0.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1705d2861377ebfef434cbd0a85cda207fa0d96d
4
+ data.tar.gz: 3bc1f4b520eb5013336af0624954d189d8bff850
5
+ SHA512:
6
+ metadata.gz: 7050d65ad6b9f28aed2ea254d43e370bce00d1846d44e4634346b81826d4c9917ac51cdfdd43d378e8dbcd690ed4b56f0ff2fc7b487965a55293c3c84bfc776f
7
+ data.tar.gz: f5c508c7c0db87732835a59f0808009549c9c11e3e0501146cd079695c23ce6c3fcec6e4552ddbfea0ddb5e36b7575ef85a1f371c0c1630f96a533fdf32eb0e6
data/AUTHORS ADDED
@@ -0,0 +1 @@
1
+ No JinHo <nozino@gmail.com>
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1 @@
1
+ no license yet
data/README.md ADDED
@@ -0,0 +1,2 @@
1
+ # fluent-plugin-nostat
2
+ fluent plugin for system resource monitoring whithout dstat
@@ -0,0 +1,49 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # stub: fluent-plugin-nostat 0.0.1 ruby lib
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "fluent-plugin-nostat"
6
+ s.version = "0.0.1"
7
+
8
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
9
+ s.require_paths = ["lib"]
10
+ s.authors = ["No JinHo"]
11
+ s.date = "2016-03-10"
12
+ s.email = "nozino@gmail.com"
13
+ s.extra_rdoc_files = [
14
+ "LICENSE.txt",
15
+ "README.md"
16
+ ]
17
+ s.files = [
18
+ "Gemfile",
19
+ "LICENSE.txt",
20
+ "README.md",
21
+ "AUTHORS",
22
+ "fluent-plugin-nostat.gemspec",
23
+ "lib/fluent/plugin/in_nostat.rb",
24
+ ]
25
+ s.homepage = "http://github.com/nozino/fluent-plugin-nostat"
26
+ s.rubygems_version = "2.4.5"
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
31
+
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
@@ -0,0 +1,174 @@
1
+ module Fluent
2
+ class BcacheInput < Input
3
+ class Nostat
4
+ Plugin.register_input('bcache', self)
5
+
6
+ @@CPU_STAT = "/proc/stat"
7
+ @@MEM_STAT = "/proc/meminfo"
8
+ @@DISK_STAT = "/proc/diskstats"
9
+ @@NET_STAT = "/proc/net/dev"
10
+
11
+ @@CPU_USR = 0
12
+ @@CPU_SYS = 2
13
+ @@CPU_IDL = 3
14
+ @@CPU_WAI = 4
15
+ @@CPU_SIQ = 6
16
+ @@CPU_HIQ = 5
17
+
18
+ def initialize
19
+ super
20
+ require 'fluent/timezone'
21
+ end
22
+
23
+ config_param :tag_prefix, :string, :default => nil
24
+ config_param :tag, :string, :default => nil
25
+ config_param :run_interval, :time, :default => nil
26
+
27
+ def configure(conf)
28
+ super
29
+
30
+ if !@tag
31
+ @tag = @tag_prefix + `hostname`.strip.split('.')[0].strip + ".bcache"
32
+ log.info "tag=", @tag
33
+ # raise ConfigError, "'tag' option is required on df input"
34
+ end
35
+ if !@run_interval
36
+ raise ConfigError, "'run_interval' option is required on df input"
37
+ end
38
+ end
39
+
40
+ def start
41
+ @finished = false
42
+ @thread = Thread.new(&method(:run_periodic))
43
+
44
+ end
45
+
46
+ def shutdown
47
+ @finished = true
48
+ @thread.join
49
+ end
50
+
51
+ def get_stats (path)
52
+ res = {}
53
+
54
+ bcache = path.split('/')[-3]
55
+ res[bcache] = {}
56
+ res[bcache]["cache_hits"] = File.read(path + "/cache_hits").strip.to_i
57
+ res[bcache]["cache_misses"] = File.read(path + "/cache_misses").strip.to_i
58
+
59
+ puts res
60
+
61
+ res
62
+ end
63
+
64
+ def get_cpu_stat
65
+ res = {}
66
+
67
+ first = File.foreach(@@CPU_STAT).first.split
68
+
69
+ res["usr"] = first[@@CPU_USR].strip.to_i
70
+ res["sys"] = first[@@CPU_SYS].strip.to_i
71
+ res["idl"] = first[@@CPU_IDL].strip.to_i
72
+ res["wai"] = first[@@CPU_WAI].strip.to_i
73
+ res["siq"] = first[@@CPU_SIQ].strip.to_i
74
+ res["hiq"] = first[@@CPU_HIQ].strip.to_i
75
+
76
+ res
77
+ end
78
+
79
+ def get_mem_stat
80
+ res = {}
81
+ used = 0
82
+
83
+ File.foreach(@@MEM_STAT) do |line|
84
+ items = line.split
85
+ name = items[0].split(':').first
86
+
87
+ case name
88
+ when "MemTotal"
89
+ res["total"] = items[1].strip.to_i
90
+ when "MemFree"
91
+ res["free"] = items[1].strip.to_i
92
+ when "Buffers"
93
+ res["buff"] = items[1].strip.to_i
94
+ when "Cached"
95
+ res["cach"] = items[1].strip.to_i
96
+ else
97
+ end
98
+ end
99
+
100
+ res["used"] = res["total"] - res["free"] - res["buff"] - res["cach"]
101
+ res
102
+ end
103
+
104
+ def get_disk_stat
105
+ res = {}
106
+
107
+ File.foreach(@@DISK_STAT) do |line|
108
+ items = line.split
109
+ if ( items[2] =~ /^[hsv]d[a-z]$/ )
110
+ disk = {}
111
+
112
+ disk["read"] = items[5]
113
+ disk["write"] = items[9]
114
+
115
+ res[items[2]] = disk
116
+ end
117
+ end
118
+
119
+ res
120
+ end
121
+
122
+ def get_net_stat
123
+ res = {}
124
+ net = {}
125
+
126
+ File.foreach(@@NET_STAT).with_index do |line, index|
127
+ if ( index < 2 )
128
+ next
129
+ end
130
+
131
+ items = line.split
132
+ name = items[0].split(':').first
133
+
134
+ if ( name =~ /^lo$/ )
135
+ next
136
+ end
137
+
138
+ net["recv"] = items[1]
139
+ net["send"] = items[9]
140
+
141
+ res[name] = net
142
+ end
143
+
144
+ res
145
+ end
146
+
147
+ def run_periodic
148
+ until @finished
149
+ begin
150
+ sleep @run_interval
151
+
152
+ record = {}
153
+
154
+ record["cpu"] = get_cpu_stat
155
+ record["disk"] = get_disk_stat
156
+ record["net"] = get_net_stat
157
+ record["mem"] = get_cpu_stat
158
+
159
+ log.info "ret=", record
160
+
161
+ emit_tag = @tag.dup
162
+ time = Engine.now
163
+
164
+ router.emit(@tag, time, record)
165
+ rescue => e
166
+ log.error "bcache failed to emit", :error => e.to_s, :error_class => e.class.to_s, :tag => tag
167
+ log.error "bcache to run or shutdown child process", :error => $!.to_s, :error_class => $!.class.to_s
168
+ log.warn_backtrace $!.backtrace
169
+
170
+ end
171
+ end
172
+ end
173
+ end
174
+ end
metadata ADDED
@@ -0,0 +1,112 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fluent-plugin-nostat
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - No JinHo
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-03-10 00:00:00.000000000 Z
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
+ - !ruby/object:Gem::Dependency
28
+ name: fluentd
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: 0.10.7
34
+ - - <
35
+ - !ruby/object:Gem::Version
36
+ version: '2'
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - '>='
42
+ - !ruby/object:Gem::Version
43
+ version: 0.10.7
44
+ - - <
45
+ - !ruby/object:Gem::Version
46
+ 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:
76
+ email: nozino@gmail.com
77
+ executables: []
78
+ extensions: []
79
+ extra_rdoc_files:
80
+ - LICENSE.txt
81
+ - README.md
82
+ files:
83
+ - Gemfile
84
+ - LICENSE.txt
85
+ - README.md
86
+ - AUTHORS
87
+ - fluent-plugin-nostat.gemspec
88
+ - lib/fluent/plugin/in_nostat.rb
89
+ homepage: http://github.com/nozino/fluent-plugin-nostat
90
+ licenses: []
91
+ metadata: {}
92
+ post_install_message:
93
+ rdoc_options: []
94
+ require_paths:
95
+ - lib
96
+ required_ruby_version: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - '>='
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ required_rubygems_version: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - '>='
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ requirements: []
107
+ rubyforge_project:
108
+ rubygems_version: 2.0.14
109
+ signing_key:
110
+ specification_version: 4
111
+ summary: Linux Resource Monitoring Input plugin for Fluent event collector
112
+ test_files: []