How to monitor windows software raid

Hari Sekhon hpsekhon at googlemail.com
Tue Jun 17 17:16:36 CEST 2008


No, don't try that. Python is a great language, I code in it myself, but...

1. It is not portable across windows systems without installing add-ons
2. It checks *LINUX* software raid, not windows software raid.

-h


Marcos Marinho wrote:
> Try this : It is a python script
> ============================================================
> #!/usr/bin/python
>
> # check_swraid - plugin for nagios to check the status of linux swraid 
> devices
> #
> # This program is free software; you can redistribute it and/or modify
> # it under the terms of the GNU General Public License as published by
> # the Free Software Foundation; either version 2 of the License, or
> # (at your option) any later version.
> #
> # This program is distributed in the hope that it will be useful,
> # but WITHOUT ANY WARRANTY; without even the implied warranty of
> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> # GNU Library General Public License for more details.
> #
> # You should have received a copy of the GNU General Public License
> # along with this program; if not, write to the Free Software
> # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 
> 02111-1307, USA.
> #
> # Copyright 2004 Duke University
> # Written by Sean Dilda <sean at duke.edu>
>
> # Version: 0.3
> # patched with the rouilj's patch (03.02.2006) by Virer (28.07.2006)
>
> import os
> import sys
> import string
>
> mdstat = '/proc/mdstat'
>
> mdFile = open(mdstat).readlines()
>
> # two cases: two starting lines or just one starting line.
> # Remove the first and lasts lines as we don't need them
> mdFile = mdFile[1:-1]
> if (len(mdFile) % 3) != 0:
>         mdFile = mdFile[1:]
>
>
> if (len(mdFile) % 3) != 0:
>         # must have two starting lines
>         print 'Error with mdstat file'
>         sys.exit(3)
>
> if len(mdFile) == 0:
>         print 'Error no md devices configured'
>         sys.exit(3)
>
> mdData = []
> while len(mdFile) > 0:
>     mdData.append((mdFile[0],mdFile[1]))
>     mdFile = mdFile[3:]
>
> overallStatus = 0
> errorMsg = ''
> devices = ''
> for tup in mdData:
>     device, colon, status, type, drives = string.split(tup[0], None, 4)
>     drives = string.split(drives)
>     values = string.split(tup[1])[-2]
>     values = values[1:-1]
>     normal, current = string.split(values, '/')
>     normal = int(normal)
>     current = int(current)
>
>     devices = devices + " " + device
>
>     # Status of 0 == Ok, 1 == Warning, 2 == Critical
>     status = 0
>     failed = 0
>     degraded = 0
>     msg = ''
>
>     failed = []
>     for drive in drives:
>         if drive[-3:] == '(F)':
>             failed.append(drive[:string.index(drive, '[')])
>             status = 1
>     failed = ' (' + string.join(failed, ', ') + ').'
>
>
>     if status == 'inactive':
>         status = 2
>         msg = device + ' is inactive.'
>     if type == 'raid5':
>         if current < (normal -1):
>             msg = device + ' failed' + failed
>             status = 2
>         elif current < normal:
>             msg = device + ' degraded' + failed
>             status = 1
>     else:
>         if current < normal:
>             msg = device + ' failed' + failed
>             status = 2
>
>     if len(msg) > 0:
>         if len(errorMsg) > 0:
>             errorMsg = errorMsg + '; '
>         errorMsg = errorMsg + msg
>         overallStatus = max(overallStatus, status)
>
> if overallStatus == 0:
>     print 'All md devices (' + devices + ' ) Ok.'
>     sys.exit(0)
> else:
>     print errorMsg
>     sys.exit(overallStatus)
> #EOF
> ============================================================
>
>
>
>
> Rene Fertig escreveu:
>> Hello Hari.
>>
>>   
>>> Have you checked NagiosExchange.org? I didn't see anything but then I
>>> didn't look too closely. Otherwise you could just write one. VBS is an
>>> easy language and universal enough for this. I'd write this in fact, if
>>> I had any servers poor enough to have windows software raid...
>>>     
>>
>> Of cause I've checked NagiosExchange, but there are only plugins for hardware 
>> raids.
>>
>> I've found a VB script which uses DISKPART 
>> (http://www.anchor.com.au/hosting/dedicated/monitoring_windows_software_raid). 
>> Unfortunately DISKPART didn't work on Windows 2000 (only Win 2000 Pro, Win 
>> 2000 server, Win 2003 ...)
>>
>> But I've got a list of event IDs so I can monitor the event log and do passive 
>> checks - more than nothing...
>>
>> Greetings,
>>
>> 	Rene

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
Nagios-users mailing list
Nagios-users at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nagios-users
::: Please include Nagios version, plugin version (-v) and OS when reporting any issue. 
::: Messages without supporting info will risk being sent to /dev/null





More information about the Users mailing list