sensu-plugins / sensu-plugins-disk-checks

This plugin provides native disk instrumentation for monitoring and metrics collection, including: health, usage, and various metrics.
http://sensu-plugins.io
MIT License
27 stars 63 forks source link

Error running check-smart-status.rb - undefined method `name' for #<Disk:0x0000000253d8b8> #89

Open vadim6 opened 6 years ago

vadim6 commented 6 years ago

I'm using v2.5.1 of check-smart-status.rb, when running it with the example json it's failing in line 219.

sudo ./check-smart-status.rb -j ~/smart.json Check failed to run: undefined methodname' for #, ["/opt/sensu/embedded/lib/ruby/gems/2.3.0/gems/sensu-plugins-disk-checks-2.5.1/bin/check-smart-status.rb:219:in block in run'", "/opt/sensu/embedded/lib/ruby/gems/2.3.0/gems/sensu-plugins-disk-checks-2.5.1/bin/check-smart-status.rb:206:ineach'", "/opt/sensu/embedded/lib/ruby/gems/2.3.0/gems/sensu-plugins-disk-checks-2.5.1/bin/check-smart-status.rb:206:in run'", "/opt/sensu/embedded/lib/ruby/gems/2.3.0/gems/sensu-plugin-1.3.0/lib/sensu-plugin/cli.rb:57:inblock in '"]`

I've found that changing #{dev.name} to #{dev.device_path} does the trick in line 219: criticals << "Overall health check failed on #{dev.name}"

Not sure if it's only something on my system or not though...

majormoses commented 6 years ago

Can you please include an exmaple of what smart.json should look like so I can do some testing?

majormoses commented 6 years ago

Sounds good can you create a PR to fix it?

AMD1212 commented 4 years ago

I am getting the same error on three of my servers. The workaround of vadim6 does not seem to work anymore.

Check failed to run: undefined method name' for #<Disk:0x0000564789ecbcc0>, ["/usr/lib/nagios/plugins/check-smart-status.rb:220:inblock in run'", "/usr/lib/nagios/plugins/check-smart-status.rb:207:in each'", "/usr/lib/nagios/plugins/check-smart-status.rb:207:inrun'", "/var/lib/gems/2.5.0/gems/sensu-plugin-4.0.0/lib/sensu-plugin/cli.rb:59:in `block in '"]

smart.json is attached smart.json.txt

The servers are all HP ProLiant SE316M1 all using an LSI Logic / Symbios Logic SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon] Raid Controller (all Disks in JBOD Mode).

I can run smartctl -a on all disks configured in smart.json without a problem. The Poblem also exists if i write only one disk into the json (of course the disk-id changes).

Attached is also the whole output of a smartctl -a on /dev/sda: smartctl-sda.txt

If I can provide any more information that could help to solve the problem, just let me know.