[Nagiosplug-devel] Best practice for thresholding
John Vincent
nagiosplug-devel at lusis.org
Mon Jun 22 20:14:09 CEST 2009
I've done something similar but in this case the plugin I'm using is
already using the Nagios::Plugin perl module from CPAN. I guess I'm
trying to determine what Ton or anyone else would consider a best
practice in this case. Do I submit a patch to Threshold.pm for
handling this scenario or do I do all the annoying work on the
existing module?
On Mon, Jun 22, 2009 at 1:33 PM, Richard Edward
Horner<rich at richhorner.com> wrote:
> I don't write plugins in Perl because I write all of them in BASH but
> I wrote a single check_value() function that conforms to the threshold
> and ranges spec and then I include it in all my scripts. If you're
> working from a Perl module, I suppose you could write a similar
> function and include it in the module and then just call it from every
> script. Here's my relevant BASH code if you want to rewrite it in
> Perl. I'm using 999999999 to represent infinity. You can find more
> Nagios BASH code at:
>
> http://rhosts.net/nagios/
>
> function check_value {
> # if the range starts with an @, alert if value is inside the range,
> otherwise alert if value is outside of range
> INSIDE=`echo "$1" | grep -c '^@'`
> RANGE=`echo "$1" | sed 's/^@//'`
>
> # start is anything left of the colon or 0
> # end is anything right of the colon or the whole string if there's
> no colon or infinity if there is a colon and nothing to the right of
> it
>
> # is there a colon?
> PARTS=`echo "$RANGE" | awk -F : '{ print NF }'`
> if [ $PARTS -gt 1 ] ; then
> START=${RANGE%%:*}
> END=${RANGE##*:}
> else
> START=0
> END=$RANGE
> fi
>
> # 4. to specify negative infinity, use "~"
> if [ "$START" == "~" ] ; then
> START=-999999999
> fi
>
> if [ -z "$END" ] ; then
> END=999999999
> fi
>
> if [ $START -gt $END ] ; then
> echo "In threshold START:END, START must be less than or equal to END"
> range_help
> fi
>
> # if the range starts with an @, alert if value is inside the range,
> otherwise alert if value is outside of range
> # all ranges are inclusive of endpoints so we use less than or equal
> on the inside and just less than on the outside
> if [ "$INSIDE" -gt 0 ] ; then
> if [ "$START" -le "$2" -a "$2" -le "$END" ] ; then
> return 1
> fi
> else
> if [ "$2" -lt "$START" -o "$END" -lt "$2" ] ; then
> return 1
> fi
> fi
>
> return 0
> }
>
> # check conditions - yes this is ugly, blame BASH. If you want to
> blame me, please provide a cleaner way that is as fast or faster
> check_value "$CRITICAL" "$VALUE"
> if [ $? -gt 0 ] ; then
> STATE=$STATE_CRITICAL
> else
> check_value "$WARNING" "$VALUE"
> if [ $? -gt 0 ] ; then
> STATE=$STATE_WARNING
> else
> STATE=$STATE_OK
> fi
> fi
>
> Rich(ard)
>
> On Mon, Jun 22, 2009 at 5:22 PM, John Vincent<nagiosplug-devel at lusis.org> wrote:
>> So I've been attempting to use check_memcached and in the process was
>> cleaning up some invalid perfdata output. I also noticed that the
>> thresholding is somewhat broken. This plugin, like many database
>> plugins, has a hit ratio metric. Hit ratio metrics make the most sense
>> when approcahed from a "warning/critical below X%" (at least in my
>> mind). So if my hit ratio drops below 75%, I want a warning and if it
>> goes below 50% I want a critical.
>>
>> What's the best way to handle this with Nagios::Plugin? Should the
>> logic be done in the script or should it be done in the module itself?
>>
>> John E. Vincent
>>
>> ------------------------------------------------------------------------------
>> Are you an open source citizen? Join us for the Open Source Bridge conference!
>> Portland, OR, June 17-19. Two days of sessions, one day of unconference: $250.
>> Need another reason to go? 24-hour hacker lounge. Register today!
>> http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org
>> _______________________________________________________
>> Nagios Plugin Development Mailing List Nagiosplug-devel at lists.sourceforge.net
>> Unsubscribe at https://lists.sourceforge.net/lists/listinfo/nagiosplug-devel
>> ::: Please include plugins version (-v) and OS when reporting any issue.
>> ::: Messages without supporting info will risk being sent to /dev/null
>>
>
>
>
> --
> Richard Edward Horner
> Engineer / Composer / Electric Guitar Virtuoso
> richhorner.com | rhosts.net | sabayonlinux.org
>
More information about the Devel
mailing list