Promotic

PmRtManager jako WatchDog

Komponent PmRtManager służy do podwyższenia stabilności i bezpieczeństwa urochomionych aplikacji (zwłaszcza aplikacji PROMOTIC).
Aplikacje PROMOTIC są bardzo często wytwarzane tak, aby działały 24 godziny na dobę przez 365 dni w roku. Często takie aplikacja są umieszczone w odległych punktach gdzie obsługa przychodzi bardzo rzadko. Przy tym wszystkim jest wymagane, żeby przy jakiejkolwiek usterce system zregenerował się. W tym przypadku, żeby aplikacja (lub komputer) uruchomiła się ponownie.

Do tych celów w świecie programowania jest przeznaczony rodzaj programów użytkowych zwany WatchDog (pilnujący pies). Zazwyczaj jest to mały program, który służy do pilnowania innych oprogramowań (w naszym przypadku aplikacji PROMOTIC). Jeżeli aplikacja nioczekiwanie się zatrzyma ("zawiesi się", ktoś ją wyłączy, itd.), wtedy program WatchDog tę aplikację zrestartuje (wyłączy ją i ponownie uruchomi) lub zrestartuje cały komputer. Po zrestartowaniu komputera WatchDog również zapewnia początkowe uruchomienie żądanych aplikacji. W systemie PROMOTIC jest do tego celu przeznaczony program użytkowy PmRtManager.exe (patrz PmRtManager - Manager uruchomionych aplikacji).

Podczas swego uruchomienia PmRtManager odczyta ustawienia z pliku PmRtManager.ini w folderze \GCfg. Następnie PmRtManager uruchomi wymagane (pilnowane) aplikacje (programy), przyszereguje i ustawi im liczniki i następnie te liczniki periodycznie obniża. Jeżeli któryś z liczników (counter) osiągnie wartość 0, wtedy PmRtManager zakłada, że aplikacja "zawiesiła się" i ponownie ją zrestartuje (lub zrestartuje cały komputer). Żeby PmRtManager powtórnie nie restartował aplikacji PROMOTIC, ta powinna z kolei regularnie wywołać metodę Pm.WDogRefresh. Przez wywołanie tej metody licznik ustawi się ponownie na wymaganą wartość początkową. Jeżeli aplikacja wywołuje tę metodę regularnie, wtedy PmRtManager nigdy nie obniży wartości licznika do 0 (a więc nigdy nie zrestartuje aplikacji).

Menedżer uruchomionych aplikacji PmRtManager może być uruchomiony jako usługa Windows lub jako zwykła aplikacja, jednak uruchamianie, zatrzymywanie oraz pilnowanie uruchomionych aplikacji działa identycynie. Parametry programu patrz PmRtManager jako usługa Windows.
Przykład:
Przykład pliku PmRtManager.ini w folderze \GCfg (dla 2 programów):
[Global]
Period=1000
' Period obniżania liczników (w milisekundach)
Password=pm
' Hasło do zezwolenia wyłączenia PmRtManager.exe
WebServer=http://+:81/
' Ustawia port, na którym będzie możliwe za pomocą HTTP monitorować (tylko wyświetlać) działanie PmRtManager.
Jeżeli nie jest ustawione, wtedy zostanie zastosowany port 81.
  
[Program1]
' Nazwa 1. pilnowanego programu
Parameter=C:\Promotic\Apps\Aplikacja1\Aplikacja.pra
' Parametr dla 1. pilnowanego programu
RestartOtherProgram=2
' Jeżeli PmRtManager zakończy 1. program, wtedy zakończy się również program z numerem przedstawionym na tej pozycji
StartDelay=5
' Zwłoka pomiędzy uruchomieniem PmRtManager.exe i uruchomieniem programu 1. Wartość jest w jednostkach "Period".
IniCounter=1000
' Wartość, która zostanie zapisana do licznika przy uruchomieniu programu. Jeżeli wartość ta jest równa 0, wtedy program nie jest pilnowany. Licznik obniża wartość o 1 w okresie "Period".
StopDelay=5
' Zwłoka pomiędzy zakończeniem i ponownym uruchomieniem programu (lub restartem SO Windows). Wartość jest w jednostkach "Period".
RestartWindows=0
' Jeżeli 1. program po uruchomieniu ani razu nie ustawi licznika i licznik dojdzie do 0, wtedy: jeżeli RestartWindows=1, wtedy zaraz zostanie zrestartowany komputer, jeżeli RestartWindows=0, wtedy spróbuje 1. program zakończyć i uruchomić ponownie.
RestartProgram=-1
' Ilość prób, ile razy PmRtManager spróbuje zakończyć i ponownie uruchomić program zanim zrestartuje cały komputer. Jeżeli RestartProgram=-1, wtedy ilość prób nie jest ograniczona.
  
[Program2]
Name=C:\Winnt\System32\Calc.exe
Parameter=
RestartOtherProgram=0
StartDelay=0
IniCounter=0
StopDelay=5
RestartWindows=0
RestartProgram=0


Wskazówki:
- Jeżeli nie chcesz pilnować biegu programu tylko chcesz go uruchomić, wtedy ustaw IniCounter=0.
- W celu zabronienia restartowania Windows ustaw pozycje RestartWindows=0 oraz RestartProgram=-1.
- Chcesz pilnować bieg Program1. Program2 nie chcesz pilnować tylko chcesz go zatrzymywać i ponownie uruchamiać w zależności od Program1.

Rozwiązanie: W PmRtManager.ini wprowadź w sekcji [Program1] klucz RestartOtherProgram=2 a następnie w sekcji [Program2] ustaw klucz IniCounter=0.
- Jeżeli jest ustawiona pozycja LogEnable=1, wtedy są zdarzenia PmRtManager zapisywane do pliku PmRtManager.log, który wytworzy się automatycznie w folderze, w którym znajduje się plik PmRtManager.exe.


Poszczególne fazy pilnowania programu:
Każdy program posiada swój niezależny licznik i każdy program może znajdować się w innej fazie (w innym stanie pilnowania). Fazy można stwierdzić w głównym erkanie programu PmRtManager.exe lub przy pomocy monitoringu HTTP.
 
Nastzępuje opisanie poszczególnych faz programu:
 
Ini - Inicjalizacja zmiennych. Następnie przejdzie do fazy StartDelay.
StartDelay - Jeżeli jest wprowadzona wartość opóźnienia StartDelay różna od zera, wtedy PmRtManager czeka określony czas. Po upłynięciu tego czasu (lub zaraz, jeżeli StartDelay nie jest wprowadzony lub jest równy 0), PmRtManager uruchomi odpowiedni program i napełni jemu przyszeregowany licznik wartością IniCounter. Jeżeli IniCounter jest różny od 0, wtedy przejdzie do fazy Control. Jeżeli IniCounter nie jest wprowadzony lub jego wartość wynosi 0 (tzn. program nie ma być pilnowany), wtedy przejdzie do fazy NoControl
Control - PmRtManager regularnie obniża wartość licznika o częstotliwości określonej w parametrze Period (w PmRtManager.ini). Przy obniżeniu wartości licznika do 0 (to znaczy, że pilnowany program niezdążył ponownie ustawić tego licznika), wykona czynność w zależności od parametrów RestartWindows oraz RestartProgram (patrz przykład PmRtManager.ini poniżej). Według tego przejdzie się do fazy RequestStop lub RestartWin.
RequestStop - PmRtManager zakończy program. Następnie przejdzie do fazy StopDelay.
StopDelay - PmRtManager czeka na zakończenie programu (przed jego ponownym uruchomieniem) okres określony w StopDelay. Po zakończeniu tego okresu przejście do fazy Ini.
NoProgram - Program nie został wprowadzony w PmRtManager.ini. PmRtManager zatrzymał obsługę tego programu.
NoControl - Program został uruchomiony i nie jest pilnowany. Pozycja IniCounter była ustawiona na 0. PmRtManager może ten program zakończyć i ponownie uruchomić w zależności od innego programu i pozycji RestartOtherProgram.
RestartWin - SO Windows zostanie ponownie uruchomiony.


Uwaga!
 
Menedżer uruchomionych aplikacji PmRtManager (nowy WatchDog) w pełni zastępuje poprzedni program PmWDog.exe, który już nie jest częścią składową pakietu instalacyjnego PROMOTIC. Podstawowe konfiguratory wewnątrz pliku konfiguracyjnego są zgodne dla obu wersji PmWDog.exe, dlatego ewentualne przejście na nową wersję WatchDog jest proste. W sumie wystarczy zkopiować stary plik konfiguracyjny PmWDog.ini, zmienić jego nazwę na PmRtManager.ini i zkopiować go do foldera z programem PmRtManager.exe.

Notatka!
 
Własny plik uruchamiający (np. plik autostart.bat) należy zapisać do foldera zawierającym plik PmRtManager.exe a jego skrót w Windows folderze Autostart ('Po uruchomieniu'). Patrz Oprogramowanie RunLater.

Historia:
Pm8.02.08: Wytworzono
© MICROSYS, spol. s r.o.