Monitors the SNMP daemon using a shell script and generates an alert if the process appears to mis-function.
This Monitor monitors the health of SNMP daemon.
An unhealthy state for this monitor indicates that the SNMP daemon does not respond.
Restart the failed SNMP daemon on the target server.
Target | Fujitsu.Servers.PRIMERGY.Linux.SnmpManagement | ||
Parent Monitor | System.Health.AvailabilityState | ||
Category | AvailabilityHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | MatchMonitorHealth | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Fujitsu.Servers.PRIMERGY.Linux.ShellScript.LessThanThreshold.ThreeState.MonitorType | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Fujitsu.Servers.PRIMERGY.Linux.snmp.ShellScript.LessThan.ThreeState.Monitor" Accessibility="Public" Enabled="true" Target="Fujitsu.Servers.PRIMERGY.Linux.SnmpManagement" ParentMonitorID="SystemHealth!System.Health.AvailabilityState" Remotable="true" Priority="Normal" TypeID="Fujitsu.Servers.PRIMERGY.Linux.ShellScript.LessThanThreshold.ThreeState.MonitorType" ConfirmDelivery="false">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="Fujitsu.Servers.PRIMERGY.Linux.snmp.ShellScript.LessThan.ThreeState.Monitor.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="Fujitsu.Servers.PRIMERGY.Linux.ManagementClientSoftware"]/NetworkName$</AlertParameter1>
<AlertParameter2>$Data/Context///*[local-name()="StdOut"]$</AlertParameter2>
<AlertParameter3>$Data/Context///*[local-name()="StdErr"]$</AlertParameter3>
<AlertParameter4>$Data/Context///*[local-name()="ReturnCode"]$</AlertParameter4>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="StatusOK" MonitorTypeStateID="StatusOK" HealthState="Success"/>
<OperationalState ID="StatusWarning" MonitorTypeStateID="StatusWarning" HealthState="Warning"/>
<OperationalState ID="StatusError" MonitorTypeStateID="StatusError" HealthState="Error"/>
</OperationalStates>
<Configuration>
<Interval>300</Interval>
<TargetSystem>$Target/Property[Type="Fujitsu.Servers.PRIMERGY.Linux.ManagementClientSoftware"]/NetworkName$</TargetSystem>
<ScriptName>SnmpHealth.sh</ScriptName>
<ShellScript>#!/bin/sh
# Fujitsu
# Copyright 2014-2019 FUJITSU LIMITED
#
# SnmpHealth.sh - monitors the health of SNMP daemon
OK=0
WARN=1
ERR=2
RETVALUE=$OK # we assume all is well
SCRIPTLOG="/tmp/Fujitsu/$0.log"
# arguments check
DBG=`echo $1 | awk '{print tolower($0)}'`
[ "$DBG" = "dbg" ] && echo "Running $0 in debug mode"
# In DEBUG mode: generate some files under "/tmp" to see, the script is running
if [ "$DBG" = "dbg" ]
then
mkdir -p /tmp/Fujitsu/
tail $SCRIPTLOG 2>/dev/null > $SCRIPTLOG.bk
mv -f $SCRIPTLOG.bk $SCRIPTLOG
echo "$0 V__MP_VERSION__ last ran at `date`" >> $SCRIPTLOG
fi
EECD=`whereis eecd | awk 'NF>1{print $2}'`
if [ "$EECD" = "" ]
then
# either not a system from FUJITSU or no ServerView agents installed - do nothing!
[ "$DBG" = "dbg" ] && echo "Not a system from FUJITSU or ServerView Agents not installed."
exit $OK
fi
# test that SNMP is installed
SNMP=`whereis snmpd | awk 'NF>1{print $2}'`
if [ "$SNMP" = "" ]
then
echo "SNMP is *NOT* installed! Abort with Error."
exit $ERR
fi
[ "$DBG" = "dbg" ] && echo "SNMP is installed at: $SNMP"
# test that SNMP is running
SNMPRUNNING=`ps -A | grep -i '[s]nmpd'`
if [ "$SNMPRUNNING" = "" ]
then
echo "SNMP is *NOT* running! Abort with Error."
exit $ERR
fi
[ "$DBG" = "dbg" ] && echo "SNMP is running"
# test if SNMP is listening
SNMPLISTENING=`netstat -nlu | grep 161 | wc -l`
if [ $SNMPLISTENING -lt 1 ]
then
echo "SNMP is *NOT* listening! Abort with Error."
exit $ERR
fi
[ "$DBG" = "dbg" ] && echo "SNMP is listening"
exit $RETVALUE
</ShellScript>
<ScriptArguments>3_chars_DBG_for_DEBUG</ScriptArguments>
<Timeout>60</Timeout>
<UserName>$RunAs[Name="Unix!Microsoft.Unix.ActionAccount"]/UserName$</UserName>
<Password>$RunAs[Name="Unix!Microsoft.Unix.ActionAccount"]/Password$</Password>
<FilterExpression>
<RegExExpression>
<ValueExpression>
<XPathQuery>//*[local-name()="ReturnCode"]</XPathQuery>
</ValueExpression>
<Operator>MatchesRegularExpression</Operator>
<Pattern>^[0-2]$</Pattern>
</RegExExpression>
</FilterExpression>
<WarningThreshold>1</WarningThreshold>
<ErrorThreshold>2</ErrorThreshold>
</Configuration>
</UnitMonitor>