sensu-plugins-snmp 0.0.4 → 0.1.0

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: 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