Neu Worker überwachung?

  • Wenn Ihr uns das erste Mal besucht, lest euch bitte zuerst die Foren-Regeln durch.

peterPan

Gut bekanntes Mitglied
16. Juni 2012
434
9
Berlin
#1
hi community,

ich hatte eigentlich per Aufgabenverwaltung den Worker per batch regelmäßig beenden und neustarten lassen.

Aber das taskkill ist wohl nicht so gut, falls das beenden mal direkt während des Abgleichs passiert.
Da aber nun nicht immer jemand einen Blick auf den Worker Status werfen kann und dieser sich ja alle paar tagen oder wochen mal aufhängt, wollte ich fragen, ob ihr eine möglichkeit kennt, den Worker automatisiert überwachen zu lassen? Falls er mal hängt, dass man sich um einen neustart kümmen kann...

tips und ideen wäre toll.
 

hula1499

Sehr aktives Mitglied
22. Juni 2011
2.527
161
#3
Sicher nicht die schönste und elleganteste Lösung:

Dienst installieren, den automatisch starten lassen (Forum Suche nutzen, Stichwort nssm).
Aufgabenplaner Task erstellen, Trigger einmal mit Wiederholung alle X-XX Minuten -> eine cmd erstellen mit: net start "deinNeuerDienst"

Für Backups solltest Ausnahmen erstellen, ein wenig mit Aufgabenplaner herumspielen.
 
Zustimmungen: peterPan

peterPan

Gut bekanntes Mitglied
16. Juni 2012
434
9
Berlin
#4
gibt es hier im forum eigentlich keine fertigen und erprobten batches ? :)
ich verstehe ja die Tips im Grunde... alle x min triggern, beendet er den dienst dann audh unsauber?
wie nen taskkill?

die Umsetzung für so ein weichtiges Thema hinterlässt irgendwie bauchweh

ich hatte mal so angefangen...
---------------
set ProgEXE=JTL- wawi.exe
TaskList /FI "IMAGENAME eq %ProgEXE%" 2>NUL | Find "%ProgEXE%" >NUL
IF %ERRORLEVEL% == 0 (
TASKKILL /IM JTL-Wawi.exe /T /F
timeout 60
GOTO Ende
)

:Ende
etc...
--------------

aber wie gesagt... das ist hart, wenn in dem moment grad nen Abgleich läuft...
 

hula1499

Sehr aktives Mitglied
22. Juni 2011
2.527
161
#5
gibt es hier im forum eigentlich keine fertigen und erprobten batches ? :)
Gibt es hier im Forum eigentlich keine Leute, die anständig lesen können?

Es wird der DIENST neu gestartet, sofern dieser nicht läuft, das hat an diesem Punkt nix mit beenden zu tun.
Du kannst das triggern problemlos so erweitern, dass dir gewisse Zeitfenster übrig bleiben, für Backup, Neustart udgl.
 

elevennerds.de

Sehr aktives Mitglied
23. September 2015
838
91
#6
Hallo,

ich würde versuchen hier nicht nur das Programm zu überwachen, sondern die Funktion des Programmes, da es ja immer wieder vorkommt, dass das PRogramm noch läuft, jedoch nicht mehr macht, was es machen soll.

Die Funktion des Workers besteht darin, die WAWI mit den Shops, Ebay und Amazon abzugleichen. Wenn sich nun in einem der drei Endpunkten eine Bestellung befindet, die älter als die ( Worker-Polling-Zeit + X Minuten) ist und noch nicht abgeholt wurde, dann scheint die Funktion des Workers gestört zu sein (Ja, beim Ebay-Abgleich kann es noch länger dauern). Hier würde ich den Worker jedoch nicht gleich neu starten, sondern mir per SMS oder App eine Meldung ausgeben lassen.

Am Beispiel JTL- Shop kann man dies sehr schön über die Tabelle tbestellung mit den Werten cAbgeholt und dErstellt einrichten (ein kleines PHP Skript, welches durch das Monitoring-Tool regelmäßig abgefragt wird). Mit der Ebay-API und der Amazon-API ist ähnliches sicherlich auch möglich.

MfG

Rene
 
Zustimmungen: peterPan

peterPan

Gut bekanntes Mitglied
16. Juni 2012
434
9
Berlin
#8
Hallo,

ich würde versuchen hier nicht nur das Programm zu überwachen, sondern die Funktion des Programmes, da es ja immer wieder vorkommt, dass das PRogramm noch läuft, jedoch nicht mehr macht, was es machen soll.

Die Funktion des Workers besteht darin, die WAWI mit den Shops, Ebay und Amazon abzugleichen. Wenn sich nun in einem der drei Endpunkten eine Bestellung befindet, die älter als die ( Worker-Polling-Zeit + X Minuten) ist und noch nicht abgeholt wurde, dann scheint die Funktion des Workers gestört zu sein (Ja, beim Ebay-Abgleich kann es noch länger dauern). Hier würde ich den Worker jedoch nicht gleich neu starten, sondern mir per SMS oder App eine Meldung ausgeben lassen.

Am Beispiel JTL- Shop kann man dies sehr schön über die Tabelle tbestellung mit den Werten cAbgeholt und dErstellt einrichten (ein kleines PHP Skript, welches durch das Monitoring-Tool regelmäßig abgefragt wird). Mit der Ebay-API und der Amazon-API ist ähnliches sicherlich auch möglich.

MfG

Rene
das klingt sehr gut. Die Wawi selbst zeigt ja an, wenn der Worker nen Fehler hat. Eventuell kann man den auslesen... aber ob dafür DB einträge erstellen werden ist halt fraglich...
ich weiß bisher nicht, wie die Wawi diesen Status ermittelt um ihn im Dashboard anzuzeigen.
an diesem Status könnte man ja nen Neustart auslösen, sofern es diesen irgendwo auszulesen gibt.
 

peterPan

Gut bekanntes Mitglied
16. Juni 2012
434
9
Berlin
#10
Die Daten aus dem Dashboard stammen aus der WAWI-DB Tabelle tWorkerInfo, sind also sehr leicht auszuwerten. Da sollte sich doch was basteln lassen.
dort befindet sich bei mir nur ein Timestamp von start /stop, dort wird wohl immer der letzte Abgleich eingetragen, jeweils von ebay, amazon und Shop... ob die Wawi daraus und dem eingestellten Intervall berechnet, ob deer worker fehlerhaft arbeitet?
 

elevennerds.de

Sehr aktives Mitglied
23. September 2015
838
91
#11
Dort findest Du die PID > damit kannst Du prüfen, ob der Prozess noch läuft. Dann findest Du die Startzeit des letzten Abgleichs und den Zeitpunkt, an dem der letzte Abgleich beendet worden ist. Somit hast Du alle Informationen zusammen um festzustellen, ob und welcher Ablgeich gerade läuft bzw. ob ein Abgleich hängt.
 
Zustimmungen: peterPan
2. Mai 2011
288
3
#12
Hallo zusammen,

ich habe in meinem Blog einen Eintrag "JTL-Wawi Worker als Dienst einrichten" erstellt. Eine Überwachung ist nur per Wawi Dashboard möglich. Das reicht in der Regel schon, da der Worker nur selten seinen Dienst einstellt. Eigentlich nur wenn irgentwas anderes schief läuft wie zum Beispiel "Multishoplizenz abgelaufen".

Grüße Arne
 

peterPan

Gut bekanntes Mitglied
16. Juni 2012
434
9
Berlin
#13
Dort findest Du die PID > damit kannst Du prüfen, ob der Prozess noch läuft. Dann findest Du die Startzeit des letzten Abgleichs und den Zeitpunkt, an dem der letzte Abgleich beendet worden ist. Somit hast Du alle Informationen zusammen um festzustellen, ob und welcher Ablgeich gerade läuft bzw. ob ein Abgleich hängt.
ich hab es kurz beobachtet bei einem Abgleich. Der Worker selbst hat eine eigene PID... wenn der ( shop)Abgleich startet,, kommt ein weiterer Prozess dazu, der eine eigene PID erzeugt und wenn alles gut läuft auch wieder endet.. diese PID wird auch in der tabelle hinterlegt, mit datum und zeit.

nun muss ich mal auf einen Fehler warten und dann prüfen ob dieser extra Prozess in der taskliste erscheint und auch bleibt.. alles in allem ein anfang um einer richtigen sauberen Lösung auf die Spur zu kommen... danke dropshipout
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
3.134
379
Berlin
#14
Ich lasse den Worker in bei meinen Kunden, direkt über nssm starten, ohne den Weg über die batch zu gehen, das läuft auf allen Systemen sehr stabil, freut mich das JTL ca. neun Jahre nach dem ersten nssm Beitrag nun einen Blog Eintrag geschrieben hat, somit ist es offiziell :)

Als ich das hier vorhin mit der Prüfung las, hatte ich auch gleich in der Datenbank geschaut, auf die Idee kam ich vorher noch far nicht, aber dann kann man dort gut die Zeiten von den abgleichen prüfen um das zwischendurch zu prüfen, ob alles laeuft.
 

peterPan

Gut bekanntes Mitglied
16. Juni 2012
434
9
Berlin
#15
ja, es wäre zumindest ne möglichkeit du schauen, ob der letzte abgleich über limit xy liegt und bei bedarf dann eine sms oder email zu schicken... das wäre ne tolle lösung
 

peterPan

Gut bekanntes Mitglied
16. Juni 2012
434
9
Berlin
#17
das wäre toll.. als frontend-schubse sind meine coding-kenntnise weniger als rudimentär... für ne batch reicht es dank google noch meist...
aber mit einer batch tabellen ergebnisse abfragen & vergleichen... da wirds bei mir schon dunkel... sofern das überhaupt geht... .. mit mailsend über ne batch ne mail verschicken wäre schon eher möglich...

Letztes Shopabgleich-Datum in Datei ausgeben
sqlcmd -S "PC\JTLWAWI" -U sa -P deinPasswort -d eazybusiness -h -1 -q "exit(set nocount on; SELECT dShopEnde FROM dbo.tWorkerInfo)" -o worker-check-result.txt

mailsend Gmail bsp:

mailsend1.19.exe -to "you@example.com" -from "me@example.com" -port 465 -ssl -v -auth -smtp "smtp.gmail.com" -user "you@gmail.com" -pass "password-phrase" -sub "JTL-Worker" -M "Worker checken"
 
Zuletzt bearbeitet:
29. Dezember 2009
14.540
210
#18
Das Problem ist weniger, dass der worker seinen Dienst kpl. einstellt, sondern dass er nicht das tut was er soll ... nämlich abgleichen.

Hatten letzten einen Fall, da trat aus heiterem Himmel ein sql-exec-Error auf ... aber ...
der worker behauptet steif und fest, er würde laufen UND abgleichen ... aber .. es kam nichts an.
Der Fehler war workerseitig nirgendwo sichtbar.
Erst nach ausschalten des Workers und manuellem Abgleich sah man den Fehler
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
3.134
379
Berlin
#19
ja aber man sieht in der DB wann er die letzten abgleiche abgeschlossen hat und wenn das Stunden sind, die er keine aktuelle Zeit hat, weiß man einer der drei Abgleiche hängt.

Das ist schon ein guter Anhaltspunkt, dann bekommt man im günstigstem Fall eine Nachricht und kann dann den Worker neu Starten.
Optimal wäre es wenn die Prüfung selbst, den Worker vorher versucht zu starten und erst eine Nachricht schickt wenn auch da der Abgleich hängt.
 
Zustimmungen: peterPan

Visitmedia | Marc

Offizieller Servicepartner
SPBanner
15. April 2014
1.612
39
Essen
#20
Hallo,

also die Anzeige im Dashboard, ist ausschließlich ein wenn der Worker zu lange läuft, wird er auf Fehlerhaft gesetzt. Daher meiner Meinung nach nicht sehr aussage kräftig :(
Ansonsten gilt ja, Worker Prozess, startet die Einzelnen unterprozesse, dessen PID in der Tabelle stehen, gerade diese Prozesse werden auch sauber immer wieder neu gestartet, hier ist dann nur interessant, wenn z.B. alle Shop Aktuallisierungen durch sind, und z.B. der Shop prozess noch läuft, dass da was nicht stimmt.

Gleiches liese sich sicherlich mit Amazon und Ebay umsetzen. Um so die Worker geschichten zu Monitoren. Zudem macht der Worker selber ja auch sachen, z.B. die Workflows, welche über den Worker laufen ausführen.

Zudem ist zu sagen, wenn man wie in den Scripten den Worker Prozess (jtl- wawi.exe WORKER) killt, dann würden die Arbeitsprozesse sofern aktiv) noch weiter laufen, und ihre arbeit erledigen. Der neu gestartete Worker, erkennt das noch Prozesse laufen, und weist darauf hin.
Ich denke auch der nnms wird unterm Strich nicht anders arbeiten. Weil es Technisch auch nicht anders möglich ist. Er Startet in einem Unter Prozess den Worker mehr nicht., Einzige was sein kann, dass er ihn als Abhängigen Prozess startet, was aber auch bedeutet, Stoppt der Service, stoppt der Worker sofort (z.B. bei Absturz) läuft es nicht als Abhängiger Prozess, würde der Worker weiter laufen, bis er sauber Terminiert wird.
Im übrigen, durch das Konstrukt des Workers, leider nicht das Optimum. Ich finde es da eher traurig, dass JTL es noch nicht geschaft hat selber aus dem Worker einen Service zu machen. Da es wirklich nicht sehr viel Code bedarf.