sensu-plugins-snmp 0.0.4 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0a3dc5871ee186fb00adf69e1ed79a306018c466
4
- data.tar.gz: 0c1a1146ccafb8deeb21ab3a8248cb2f73b48064
3
+ metadata.gz: 3f7350b0daf73bd6077d7407eedcc0fcd8c996b0
4
+ data.tar.gz: 60155093f565f86579df5fb82819a12b36517107
5
5
  SHA512:
6
- metadata.gz: c7484dd3e1342151d2180a042a04c984de7f8f7eeb48fbbc14b0323f420cf42821e3d1d40b501d881b35c30da78da2865155233740940d55afd54ad371a5e4af
7
- data.tar.gz: 88d7c8bc2ab442e2b5d8c3432ee1db436a53d2fa4eddad1e13d1c84994c1fb644405e695d4e426f0aa4181dee3a1cad2e6f233b1082a0fae521699b07873856c
6
+ metadata.gz: b793699f8c01672a2fee7572737a5037ed8472676016d77e9898d7849534f54a9d2c942e3113578c4b8950eafb8ba15e5fe46523b15a94d57600c5afb499818a
7
+ data.tar.gz: 80311ba562bf6c80dc7464555d558d98d7fcb9bbe555972cfa570c1a533f4d46c156acbba4e1f0660d70d00388e8eb45dea0ccc6aea06364ffd26c3bdfe51b00
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -3,6 +3,12 @@ This project adheres to [Semantic Versioning](http://semver.org/).
3
3
 
4
4
  This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachangelog.com/)
5
5
 
6
+ ## Unreleased
7
+
8
+ ## [0.1.0] - 2015-11-13
9
+ ### Added
10
+ - Added a script check-snmp-disk, that checks disk utilization using SNMP
11
+
6
12
  ## [0.0.4] - 2015-07-22
7
13
  ### Fixed
8
14
  - Fixed graphite output when using a prefix in metrics-snmp-bulk.rb
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  ## Sensu-Plugins-snmp
2
2
 
3
- [ ![Build Status](https://travis-ci.org/sensu-plugins/sensu-plugins-snmp.svg?branch=master)](https://travis-ci.org/sensu-plugins/sensu-plugins-snmp)
3
+ [![Build Status](https://travis-ci.org/sensu-plugins/sensu-plugins-snmp.svg?branch=master)](https://travis-ci.org/sensu-plugins/sensu-plugins-snmp)
4
4
  [![Gem Version](https://badge.fury.io/rb/sensu-plugins-snmp.svg)](http://badge.fury.io/rb/sensu-plugins-snmp)
5
5
  [![Code Climate](https://codeclimate.com/github/sensu-plugins/sensu-plugins-snmp/badges/gpa.svg)](https://codeclimate.com/github/sensu-plugins/sensu-plugins-snmp)
6
6
  [![Test Coverage](https://codeclimate.com/github/sensu-plugins/sensu-plugins-snmp/badges/coverage.svg)](https://codeclimate.com/github/sensu-plugins/sensu-plugins-snmp)
@@ -11,6 +11,7 @@
11
11
 
12
12
  ## Files
13
13
  * bin/check-snmp.rb
14
+ * bin/check-snmp-disk.rb
14
15
  * bin/metrics-snmp-bulk.rb
15
16
  * bin/metrics-snmp-if.rb
16
17
  * bin/metrics-snmp.rb
@@ -19,6 +20,6 @@
19
20
 
20
21
  ## Installation
21
22
 
22
- [Installation and Setup](https://github.com/sensu-plugins/documentation/blob/master/user_docs/installation_instructions.md)
23
+ [Installation and Setup](http://sensu-plugins.io/docs/installation_instructions.html)
23
24
 
24
25
  ## Notes
@@ -0,0 +1,130 @@
1
+ #! /usr/bin/env ruby
2
+ #
3
+ # check-snmp-disk
4
+ #
5
+ # DESCRIPTION:
6
+ #
7
+ # This is a simple SNMP check disk script for Sensu,
8
+ # The tool get a mount point as a regex and search for it in the device description SNMP table
9
+ # and return the utilization status based on warning and critical thresholds
10
+ #
11
+ # OUTPUT:
12
+ # plain text
13
+ #
14
+ # PLATFORMS:
15
+ #
16
+ # DEPENDENCIES:
17
+ # gem: sensu-plugin
18
+ # gem: SNMP
19
+ #
20
+ # USAGE:
21
+ # check-snmp -h host -C public -m /mnt -w 75 -c 85
22
+ #
23
+ # if you want to search for specific device and not regex add a comma to the pattern:
24
+ # check-snmp -h host -C public -m /,
25
+ #
26
+ # NOTES:
27
+ # To search for device description in your server or applicance run the following command:
28
+ # snmpwalk -v2c -c public host 1.3.6.1.2.1.25.2.3.1.3
29
+ #
30
+ # LICENSE:
31
+ # Yossi Nachum <nachum234@gmail.com>
32
+ # Released under the same terms as Sensu (the MIT license); see LICENSE
33
+ # for details.
34
+ #
35
+
36
+ require 'sensu-plugin/check/cli'
37
+ require 'snmp'
38
+
39
+ class CheckSNMP < Sensu::Plugin::Check::CLI
40
+ option :host,
41
+ short: '-h host',
42
+ default: '127.0.0.1',
43
+ description: 'SNMP hostname'
44
+
45
+ option :community,
46
+ short: '-C snmp community',
47
+ default: 'public',
48
+ description: 'SNMP community'
49
+
50
+ option :mount_point,
51
+ short: '-m mount point',
52
+ default: '/',
53
+ description: 'Disk mount point'
54
+
55
+ option :ignoremnt,
56
+ short: '-i MNT[,MNT]',
57
+ description: 'Ignore mount point(s)',
58
+ proc: proc { |a| a.split(',') }
59
+
60
+ option :warning,
61
+ short: '-w warning',
62
+ proc: proc(&:to_i),
63
+ default: 80,
64
+ description: 'Warning threshold in precentage'
65
+
66
+ option :critical,
67
+ short: '-c critical',
68
+ proc: proc(&:to_i),
69
+ default: 90,
70
+ description: 'Critical threshold in precentage'
71
+
72
+ option :snmp_version,
73
+ short: '-v version',
74
+ description: 'SNMP version to use (SNMPv1, SNMPv2c (default))',
75
+ default: 'SNMPv2c'
76
+
77
+ option :timeout,
78
+ short: '-t timeout (seconds)',
79
+ default: '1',
80
+ description: 'SNMP timeout'
81
+
82
+ def initialize
83
+ super
84
+ @crit_mnt = []
85
+ @warn_mnt = []
86
+ end
87
+
88
+ def usage_summary
89
+ (@crit_mnt + @warn_mnt).join(', ')
90
+ end
91
+
92
+ def run
93
+ base_oid = '1.3.6.1.2.1.25.2.3.1'
94
+ dev_desc_oid = base_oid + '.3'
95
+ dev_size_oid = base_oid + '.5'
96
+ dev_used_oid = base_oid + '.6'
97
+ begin
98
+ manager = SNMP::Manager.new(host: "#{config[:host]}",
99
+ community: "#{config[:community]}",
100
+ version: config[:snmp_version].to_sym,
101
+ timeout: config[:timeout].to_i)
102
+ response = manager.get_bulk(0, 200, [dev_desc_oid])
103
+ dev_indexes = []
104
+ response.each_varbind do |var|
105
+ next if config[:ignoremnt] && config[:ignoremnt].include?(var.value.to_s.split(',')[0])
106
+ if var.value.to_s =~ /#{config[:mount_point]}/
107
+ dev_indexes.push(var.name[-1])
108
+ end
109
+ end
110
+ dev_indexes.each do |dev_index|
111
+ response = manager.get(["#{dev_desc_oid}.#{dev_index}", "#{dev_size_oid}.#{dev_index}", "#{dev_used_oid}.#{dev_index}"])
112
+ dev_desc, dev_size, dev_used = response.varbind_list
113
+ perc = dev_used.value.to_f / dev_size.value.to_f * 100
114
+ if perc > config[:critical]
115
+ @crit_mnt << "#{dev_desc.value} = #{perc.round(2)}%"
116
+ elsif perc > config[:warning]
117
+ @warn_mnt << "#{dev_desc.value} = #{perc.round(2)}%"
118
+ end
119
+ end
120
+ rescue SNMP::RequestTimeout
121
+ unknown "#{config[:host]} not responding"
122
+ rescue => e
123
+ unknown "An unknown error occured: #{e.inspect}"
124
+ end
125
+ critical usage_summary unless @crit_mnt.empty?
126
+ warning usage_summary unless @warn_mnt.empty?
127
+ ok "All disk usage under #{config[:warning]}%"
128
+ manager.close
129
+ end
130
+ end
@@ -110,7 +110,7 @@ class SNMPGraphite < Sensu::Plugin::Metric::CLI::Graphite
110
110
  metric_string += ".#{config[:suffix]}" if config[:suffix]
111
111
  metric_string += ".#{name}"
112
112
  output metric_string, vb.value.to_f
113
- rescue NameError # rubocop:disable all
113
+ rescue NameError # rubocop:disable Lint/HandleExceptions
114
114
  # Rescue as some values may fail to cast to float
115
115
  end
116
116
  end
@@ -118,7 +118,7 @@ class SNMPIfStatsGraphite < Sensu::Plugin::Metric::CLI::Graphite
118
118
  default: false,
119
119
  description: 'Use low capacity counters'
120
120
 
121
- def run # rubocop:disable all
121
+ def run # rubocop:disable Metrics/AbcSize
122
122
  if_table_HC_columns = %w(
123
123
  ifHCInOctets ifHCOutOctets
124
124
  ifHCInUcastPkts ifHCOutUcastPkts
@@ -1,8 +1,8 @@
1
1
  module SensuPluginsSnmp
2
2
  module Version
3
3
  MAJOR = 0
4
- MINOR = 0
5
- PATCH = 4
4
+ MINOR = 1
5
+ PATCH = 0
6
6
 
7
7
  VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
8
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugins-snmp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sensu-Plugins and contributors
@@ -30,7 +30,7 @@ cert_chain:
30
30
  8sHuVruarogxxKPBzlL2is4EUb6oN/RdpGx2l4254+nyR+abg//Ed27Ym0PkB4lk
31
31
  HP0m8WSjZmFr109pE/sVsM5jtOCvogyujQOjNVGN4gz1wwPr
32
32
  -----END CERTIFICATE-----
33
- date: 2015-07-22 00:00:00.000000000 Z
33
+ date: 2015-11-13 00:00:00.000000000 Z
34
34
  dependencies:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: sensu-plugin
@@ -186,19 +186,25 @@ dependencies:
186
186
  - - "~>"
187
187
  - !ruby/object:Gem::Version
188
188
  version: '0.10'
189
- description: Sensu plugins for SNMP
189
+ description: |-
190
+ This plugin provides native SNMP instrumentation
191
+ for monitoring and metrics collection, including:
192
+ generic OID single/bulk query for status and
193
+ metrics, and ifTable metrics
190
194
  email: "<sensu-users@googlegroups.com>"
191
195
  executables:
192
196
  - metrics-snmp.rb
193
197
  - metrics-snmp-if.rb
194
198
  - metrics-snmp-bulk.rb
195
199
  - check-snmp.rb
200
+ - check-snmp-disk.rb
196
201
  extensions: []
197
202
  extra_rdoc_files: []
198
203
  files:
199
204
  - CHANGELOG.md
200
205
  - LICENSE
201
206
  - README.md
207
+ - bin/check-snmp-disk.rb
202
208
  - bin/check-snmp.rb
203
209
  - bin/metrics-snmp-bulk.rb
204
210
  - bin/metrics-snmp-if.rb
@@ -231,7 +237,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
231
237
  version: '0'
232
238
  requirements: []
233
239
  rubyforge_project:
234
- rubygems_version: 2.4.6
240
+ rubygems_version: 2.4.8
235
241
  signing_key:
236
242
  specification_version: 4
237
243
  summary: Sensu plugins for SNMP
metadata.gz.sig CHANGED
Binary file