riemann-babbler 2.5.4 → 2.5.5

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: da4839c0bd87da8889289f793aed5fa86e8e0ccc
4
- data.tar.gz: 6a1f6fb80ed68da4266c12766fe93ed7e3851638
3
+ metadata.gz: 90e56de248d738dad01c1b11d060ba3a245cd59a
4
+ data.tar.gz: c6b4be229437856a110fea11ac1c344c7b985cb9
5
5
  SHA512:
6
- metadata.gz: 08eb1b69bb88e58874feaaf888ffbd3621522a46794f03a867dff1fdfff54e1e4cd602be851976440a7f993c1101a164cc498fe4b26f1535a093e06daa9061d5
7
- data.tar.gz: b5b8ecc2bcc5f951561e22f6ddcd2c8e454c36a8fcb04d7652a9269c822ecf93729f99a721448b405b3bfee8b07521ca4f094c175afb392e1c457ed173d7b0b0
6
+ metadata.gz: d7da5a831710d13b4fda243fa804532bc53cb3dfe471eb31b99734b653bc1777bb75174ab021a603351d8fc2827877263cdc2b347318b89a164e674d236fc22f
7
+ data.tar.gz: b3a1f2159b23e51817e55eeb95457020fdf910e28ce0b7e88621fe1e5adea094343e2af312291f4e57d2ace00442d35d85f4a5135ba3c4f2b4f428b0f1952329
@@ -5,7 +5,12 @@ class Riemann::Babbler::Plugin::Disk < Riemann::Babbler::Plugin
5
5
  require 'sys/filesystem'
6
6
  include Sys
7
7
 
8
- NOT_MONITORING_FS = %w(sysfs nfs devpts squashfs proc devtmpfs)
8
+ # check size:
9
+ NOT_MONITORING_FS_FOR_SIZE = %w(sysfs nfs devpts squashfs proc devtmpfs)
10
+ # fstab:
11
+ MONITORING_FS_FOR_FSTAB = %w(ext2 ext3 ext4 xfs tmpfs)
12
+ NOT_MONIT_DEVICE_FOR_FSTAB = %w(none)
13
+ NOT_MONITORING_POINT_FOR_FSTAB = %w(/lib/init/rw /dev/shm /dev)
9
14
 
10
15
  def init
11
16
  plugin.set_default(:service, 'disk')
@@ -13,19 +18,46 @@ class Riemann::Babbler::Plugin::Disk < Riemann::Babbler::Plugin
13
18
  plugin.states.set_default(:critical, 85)
14
19
  end
15
20
 
16
- def collect
21
+ def get_fstab
22
+ fstab = File.read('/etc/fstab').split("\n").delete_if { |x| x.strip.match(/^#/) }
23
+ fstab.join("\n")
24
+ end
25
+
26
+ def get_monit_points_for_size
17
27
  # собираем только необходимые для мониторинга маунт-поинты
18
28
  # точнее выбираем из mounts только те, у которых fstype не попадает
19
- # в NOT_MONITORING_FS
29
+ # в NOT_MONITORING_SIZE_FOR_FS
20
30
  monit_points = []
21
31
  File.open('/proc/mounts', 'r') do |file|
22
32
  while (line = file.gets)
23
33
  mtab = line.split(/\s+/)
24
- monit_points << mtab[1] unless NOT_MONITORING_FS.include? mtab[2]
34
+ monit_points << mtab[1] unless NOT_MONITORING_FS_FOR_SIZE.include? mtab[2]
25
35
  end
26
36
  end
37
+ monit_points
38
+ end
39
+
40
+ def get_monit_points_for_fstab
41
+ # выбираем из mounts только те, у которых fstype попадает
42
+ # в MONITORING_SIZE_FOR_FS
43
+ monit_points = []
44
+ File.open('/proc/mounts', 'r') do |file|
45
+ while (line = file.gets)
46
+ mtab = line.split(/\s+/)
47
+ if MONITORING_FS_FOR_FSTAB.include?(mtab[2]) &&
48
+ !NOT_MONITORING_POINT_FOR_FSTAB.include?(mtab[1]) &&
49
+ !NOT_MONIT_DEVICE_FOR_FSTAB.include?(mtab[0])
50
+ monit_points << mtab[1]
51
+ end
52
+ end
53
+ end
54
+ monit_points
55
+ end
56
+
57
+ def collect
58
+ fstab = get_fstab
27
59
  disk = Array.new
28
- monit_points.each do |point|
60
+ get_monit_points_for_size.each do |point|
29
61
  point_stat = Filesystem.stat point
30
62
  human_point = point == '/' ? '/root' : point
31
63
  human_point = human_point.gsub(/^\//, '').gsub(/\//, '_')
@@ -34,6 +66,9 @@ class Riemann::Babbler::Plugin::Disk < Riemann::Babbler::Plugin
34
66
  disk << { :service => plugin.service + " #{human_point} abs free", :description => "Disk free #{point}, B", :metric => point_stat.blocks_free * point_stat.block_size, :state => 'ok' }
35
67
  disk << { :service => plugin.service + " #{human_point} abs total", :description => "Disk space #{point}, B", :metric => point_stat.blocks * point_stat.block_size, :state => 'ok' }
36
68
  end
69
+ get_monit_points_for_fstab.each do |point|
70
+ disk << { :service => plugin.service + " #{point} fstab entry", :description => "Mount point #{point} not matched in /etc/fstab", :state => 'critical' } unless fstab.match("#{point} ")
71
+ end
37
72
  disk
38
73
  end
39
74
 
@@ -1,5 +1,5 @@
1
1
  module Riemann
2
2
  module Babbler
3
- VERSION = '2.5.4'
3
+ VERSION = '2.5.5'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: riemann-babbler
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.4
4
+ version: 2.5.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vasiliev Dmitry
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-02 00:00:00.000000000 Z
11
+ date: 2013-12-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: riemann-client