riemann-tools 0.2.11 → 0.2.13
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 +4 -4
- data/README.markdown +2 -1
- data/bin/riemann-consul +2 -2
- data/bin/riemann-health +72 -3
- data/bin/riemann-net +2 -2
- data/bin/riemann-portcheck +41 -0
- data/bin/riemann-proc +1 -1
- metadata +24 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 524cc2711592ff6612b4bcde6b96ab3fa11ae537
|
4
|
+
data.tar.gz: b1091049d8dac7ac940bc17f08484b4c4466e3f1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ba5628dc40a128aed32394cdce2a8a6a63506c6eeb488d736ab1fa678c34fb209f260ff3dbfcc1c08de5c7cd35fcef57d38bb0058993fa7af417a8125a2c5555
|
7
|
+
data.tar.gz: 7c2db71785ca6e9f4effd8ef383156a9baf3337e6b9dc9ddd293b01c2578e4b0faf8f5dc1daeebd998f219cd5561b88283e29c04edbcb0f2f4eabad090a8b8ab
|
data/README.markdown
CHANGED
@@ -38,7 +38,8 @@ ship with the `riemann-tools` gem, including:
|
|
38
38
|
* riemann-consul - Monitor Consul.
|
39
39
|
* riemann-fd - Linux file descriptor use.
|
40
40
|
* riemann-kvminstance - Monitor KVM instances.
|
41
|
-
* riemann-ntp - Monitor NTP
|
41
|
+
* riemann-ntp - Monitor NTP.
|
42
|
+
* riemann-portcheck - Monitor open TCP ports.
|
42
43
|
|
43
44
|
Also contained in the repository are a number of stand-alone monitoring
|
44
45
|
tools, which are shipped as separate gems.
|
data/bin/riemann-consul
CHANGED
@@ -48,8 +48,8 @@ class Riemann::Tools::ConsulHealth
|
|
48
48
|
|
49
49
|
def tick
|
50
50
|
|
51
|
-
leader = get(@consul_leader_url)
|
52
|
-
leader_hostname = URI.parse("http://" + leader
|
51
|
+
leader = JSON.parse(get(@consul_leader_url))
|
52
|
+
leader_hostname = URI.parse("http://" + leader).hostname
|
53
53
|
|
54
54
|
if (leader_hostname == @underlying_ip)
|
55
55
|
nodes = JSON.parse(get(@consul_nodes_url))
|
data/bin/riemann-health
CHANGED
@@ -36,8 +36,20 @@ class Riemann::Tools::Health
|
|
36
36
|
@cores = `sysctl -n hw.ncpu`.to_i
|
37
37
|
@cpu = method :freebsd_cpu
|
38
38
|
@disk = method :disk
|
39
|
-
@load = method :
|
39
|
+
@load = method :bsd_load
|
40
40
|
@memory = method :freebsd_memory
|
41
|
+
when 'openbsd'
|
42
|
+
@cores = `sysctl -n hw.ncpu`.to_i
|
43
|
+
@cpu = method :openbsd_cpu
|
44
|
+
@disk = method :disk
|
45
|
+
@load = method :bsd_load
|
46
|
+
@memory = method :openbsd_memory
|
47
|
+
when 'sunos'
|
48
|
+
@cores = `mpstat -a 2>/dev/null`.split[33].to_i
|
49
|
+
@cpu = method :sunos_cpu
|
50
|
+
@disk = method :disk
|
51
|
+
@load = method :bsd_load
|
52
|
+
@memory = method :sunos_memory
|
41
53
|
else
|
42
54
|
@cores = `nproc`.to_i
|
43
55
|
puts "WARNING: OS '#{@ostype}' not explicitly supported. Falling back to Linux" unless @ostype == "linux"
|
@@ -145,7 +157,47 @@ class Riemann::Tools::Health
|
|
145
157
|
@old_cpu = [u2, n2, s2, t2, i2]
|
146
158
|
end
|
147
159
|
|
148
|
-
def
|
160
|
+
def openbsd_cpu
|
161
|
+
u2, n2, s2, t2, i2 = `sysctl -n kern.cp_time 2>/dev/null`.split(',').map{ |e| e.to_i } #OpenBSD separates with ,
|
162
|
+
|
163
|
+
if @old_cpu
|
164
|
+
u1, n1, s1, t1, i1 = @old_cpu
|
165
|
+
|
166
|
+
used = (u2+n2+s2+t2) - (u1+n1+s1+t1)
|
167
|
+
total = used + i2-i1
|
168
|
+
fraction = used.to_f / total
|
169
|
+
|
170
|
+
report_pct :cpu, fraction, "user+nice+sytem+interrupt\n\n#{`ps -axo pcpu,pid,comm | sort -nrb -k1 | head -10`.chomp}"
|
171
|
+
end
|
172
|
+
|
173
|
+
@old_cpu = [u2, n2, s2, t2, i2]
|
174
|
+
end
|
175
|
+
|
176
|
+
def sunos_cpu
|
177
|
+
mpstats = `mpstat -a 2>/dev/null`.split
|
178
|
+
u2 = mpstats[29].to_i
|
179
|
+
s2 = mpstats[30].to_i
|
180
|
+
t2 = mpstats[31].to_i
|
181
|
+
i2 = mpstats[32].to_i
|
182
|
+
|
183
|
+
if @old_cpu
|
184
|
+
u1, s1, t1, i1 = @old_cpu
|
185
|
+
|
186
|
+
used = (u2+s2+t2) - (u1+s1+t1)
|
187
|
+
total = used + i2-i1
|
188
|
+
if i2 == i1 && used == 0 #If the system is <1% used in both samples then total will be 0 + (99 - 99), avoid a div by 0
|
189
|
+
fraction = 0
|
190
|
+
else
|
191
|
+
fraction = used.to_f / total
|
192
|
+
end
|
193
|
+
|
194
|
+
report_pct :cpu, fraction, "user+sytem+interrupt\n\n#{`ps -ao pcpu,pid,comm | sort -nrb -k1 | head -10`.chomp}"
|
195
|
+
end
|
196
|
+
|
197
|
+
@old_cpu = [u2, s2, t2, i2]
|
198
|
+
end
|
199
|
+
|
200
|
+
def bsd_load
|
149
201
|
m = `uptime`.split(':')[-1].chomp.gsub(/\s+/,'').split(',')
|
150
202
|
load = m[0].to_f / @cores
|
151
203
|
if load > @limits[:load][:critical]
|
@@ -164,6 +216,21 @@ class Riemann::Tools::Health
|
|
164
216
|
report_pct :memory, fraction, "used\n\n#{`ps -axo pmem,pid,comm | sort -nrb -k1 | head -10`.chomp}"
|
165
217
|
end
|
166
218
|
|
219
|
+
def openbsd_memory
|
220
|
+
meminfo = `vmstat 2>/dev/null`.chomp.split
|
221
|
+
fraction = meminfo[28].to_f / meminfo[29].to_f #The ratio of active to free memory unlike the others :(
|
222
|
+
|
223
|
+
report_pct :memory, fraction, "used\n\n#{`ps -axo pmem,pid,comm | sort -nrb -k1 | head -10`.chomp}"
|
224
|
+
end
|
225
|
+
|
226
|
+
def sunos_memory
|
227
|
+
meminfo = `vmstat 2>/dev/null`.chomp.split
|
228
|
+
total_mem = `prtconf | grep Memory`.split[2].to_f * 1024 # reports in GB but vmstat is in MB
|
229
|
+
fraction = ( total_mem - meminfo[32].to_f ) / total_mem
|
230
|
+
|
231
|
+
report_pct :memory, fraction, "used\n\n#{`ps -ao pmem,pid,comm | sort -nrb -k1 | head -10`.chomp}"
|
232
|
+
end
|
233
|
+
|
167
234
|
def darwin_top
|
168
235
|
raw = `top -l 1 | grep -i "^\\(cpu\\|physmem\\|load\\)"`.chomp
|
169
236
|
@topdata = {:stamp => Time.now.to_i }
|
@@ -227,8 +294,10 @@ class Riemann::Tools::Health
|
|
227
294
|
|
228
295
|
def df
|
229
296
|
case @ostype
|
230
|
-
when 'darwin', 'freebsd'
|
297
|
+
when 'darwin', 'freebsd', 'openbsd'
|
231
298
|
`df -P -t noiso9660`
|
299
|
+
when 'sunos'
|
300
|
+
`df -P` # Is there a good way to exlude iso9660 here?
|
232
301
|
else
|
233
302
|
`df -P --exclude-type=iso9660`
|
234
303
|
end
|
data/bin/riemann-net
CHANGED
@@ -79,13 +79,13 @@ class Riemann::Tools::Net
|
|
79
79
|
delta = metric - @old_state[service]
|
80
80
|
svc_state = case service
|
81
81
|
when /drop$/
|
82
|
-
if
|
82
|
+
if delta > 0
|
83
83
|
'warning'
|
84
84
|
else
|
85
85
|
'ok'
|
86
86
|
end
|
87
87
|
when /errs$/
|
88
|
-
if
|
88
|
+
if delta > 0
|
89
89
|
'warning'
|
90
90
|
else
|
91
91
|
'ok'
|
@@ -0,0 +1,41 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# Checks for open tcp ports.
|
4
|
+
# (c) Max Voit 2017
|
5
|
+
|
6
|
+
require File.expand_path('../../lib/riemann/tools', __FILE__)
|
7
|
+
|
8
|
+
class Riemann::Tools::Portcheck
|
9
|
+
include Riemann::Tools
|
10
|
+
require 'socket'
|
11
|
+
|
12
|
+
opt :hostname, "Host, defaults to localhost", :default => `hostname`.chomp
|
13
|
+
opt :ports, "List of ports to check, e.g. '-r 80 443'", :type => :ints
|
14
|
+
|
15
|
+
def initialize
|
16
|
+
@hostname = opts.fetch(:hostname)
|
17
|
+
@ports = opts.fetch(:ports)
|
18
|
+
end
|
19
|
+
|
20
|
+
def tick
|
21
|
+
for thisport in @ports
|
22
|
+
# try opening tcp connection with 5s timeout;
|
23
|
+
# if this fails, the port is considered closed
|
24
|
+
portopen = Socket.tcp(@hostname, thisport, connect_timeout: 5) { true } rescue false
|
25
|
+
if portopen
|
26
|
+
state = "ok"
|
27
|
+
else
|
28
|
+
state = "critical"
|
29
|
+
end
|
30
|
+
report(
|
31
|
+
:host => "#{@hostname}",
|
32
|
+
:service => "port #{thisport}",
|
33
|
+
:state => "#{state}",
|
34
|
+
:tags => ["portcheck"]
|
35
|
+
)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
Riemann::Tools::Portcheck.run
|
data/bin/riemann-proc
CHANGED
@@ -50,7 +50,7 @@ class Riemann::Tools::Proc
|
|
50
50
|
# value should be either process RSS, VSIZE, or 1 if running
|
51
51
|
# state is always unknown for the moment
|
52
52
|
#
|
53
|
-
ps_regex = /([0-9]+)[ ]+([0-9]+)[ ]+([0-9]+)[ ]+([A-Z])[ ]+([0-9:.]+)[ ]+[A-Za-z]{3}[ ]+([A-Za-z]{3} [0-9]+ [0-9:]+ [0-9]+)[ ]+(.*)/
|
53
|
+
ps_regex = /([0-9]+)[ ]+([0-9]+)[ ]+([0-9]+)[ ]+([A-Z])[ ]+([0-9:.]+)[ ]+[A-Za-z]{3}[ ]+([A-Za-z]{3}[ ]{1,2}[0-9]+ [0-9:]+ [0-9]+)[ ]+(.*)/
|
54
54
|
found.each_line do |line|
|
55
55
|
m = ps_regex.match(line)
|
56
56
|
if not m.nil?
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: riemann-tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kyle Kingsbury
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: riemann-client
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.2.
|
19
|
+
version: 0.2.6
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.2.
|
26
|
+
version: 0.2.6
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: trollop
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -42,38 +42,39 @@ dependencies:
|
|
42
42
|
name: json
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '1.8'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '1.8'
|
55
55
|
description: Utilities which submit events to Riemann.
|
56
56
|
email: aphyr@aphyr.com
|
57
57
|
executables:
|
58
|
-
- riemann-
|
59
|
-
- riemann-bench
|
60
|
-
- riemann-cloudant
|
61
|
-
- riemann-consul
|
62
|
-
- riemann-dir-files-count
|
58
|
+
- riemann-kvminstance
|
63
59
|
- riemann-dir-space
|
64
|
-
- riemann-
|
60
|
+
- riemann-bench
|
61
|
+
- riemann-net
|
65
62
|
- riemann-fd
|
66
|
-
- riemann-
|
63
|
+
- riemann-dir-files-count
|
64
|
+
- riemann-zookeeper
|
67
65
|
- riemann-haproxy
|
68
|
-
- riemann-
|
69
|
-
- riemann-
|
70
|
-
- riemann-
|
71
|
-
- riemann-net
|
66
|
+
- riemann-consul
|
67
|
+
- riemann-freeswitch
|
68
|
+
- riemann-apache-status
|
72
69
|
- riemann-nginx-status
|
73
|
-
- riemann-ntp
|
74
70
|
- riemann-proc
|
71
|
+
- riemann-portcheck
|
72
|
+
- riemann-ntp
|
73
|
+
- riemann-health
|
74
|
+
- riemann-memcached
|
75
75
|
- riemann-varnish
|
76
|
-
- riemann-
|
76
|
+
- riemann-diskstats
|
77
|
+
- riemann-cloudant
|
77
78
|
extensions: []
|
78
79
|
extra_rdoc_files: []
|
79
80
|
files:
|
@@ -95,6 +96,7 @@ files:
|
|
95
96
|
- bin/riemann-net
|
96
97
|
- bin/riemann-nginx-status
|
97
98
|
- bin/riemann-ntp
|
99
|
+
- bin/riemann-portcheck
|
98
100
|
- bin/riemann-proc
|
99
101
|
- bin/riemann-varnish
|
100
102
|
- bin/riemann-zookeeper
|
@@ -119,7 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
119
121
|
version: '0'
|
120
122
|
requirements: []
|
121
123
|
rubyforge_project: riemann-tools
|
122
|
-
rubygems_version: 2.
|
124
|
+
rubygems_version: 2.6.13
|
123
125
|
signing_key:
|
124
126
|
specification_version: 4
|
125
127
|
summary: Utilities which submit events to Riemann.
|