Promotic

PmRtManager jako WatchDog

Komponenta PmRtManager slouží pro zvýšení stability a bezpečnosti běžících aplikací (zejména aplikací PROMOTIC).
Aplikace PROMOTIC jsou velmi často vytvořeny tak, aby běžely 24 hodin denně 365 dnů v roce. Často jsou tyto aplikace umístěny na vzdálených pracovištích kde obsluha přijde jen velmi zřídka. Přitom je požadováno, aby se při jakékoliv poruše systém zotavil. V tom případě, zajištěním restartu aplikace nebo celého počítače.

K tomuto účelu slouží v softwarovém světě druh programu zvaný WatchDog (hlídací pes). Obvykle je to malý program, který slouží pro hlídaní jiných programů (v našem případě aplikací PROMOTIC). Pokud se aplikace nečekaně zastaví ("zasekne se", někdo ji zastaví, atd.), pak program WatchDog tuto aplikaci restartuje (ukončí ji a znovu ji spustí) nebo restartuje celý počítač. Po restartu počítače také WatchDog zajišťuje počáteční spuštění požadovaných aplikací. V systému PROMOTIC slouží jako WatchDog nástroj PmRtManager.exe (viz PmRtManager - Správce běžících aplikací).

Při svém spuštění PmRtManager přečte konfiguraci ze souboru PmRtManager.ini ve složce \GCfg. Pak spustí požadované (hlídané) aplikace (programy), přiřadí a nastaví jim požadované počáteční hodnoty čítačů a tyto čítače pak periodicky dekrementuje. Pokud některý čítač (counter) dosáhne hodnoty 0, pak PmRtManager předpokládá, že se aplikace "zasekla" a znovu ji restartuje (nebo restartuje celý počítač). Aby PmRtManager aplikaci PROMOTIC opakovaně nerestartoval, musí tato aplikace periodicky volat metodu Pm.WDogRefresh. Voláním této metody se čítače znovu nastaví na požadované počáteční hodnoty. Pokud aplikace volá metodu pravidelně, pak čítač nikdy nedosáhne hodnoty 0 (a tedy nikdy nerestartuje aplikaci).

Správce běžících aplikací PmRtManager může běžet buď jako služba Windows nebo jako obyčejná aplikace, nicméně spouštění, zastavování a hlídání běžících aplikací funguje stejným způsobem. Parametry programu viz PmRtManager jako služba Windows.
Příklad:
Příklad souboru PmRtManager.ini ve složce \GCfg (pro 2 programy):
[Global]
Period=1000
' Perioda dekrementace čítačů (v milisekundách)
Password=pm
' Heslo pro povolení ukončení PmRtManager.exe
WebServer=http://+:81/
' Nastaví port, na kterém pomocí HTTP lze monitorovat (pouze zobrazovat) činnost PmRtManager.
Pokud není nastaveno, pak se použije port 81.
  
[Program1]
' Název 1. hlídaného programu
Parameter=C:\Promotic\Apps\Aplikace1\Aplikace.pra
' Parametr pro 1. hlídaný program
RestartOtherProgram=2
' Pokud PmRtManager zavře 1. program, pak zavře i program s číslem uvedeným v této položce
StartDelay=5
' Prodleva mezi spuštěním PmRtManager.exe a spuštěním 1. programu. Hodnota je v jednotkách "Period".
IniCounter=1000
' Hodnota, která se zapíše do čítače při spuštění programu. Pokud je tato hodnota 0, pak program se nehlídá. Čítač se dekrementuje (snižuje o hodnotu 1) v periodě "Period".
StopDelay=5
' Prodleva mezi ukončením a znovuspuštěním programu (nebo restartem OS Windows). Hodnota je v jednotkách "Period".
RestartWindows=0
' Pokud 1. program po spuštění ani jednou nenastaví čítač a čítač dojde k 0, pak: pokud RestartWindows=1, pak se ihned restartuje Windows, pokud RestartWindows=0, pak se pokusí 1. program zastavit a znovu spustit.
RestartProgram=-1
' Počet pokusů, kolikrát se PmRtManager pokouší uzavírat a spouštět program než restartuje celý počítač. Pokud RestartProgram=-1, pak počet pokusů není omezen.
  
[Program2]
Name=C:\Winnt\System32\Calc.exe
Parameter=
RestartOtherProgram=0
StartDelay=0
IniCounter=0
StopDelay=5
RestartWindows=0
RestartProgram=0


Tipy:
- Pokud nechcete program hlídat, ale pouze spustit, pak nastavte položku IniCounter=0.
- Pro zabránění restartů Windows nastavte položku RestartWindows=0 a RestartProgram=-1.
- Chceme hlídat Program1. Program2 hlídat nechceme ale chceme ho zastavovat a spouštět v závislosti na Program1.

Řešení: V PmRtManager.ini zadejte v sekci [Program1] klíč RestartOtherProgram=2 a v sekci [Program2] klíč IniCounter=0.
- Pokud je povolena položka LogEnable=1, pak jsou události PmRtManager zapisovány do souboru PmRtManager.log, který se automaticky vytvoří ve složce, kde je umístěn soubor PmRtManager.exe.


Postup při hlídání programu:
Každý hlídaný program má svůj nezávislý čítač a každý program se může nacházet v jiné fázi (v jiném stavu hlídání). Fázi programu lze zjistit v hlavním okně programu PmRtManager.exe nebo pomocí HTTP monitorování.
 
Následuje popis fází programu:
 
Ini - Inicializace proměnných. Pak se přejde do fáze StartDelay.
StartDelay - Pokud je zadano nenulové zpoždění StartDelay, pak PmRtManager čeká tuto dobu. Po uplynutí této doby (nebo ihned, pokud StartDelay není zadán nebo je 0), spustí PmRtManager příslušný program a naplní jemu přiřazený čítač hodnotou IniCounter. Pokud IniCounter je nenulový, pak přejde se do fáze Control. Pokud IniCounter není zadán nebo je nulový (tzn. program nemá být hlídán), pak přejde se do fáze NoControl
Control - PmRtManager pravidelně snižuje čítač s periodou zadanou v parametru Period (v PmRtManager.ini). Při snížení čítače na 0 (to znamená, že hlídaný program nestačil opětovně nastavit tento čítač), provede akci v závislosti na parametrech RestartWindows a RestartProgram (viz příklad PmRtManager.ini níže). Podle toho se přejde do fáze RequestStop nebo RestartWin.
RequestStop - PmRtManager program zastaví. Pak se přejde do fáze StopDelay.
StopDelay - PmRtManager čeká po ukončení programu (před jeho opětovným spuštěním) dobu StopDelay. Po ukončení této doby se přejde do fáze Ini.
NoProgram - Program nebyl v PmRtManager.ini zadán. PmRtManager obsluhu pro tento program zastavil.
NoControl - Program byl spuštěn a není hlídán. Položka IniCounter byla 0. PmRtManager může tento program ale zastavit a znovu spustit v závislosti na jiném programu a položce RestartOtherProgram.
RestartWin - Budou restartována OS Windows.


Upozornění!
 
Správce běžících aplikací PmRtManager (nový WatchDog) zcela nahrazuje původní program PmWDog.exe, který už není součástí instalace PROMOTIC. Základní konfigurátory uvnitř konfiguračního souboru jsou shodné pro nový i starý WatchDog, proto je případný přechod na nový WatchDog jednoduchý. V zásadě tedy stačí převzít starý konfigurační soubor PmWDog.ini, přejmenovat ho na název PmRtManager.ini a nakopírovat ho do složky s PmRtManager.exe programem.

Poznámka!
 
Vlastní spouštěcí soubor (např. soubor autostart.bat) je nutno uložit do složky obsahující soubor PmRtManager.exe a jeho zástupce do Windows složky Start Up ('Při spuštění'). Viz Program RunLater.

Historie:
Pm8.02.08: Vytvořeno
© MICROSYS, spol. s r.o.