Array Setup and Networking
cancel
Showing results for 
Search instead for 
Did you mean: 

Nimble storage monitoring with check_mk or snmp

 
SOLVED
Go to solution
New Member

Nimble storage monitoring with check_mk or snmp

Hello together,

How can I monitor the nimble storage with check_mk?

Does exist an plugin for check_mk or is snmp only possible?

Can I query in snmp more than interfaces, for example volumes?

Best regards,

Manuel

12 REPLIES 12
Occasional Advisor

Re: Nimble storage monitoring with check_mk or snmp

I would love to see an answer to this.

InfoSight is okay, but I would prefer to get that (and more) telemetry into check_mk where I can really work some magic on it.

Probably the only course is to write a custom check_mk snmp plugin. I haven't had time to look at the MIBs.

-P

Valued Contributor

Re: Nimble storage monitoring with check_mk or snmp

Hi Manual,

You can check all volumes on performance (IOps and stuff) and the overall performance of the Nimble itself.

I use Zabbix and I have never worked with check_mk, but with zabbix I can check all volumes, this oid: .1.3.6.1.4.1.37447.1.2.1.3.

In Zabbix you can create a discovery rule, which uses the result of this oid as an index to collect all other data, I'm not sure if check_mk can do that to, otherwise you can get all your volumes by running an snmpwalk and figure out which oid is which volume.

Hope it helps.

Rick.

New Member
Solution

Re: Nimble storage monitoring with check_mk or snmp

Hi Manuel, This is the custom check that I did to monitor two nimble units I have with check_mk I have included a perfometer as well, hope that helps

  
    #
    # Nimble Volume Check (Supports inventory and performance data)
    #
    # Author: Rohan Fallon
    #
    # FileName: nimble
    # Location: ~/local/share/check_mk/checks
    # Usage:  cmk --checks  nimble -II your_nimble
    #
    #
    
    nimble_default_values = (95.0, 98.0)
    
    
    def inventory_nimble(info):
       # Debug: lets see how the data we get looks like
       # print info
       # return []
       inventory = []
       for vol, state, connections, volsize, volusage in info:
           if state == "1":
              inventory.append( (vol, nimble_default_values) )
       return inventory
    
    def check_nimble(item, params, info):
       # unpack check parameters
       warn, crit = params
    
       for vol, state, connections, volsize, volusage in info:
          if vol == item:
             if state == "1":
                size_gb = int(volsize) / 1024.0
                usage_gb = int(volusage) / 1024.0
                usage_percent = float(volusage) / float(volsize) * 100.0
                perfdata = [ ( "percent", usage_percent, warn, crit ) ]
                if usage_percent > crit:
                   return (2, "Critical - Volume online - iSCSI Connections = " + connections  + " - Size = " + str(size_gb) + "Gb - Usage = " + "{:6.2f}".format(usage_percent)+ "%", perfdata )
                elif usage_percent > warn:
                   return (1, "Warn - Volume online - iSCSI Connections = " + connections  + " - Size = " + str(size_gb) + "Gb - Usage = " + "{:6.2f}".format(usage_percent)+ "%" , perfdata)
                else:
                   return (0, "OK - Volume online - iSCSI Connections = " + connections  + " - Size = " + str(size_gb) + "Gb - Usage = " + "{:6.2f}".format(usage_percent)+ "%", perfdata)
             else:
                return (2, "CRITICAL - Volume %s offline " % vol)
       return (3, "UNKNOWN - Volume not found")
    
    
    check_info["nimble"] = {
        'check_function':            check_nimble,
        'inventory_function':        inventory_nimble,
        'service_description':       'Nimble Volume %s',
        'has_perfdata':              True,
    }
    
    snmp_info["nimble"] = (".1.3.6.1.4.1.37447.1.2.1" , [ "3", "10", "11", "4", "6" ] )

Code for Perfometer

#
# Perf-o-meter for Nimble Volume Check
#
# Author: Rohan Fallon
#
# FileName: nimble.py
# Location: :~/local/share/check_mk/web/plugins/perfometer
# Note:  "Service check command" is the key when registering in the perfometers dictionary
#
#

def perfometer_nimble(row, check_command, perf_data):

    used = float(perf_data[0][1])
    warn = float(perf_data[0][3])
    crit = float(perf_data[0][4])
    if used > crit:
        color = "#ff0000"
    elif used > warn:
        color = "#ffff00"
    else:
        color = "#00ff00"

    return "%.0f%%" % used, perfometer_linear(used, color)

perfometers['check_mk-nimble'] = perfometer_nimble




New Member

Re: Nimble storage monitoring with check_mk or snmp

Rick,

We also use Zabbix.

Would you be willing to share your template with me or upload it to zabbix share (Zabbix Share - Directory: Recently Added)

Andrew

Valued Contributor

Re: Nimble storage monitoring with check_mk or snmp

Frequent Visitor

Re: Nimble storage monitoring with check_mk or snmp

This really helped us, thanks for sharing!

Occasional Advisor

Re: Nimble storage monitoring with check_mk or snmp

Thanks for sharing this Rohan!

FWIW, I had to change the usage_percent format strings to "{0:6.2f}" to get it to work with python 2.6.

New Member

Re: Nimble storage monitoring with check_mk or snmp

Thanks Patrick,

Sorry for mucking you around, I will update my own checks, obviously a bit fast and loose when I did the first cut.  

Occasional Advisor

Re: Nimble storage monitoring with check_mk or snmp

No worries. It was time well spent for me.