PRTG Skript for Monitoring Ntfs Errors in Windows Eventlog

$hostname = „hostname.domainname.tld“
$threshold = 0
$days = 2
$username = „DOMAIN\administrator“

$password = „p4ssw0rd“
$secpasswd = ConvertTo-SecureString $password -AsPlainText -Force

$credentials= New-Object System.Management.Automation.PSCredential ($username, $secpasswd)

$ErrorCount = Get-WinEvent -ComputerName $hostname -ProviderName „Microsoft-Windows-Ntfs“ -Credential $credentials | Where-Object LevelDisplayName -eq
„Fehler“ | Where-Object TimeCreated -gt $((Get-Date) – (New-TimeSpan -Day $days)) | Measure-Object | Select-Object -expand Count

if ($ErrorCount -eq $threshold) {
  Write-Host „${ErrorCount}:$Errorcount event(s) for Ntfs errors on $hostname in the last $days days – OK“
}
else {
  Write-Host „${ErrorCount}:$Errorcount event(s) for Ntfs errors on $hostname in the last $days days – CRIT“
}

Elementanzahl in SMB Share

Es soll ein Check auf Filecount implementiert werden. Auf dem abzufragenden Server kann jedoch kein check_mk Agent installiert werden. Es kann jedoch mit User / Passwort / Domain auf einen UNC-Pfad zugegriffen werden. Um die Dateianzahl darüber zu ermittelt habe ich das kleine check_smb_count.sh Plugin geschrieben (/opt/omd/versions/default/lib/nagios/plugins/check_smb_count.sh):

#!/bin/bash 
# 
# Check count of lines for smbclient 
# 
# smbclient //host/share SecretPassword  -U Username -W Domainname -c ls | wc -l 
# Domain=[DOMAIN] OS=[Windows 7 Professional 7601 Service Pack 1] Server=[Windows 7 Professional 6.1] 
# 18 
# 
# (c) 2018 Steffen Berg 
#  
server="host" 
share="share1" 
user="user1" 
password="secret" 
domain="WORKGROUP" 
critical="20" 
subdir="/subdir1/subdir2/*"  

elemcountraw=`smbclient //$server/$share $password -U $user -W $domain -c "ls $subdir" 2> /dev/null | wc -l` 

elemcount=$(($elemcountraw - 4))  

if [ "$elemcount" -lt "$critical" ] then   
echo "0 SMB-ElementCount - OK SMB-ElementCount $elemcount/$critical OK"
  exit 0 
else   echo "2 SMB-ElementCount - CRITICAL SMB-ElementCount $elemcount/$critical CRIT"
  exit 2 
fi

Einbindung über /omd/sites/<site>/etc/check_mk/conf.d/legacy.mk

# Definition of the Nagios command for SMB extra_nagios_conf += r""" define command {   command_name check_smb_count   command_line /opt/omd/versions/default/lib/nagios/plugins/check_smb_count.sh } """  # Create service definition legacy_checks += [   (( "check_smb_count", "ElementCountSMB", True), [ "host" ] ), ]

check_mk Powershell KV-Safenet Status eines Routers abfragen – KAMP-Safebox

#0=ok; 1=warn; 2=crit
$OK = 0
$Warning = 1
$Critical = 2

c:\skript\curl.exe -s -k https://your-safebox.address:8443/netaccess/connstatus.html > C:\Skript\kv-safenet-state.log

if (Select-String -Quiet -Path c:\skript\kv-safenet-state.log -Pattern „You are logged in.“) {
  $status = $OK
  $statustext = „OK“
  $detail = „KV-Safenet Verbindnung OK“
}
else {
  $status = $CRITICAL
  $statustext = „CRITICAL“
  $detail = „KV-Safenet Verbindnung CRITICAL“
}

Write-Host „$status KV-Safenet – $($statustext) – $detail“

check_mk local Bash Script Auswertung SQLPlus DB-FULL Logfiles

#!/bin/bash
#
# Skript Logfiles auszuwerten
# speziell RMAN DB FULL Status
#
# Bsp. Format zur Analyse generiert mit SQLPlus
# ===== 09.06.2017 11:23:56 =====
#
# START_TIME END_TIME STATUS INPUT_TYPE INPUT_BYTE OUTPUT_BYT RANG
# ——————– ——————– ——————– ———- ———- ———- ———-
# 08.06.2017 23:00:04 08.06.2017 23:39:09 COMPLETED DB FULL 75.75G 12.36G 1
# 07.06.2017 23:00:04 07.06.2017 23:45:23 COMPLETED DB FULL 75.12G 12.10G 2
# 06.06.2017 23:00:03 06.06.2017 23:46:06 COMPLETED DB FULL 74.57G 11.88G 3
#
# ===== 16.06.2017 10:16:38 =====
#
# START_TIME END_TIME STATUS INPUT_TYPE INPUT_BYTE OUTPUT_BYT RANG
# ——————– ——————– ——————– ———- ———- ———- ———-
# 15.06.2017 23:00:06 15.06.2017 23:42:01 COMPLETED DB FULL 76.19G 12.46G 1
# 14.06.2017 23:00:06 14.06.2017 23:40:42 COMPLETED DB FULL 75.83G 12.38G 2
# 13.06.2017 23:00:04 13.06.2017 23:42:13 COMPLETED DB FULL 75.15G 12.14G 3
#
# End Comments
#

files=./datastore/rman/check_rman*.log

for file in $files
do

  service=`echo „$file“ | cut -d / -f4`
  linecount=`cat $file | awk ‚/\=\=\=\=\=/ {if (count) print count; print; count=0; next} {count++} END {print count}‘ | tail -n1`
  linecount_noheadline=$((linecount – 3))
  lastoutput=`tail -n $linecount_noheadline $file | sed ‚1!G;h;$!d‘ | tail -n1`
  enddate=`echo „$lastoutput“ | cut -d \ -f4`
  state_raw=`echo „$lastoutput“ | cut -d \ -f7`
  day=`echo „$enddate“ | cut -d \. -f1`
  month=`echo „$enddate“ | cut -d \. -f2`
  year=`echo „$enddate“ | cut -d \. -f3`
  date_normalized=`date -d $year-$month-$day +’%Y%m%d’`
  today=`date +’%Y%m%d’`

  if [ $today = $date_normalized ]
    then
      if [ $state_raw = „COMPLETED“ ]
      then
        echo „0 DB-FULL-$service – OK DB-FULL hat den Status COMPLETED! OK“
      elif [ $state_raw = „RUNNING“ ]
      then
        echo „1 DB-FULL-$service – WARN DB-FULL hat den Status RUNNING! WARN“
      elif [ $state_raw = „FAILED“ ]
      then
        echo „2 DB-FULL-$service – CRIT DB-FULL hat den Status FAILED! CRIT“
      fi
    else
    echo „2 DB-FULL-$service – CRIT DB-FULL Letzer Logeintrag zu alt! Logalter: $date_normalized State: $state_raw“
  fi

done

Comet P8541 Temperatur Sensor check_mk Skript

def inventory_temp1(info):
  inventory = []
  for descr in info:
    inventory.append ( ( None, None ) )
  return inventory

def check_temp1(item, params, info):
  temp1 = int(float(info[0][0]))
  perfdata = [ ( „temp“, info[0][0], 24, 25 ) ]
  if temp1 <= 25:
    return (0, „OK Temperature is below 25 – Actual %d“ % temp1, perfdata)
  else:
    return (2, „CRITICAL Temperature is above 25 – Actual %d“ % temp1, perfdata)

check_info[„temp1“] = {
  ‚check_function‘ : check_temp1,
  ‚inventory_function‘ : inventory_temp1,
  ’service_description‘ : ‚Temperatur 1‘,
  ‚has_perfdata‘ : True,
  „snmp_info“ : ( „.1.3.6.1.4.1.22626.1.5.2.1.2“, [„0“]),
}

Simple Powershell MegaRAID Logical Drive State Skript for cmk

Ein ganz einfaches Skript, um den State des Logical Drives mit MegaCLI und als local Check von CMK zu monitoren:

$OK = 0
#$Warning = 1
$Critical = 2
$RaidState = $(C:\Progra~2\MegaRAID\MegaCli.exe -LDInfo -l0 -aALL)
if ($RaidState[9] -eq „State               : Optimal“) {
  $status = $OK
  $statustext = „OK“
  $detail = „RAID Status des Logical Drives 0 OK“
else {
  $status = $Critical
  $statustext = „CRITICAL“
  $detail = „RAID Status des Logical Drives 0 CRITICAL“
}
Write-Host „$status RaidState0 – $($statustext): $detail“

Simple Bash MegaRAID Logical Drive State Skript for cmk

Ein ganz einfaches Skript, um den State des Logical Drives mit MegaCLI und als local Check von CMK zu monitoren:

state=`/opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -lALL -aALL | grep State | cut -d \  -f17`  if [ $state = "Optimal" ] then   echo "0 LDState - OK LogicalDrive Status OK" else   echo "2 LDState - CRITICAL LogicalDrive Status CRIT" fi

Eventhandler und Script zum Restart von Services

1. Skript

OMD[site]:~/version/lib/nagios/plugins/eventhandler$ cat restart_win_spooler.sh
#!/bin/sh
#
# Eventhandler-Script für den Restart von Services
case „$1“ in
OK)
        # Service OK – nichts tun
        ;;
WARNING)
        # Service WARNUNG – nichts tun
        ;;
UNKNOWN)
        # Service UNKNOW – nichts tun
        ;;
CRITICAL)
        # SOFT oder HARD
        case „$2“ in
        # Ist SOFT warten bis Core in HARD wechselt
        SOFT)
                # Warten…
                case „$3“ in
                # Dreimal warten
                1)
                        echo -n „Restart des Spooler-Service (dritter kritischer „Soft“-Zustand)…“
                        # Aufrufen des Init-Scripts, um zu restarten
                        /usr/bin/winexe -U DOMAIN/User%’Password‘ //$4 ’net start Spooler‘
                        ;;
                        esac
                ;;
        # HARD-State
        HARD)
                echo -n „Restart des Spooler-Service…“
                # Aufrufen des Init-Scripts, um zu restarten
                /usr/bin/winexe -U DOMAIN/User%’Password‘ //$4 ’net start Spooler‘
                ;;
        esac
        ;;
esac
exit 0

RRDTool Filesystem Trend Hochrechnungen

Genutzte Umgebung:
Open Monitoring Distribution 1.20

Ergänzungen:
RRD
PECL
etc.
Leider kann ich aus Erinnerung nicht mehr wiedergeben, wie die Installation der Pakete erfolgte.
Entsprechend versuchen für die eingesetzte Distribution Pakete zu bekommen.
Es wurden auch teilweise -devel Pakete genutzt.

Gute Einstiegspunkte sind Google und ein Artikel im Internet:
Quelle: http://tiskanto.blogspot.de/2011/12/trend-predictions-with-rrd-tool-not-so.html

Nach Erfüllen der Voraussetzungen können Graphen generiert werden.
Da es für mich sehr kompliziert war die RRD-Parameter zu definieren, dokumentiere ich sie im folgenden.
Pfade müssen auf die individuelle eigene Installation abgeändert werden:

#!/bin/sh
/path-to-rrdtool/rrdtool graph fs-server1.png \
–imgformat=PNG \
–start=-12w \
–end=’+25w‘ \
–title=“Filesystem Server1″ \
–font TITLE:12: \
–units-exponent=0 \
–vertical-label=“Filesystem“ \
–height=450 \
–width=800 \
–upper-limit 1500000 \
–lower-limit 0 \
DEF:a=“/omd/sites/mainsite/var/pnp4nagios/perfdata/server1/fs_C___C__.rrd“:1:AVERAGE:step=300 \
CDEF:idle=a,0.00,EQ,INF,0,IF \
VDEF:avg=a,AVERAGE \
VDEF:slope=a,LSLSLOPE \
VDEF:cons=a,LSLINT \
CDEF:lsl2=a,POP,slope,COUNT,*,cons,+ \
CDEF:pred=lsl2,2000000,2048000,LIMIT \
VDEF:minpred=pred,FIRST \
VDEF:maxpred=pred,LAST \
GPRINT:a:AVERAGE:“Filesystem Avg\: %8.0lf“ \
AREA:a#00B2EE:“Usage“ \
AREA:idle#AFEEEE \
AREA:pred#BCD2EE \
LINE3:lsl2#ff0000:“Least Sqr Pred.\n“:dashes=8 \
LINE4:2048000#000000:“Full.\n“ \
AREA:5#FF000022::STACK \
AREA:5#FF000044::STACK \
GPRINT:minpred:“reaching 2000000 on \: %c\n“:strftime \
GPRINT:maxpred:“reaching 2048000 on \: %c\n“:strftime \

„RRDTool Filesystem Trend Hochrechnungen“ weiterlesen

Check_MK Plugin zum Abfragen des Cleaning Status von Bandlaufwerken in Dell ML6000 u.ä.

Anhand des Tutorials auf der Check_MK-Seite (https://mathias-kettner.de/checkmk_devel_snmpbased.html) habe ich ein kleines Plugin geschrieben, mit dem man den Cleaning Status der Bandlaufwerke in einer Dell ML6000 Bandbibliothek per SNMP abfragen kann.

Das Plugin habe ich im local-Zweig der OMD-Site unter „~/local/share/check_mk/checks“ abgelegt.

Hier der Code:

def inventory_backupdriveclean(info):
  inventory = []
  for cleaning in info:
    inventory.append ( ( None, None ) )
  return inventory

def check_backupdriveclean(item, params, info):
  cleaning = int(info[0][0])
  if cleaning  == 2:
    return (0, „OK Cleaning not required“ )
  else:
    return (2, „CRITICAL Cleaning required“ )

check_info[„backupdriveclean“] = (check_backupdriveclean, „backupdriveclean“, 0, inventory_backupdriveclean)

snmp_info[„backupdriveclean“] = ( „.1.3.6.1.4.1.3764.1.10.10.11.3.1.12“, [ „1“ ] )