fluent-plugin-nostat 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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: []