Abarbeitung der DPE Jobs Überwachen

Um sicherzustellen, dass der DLE-Server immer läuft, kann eine Serverüberwachnung eingerichtet werden. Diese prüft in regelmässigen Abständen, ob der Server noch Aufträge entgegennimmt und ob die DPE überfällige offene System-Todos hat. Konkret wird ein Ergebnis geprüft ob

  • Todo länger als 1 Stunde über Normalzeit aktiv ist und offen Termin schon mehr als 1 Stunde überfällig ist bzw. 5 Stunden überfällig ist, wenn noch eine andere Todo aktiv ist
  • Offene Todos mit 10 Ausführungs- oder Eskalations-Versuchen in den letzten 5 Tagen. Diese sind durch den Zähler deaktiviert.

Diese Einstellungen sind in einem Brick CheckServer verankert und können natürlich auf die Bedürfnisse angepasst werden. Im Fehlerfall wird ein E-Mail versendet.

 

HTML-Variante

 

Über eine URL kann geprüft werden, ob die DLE läuft und ob alle System-Todos aktuell sind:

URL:http://server:port/dle/checkserver.brick

Ergebnis wenn ok:

 

Ab DLE  2.1.2 kann mit einem Zusatz?format=json

URL:http://server:port/dle/checkserver.brick?format=json

eine Ausgabe im JSON-Format erreicht werden.

 

Unix Variante

Unter Unix wird dazu ein Cron-Job eingerichtet, der z.B. alle 30 Minuten zwischen 5-22 Uhr Montag bis Freitag läuft:

# Muster fuer eintrag in crontab
#
# -----------------------------------------------------------
### Jede halbe Stunde pfuefen, ob DLE-Server mit DPE noch richtig laeuft
0,30 5-22 * * 1-5 sh -c "JAVA_HOME=/usr;export JAVA_HOME;cd /opt/dle/DLE/scripts;./checkserver.sh" 1>/tmp/cron_dle_checkserver.log 2>&1
### DLE aufrufen ENDE
# -----------------------------------------------------------

Dieser Cron-Job startet ein Shellscript $DLE_HOME/scripts/checkserver.sh, in welchem die MAILTO-Adresse noch angepasst werden muss:

# Aufruf Brick zum Pruefen der Todos mit CallRemoteBrick
#
# 13.12.2010 rewi neu erstellt
# 27.07.2011 rewi Anpassen - mail, Uebergabe MailSender/Receiver/Server
MAILTO=rewi@vision-flow.at
MAILTO=/$MAILFROM
if [ "/$DLE_HOME" = "" ]
then
DLE_HOME=`pwd`/..
fi
if [ "/$JAVA_HOME" = "" ]
then
JAVA_HOME=/$DLE_HOME/java
fi
HOST=localhost
SERVER=`hostname`
DAT=`date +%y-%m-%d_%H:%M:%S`
# Eintrag aus ServerConfig.xml mit Port auslesen <Property name="Port" value="7000" />
PORT=` grep -i '"port"' ../server/ServerConfig.xml | cut -d= -f3 | cut -d\" -f2`
CALL_FOLDER=DLE:GeneralBricks
CALL_PARAM1="BASE:BrickName=CheckServer"
CALL_PARAM2="GLOBAL:EMailSender=/$MAILTO"
CALL_PARAM3="GLOBAL:EMailReceiver=/$MAILFROM"
CALL_PARAM4="GLOBAL:Server=/$SERVER"
CALL_OUTPUT=/$DLE_HOME/log/CheckServer.log
# /$JAVA_HOME/bin/java -jar ../dlestart.jar -CallBrick FOLDER=/$CALL_FOLDER OUTPUT=/$CALL_OUTPUT "/$CALL_PARAMS"
/$JAVA_HOME/bin/java -jar ../dlestart.jar -CallRemoteBrick HOST=/${HOST} PORT=/${PORT} FOLDER=/$CALL_FOLDER OUTPUT=/$CALL_OUTPUT "/$CALL_PARAM1" "/$CALL_PARAM2" "/$CALL_PARAM3" "/$CALL_PARAM4"
RC=/$?
if [ /$RC -ne 0 ]
then
RETCODE="-/$RC"
else
RETCODE=`grep "Returncode" /$CALL_OUTPUT | cut -d= -f2`
MSGCODE=`grep "ResultMessage" /$CALL_OUTPUT | cut -d= -f2`
MSGTEXT=`grep "Meldungstext" /$CALL_OUTPUT | cut -d= -f2`
fi
if [ "/$RETCODE" = "1" -a "/$MSGCODE" = "OK" ]
then
# mail -s "DLE OK: /$SERVER /$DAT" /$CALL_OUTPUT /$MAILTO
echo OK "/$DAT Returncode /$RETCODE Messagecode /$MSGCODE Messagetext /$MSGTEXT" >> /tmp/dle_checkserver.log
exit 0
else
echo Error "/$DAT Returncode /$RETCODE Messagecode /$MSGCODE Messagetext /$MSGTEXT" >> /tmp/dle_checkserver.log
mail -s "DLE: Returncode /$RETCODE Messagecode /$MSGCODE Messagetext /$MSGTEXT Server: /$SERVER" /$CALL_OUTPUT /$MAILTO
exit /$RETCODE
fi

Diese Shell startet über einen Remote-Aufruf auf dem Server den Brick Checkserver.sh in dem Ordner DLE:GeneralBricks.

 

Windows Variante

Unter Windows wird eine Aufgabe mit dem Aufgabenplanner eingerichtet, der z.B. täglich alle 30 Minuten läuft:

WINDOWS+R: taskschd.msc

 

Der Beispiel Batch Script wird mit der DLE ausgeliefert und befindet sich unter: $DLE\dlescripts\wget\CheckServer.bat. Dazu ist noch ein wget.exe Programm erforderlich ($DLE\tools\wget).

 

Beispiel:

rem CheckServer batch script example
@echo off
rem declare vars
set systemname=KUNDE_DEV
set mailrecip=hilfe_fehler@kunde.at
set mailtext=CheckServer.brick nicht erreichbar. DLE Log und Server Admin pruefen.
set mailsubj=KUNDE_DEV - CheckServer Fehler
set hostname=192.168.11.11
set port=8080
rem WebApp for CheckServer.brick
set appcontext=cu_kunde
set dlehome=C:\DLE
rem developers.vision-flow.at password to allow mail sending
set pass=T4$tatur$chlag
For /f "tokens=1-4 delims=. " %%a in ('date /t') do (set datestamp=%%c-%%b-%%a)

rem timeout for 5 secs, with 3 tries
"%dlehome%\tools\wget\wget.exe" -T "5" -t "3" -a "%dlehome%\log\CheckServerJob_%datestamp%.log" -O "%dlehome%\log\CheckServerResponse.html" "http://%hostname%:%port%/%appcontext%/CheckServer.brick"
rem Use findstr to verify wget call received a valid response. CheckServer.brick will send mail regarding DPE issues by itself. Only call mailfwd here if html result does not match a standard CheckServer.brick response. This means there is an issue with server/DB/DLE/etc.
findstr /m "Check-Result:" "%dlehome%\log\CheckServerResponse.html"
if %errorlevel%==1 (
    "%dlehome%\tools\wget\wget.exe" -T "5" -t "3" -a "%dlehome%\log\CheckServerJob_%datestamp%.log" --no-check-certificate --post-data "systemname=%systemname%&appcontext=%appcontext%&mailrecip=%mailrecip%&mailtext=%mailtext%&mailsubj=%mailsubj%&pass=%pass%" "https://developers.vision-flow.at/mailFwd.brick"
)