Promotic
WikipediaLinkedInYoutubeTwitterFacebook

PmRtManager jako WatchDog

Komponenta PmRtManager slouží pro zvýšení stability a bezpečnosti běžících aplikací (zejména PROMOTIC aplikací). Aplikace systému 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 tomto 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). Většinou je to malý program, který slouží pro hlídaní jiných programů (v našem případě PROMOTIC aplikací). Pokud se aplikace nečekaně zastaví ("zasekne se", někdo ji zastaví, atd.), 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 program PmRtManager.exe (viz PmRtManager - správce běžících aplikací).
 
Při svém spuštění si PmRtManager vyčte konfiguraci z PmRtManager.ini souboru. Pak spustí požadované (hlídané) 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, PmRtManager předpokládá, že se aplikace "zasekla" a znovu ji restartuje (nebo restartuje celý počítač). Aby PmRtManager PROMOTIC aplikaci opakovaně nerestartoval, musí tato aplikace pravidelně 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ě, potom čí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 OS 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.
Příklad:
Příklad PmRtManager.ini souboru (pro 2 programy):
[Global]
Period=1000
' Perioda v ms dekrementace čítačů.
Password=pm
' Heslo pro povolení ukončení PmRtManager.exe.
LogDir=c:\pm\tools\PmRtManager
' Cesta ke složce, ve které bude vznikat LOG soubor. Pokud se neuvede, bude LOG soubor vznikat ve složce s PmRtManager.exe programem.
WebServer=http://+:81/
' Určení portu, na kterém bude možno pomocí HTTP monitorovat (pouze zobrazovat) činnost PmRtManager. Pokud se neuvede, použije se port 81.
  
[Program1]
Name=C:\Pm\Promotic.exe
' Název 1.hlídaného programu.
Parameter=C:\Proj\Tst.pra
' Parametr pro 1.hlídaný program.
RestartOtherProgram=2
' Pokud PmRtManager uzavře 1.program, uzavř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, 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 počítače). Hodnota je v jednotkách "Period".
RestartWindows=0
' Pokud 1.program po spuštění ani jednou nenastaví čítač a čítač dojde k 0 potom: když RestartWindows=1 ihned se restartuje počítač když RestartWindows=0 pokusí se 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, potom 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 nechceme program hlídat, ale pouze spustit, zadáme položku IniCounter=0.
- Pro zabránění restartů počítače zadáme 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 uvedeme v sekci [Program1] klíč RestartOtherProgram=2 a v sekci [Program2] klíč IniCounter=0.

- Pokud je povolena položka LogEnable=1 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 zadaná nenulová prodleva 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ý, přejde se do fáze Control. Pokud IniCounter není zadán nebo je nulový (tzn. program nemá být hlídán), 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 (tzn. ž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í konfigurační položky uvniř 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 jej na názvev PmRtManager.ini a nakopírovat jej do složky s PmRtManager.exe programem.
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice