Virtlab:LoggingDebugging

Z VirtlabWiki

(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
Verze z 19:02, 25. 7. 2007
Gry72 (Diskuse | příspěvky)

← Předchozí porovnání
Verze z 19:14, 25. 7. 2007
Gry72 (Diskuse | příspěvky)

Následující porovnání →
Řádka 1: Řádka 1:
== Logování a debugging == == Logování a debugging ==
-Pro odladění, sledování provozu a řešení incidentů celého distribuovaného systému virtuální laboratoře je nutný konzistentní systém '''ukládání informací o běhu na různých úrovních''', které bude možné snadno '''automaticky vyhodnocovat a informovat příslušné správce o kritických nebo nestandardních stavech'''. Informace o běhu všech komponent (serverů) lokality budou '''shromažďovány na [http://www.scrambler.net/syslog.htm Syslog] serveru dané lokality''', kde budou '''vyhodnocovány příslušnými skripty a podle nastavených pravidel případně přeposílány emailem na správné zodpovědné správce'''. Logovací soubory syslog serverů všech lokalit budou zpřístupněny správcům všech ostatních lokalit (patrně přes WWW). Z důvodu snadné rozšiřitelnosti bude použit Syslog Next Generation (Syslog-ng).+Pro odladění, sledování provozu a řešení incidentů celého distribuovaného systému virtuální laboratoře je nutný konzistentní systém '''ukládání informací o běhu na různých úrovních''', které bude možné snadno '''automaticky vyhodnocovat a informovat příslušné správce o kritických nebo nestandardních stavech'''. Informace o běhu všech komponent (serverů) lokality budou '''shromažďovány na [http://www.scrambler.net/syslog.htm Syslog] serveru dané lokality''', kde budou '''vyhodnocovány vhodnými skripty nebo prostředky syslog démona a podle nastavených pravidel případně přeposílány emailem na správné zodpovědné správce'''. Logovací soubory syslog serverů všech lokalit budou zpřístupněny správcům všech ostatních lokalit (patrně přes WWW).
 + 
 +Z důvodu snadné implementace návazných rozšiření bude použit Syslog Next Generation (Syslog-ng).
Jednotlivé servery budou zasílat debug informace na syslog jednotně pomocí k tomu účelu vytvořené univerzální funkce (C), kterou budou formou knihovny přilinkovávat (PHP bude patrně volat jako externí program). Funkce předá zprávu Syslog serveru lokality (démonu Syslog-ng) zápisem do souboru (named pipe), na kterém Syslog démon poslouchá. V případě, že budou servery distribuovány na více strojů, bude na každém z nich instalován proxy syslog démon, který bude nastaven tak, aby zprávy pouze přeposílal na hlavní syslog démon lokality. Jednotlivé servery budou zasílat debug informace na syslog jednotně pomocí k tomu účelu vytvořené univerzální funkce (C), kterou budou formou knihovny přilinkovávat (PHP bude patrně volat jako externí program). Funkce předá zprávu Syslog serveru lokality (démonu Syslog-ng) zápisem do souboru (named pipe), na kterém Syslog démon poslouchá. V případě, že budou servery distribuovány na více strojů, bude na každém z nich instalován proxy syslog démon, který bude nastaven tak, aby zprávy pouze přeposílal na hlavní syslog démon lokality.
 +=== Debug hlášení pro základní ladění ===
 +Do informací zasílaných na Syslog nebudeme míchat debug hlášení pro základní ladění (trasování kódu programu, typicky posílané na stdout). Aby program neobsahoval množství těchto zapomenutých ladících printf(), zavedeme konvenci, že veškerá takováto hlášení budou vypisovány pouze funkcí perror (XXXXXXX), kterou dokážeme snadno ve zdrojových kódech na základě názvu v případě zapomenutí nalézt a odstranit.
=== Formát logovacích zpráv === === Formát logovacích zpráv ===
Řádka 26: Řádka 30:
-Používané facilities:+Používané facilities a synonyma použivaná pro jednotlivé facilities jsou v souboru virtlab_facilities.h
-*user 
-*local0 
-*local1 
-*local2 
-*local3 
-*local4 
-*local5 
-*local6 
-*local7 
- 
-Synonyma použivaná pro jednotlivé facilities jsou v souboru virtlab_facilities.h 
*FAC_WWWAPP (local0) - webová aplikace řídícího serveru lokality (GUI, mapovací algoritmus) *FAC_WWWAPP (local0) - webová aplikace řídícího serveru lokality (GUI, mapovací algoritmus)
*FAC_RSVSRV (local1) - rezervační server *FAC_RSVSRV (local1) - rezervační server
Řádka 44: Řádka 37:
*FAC_CONFSRV (local3) - konfigurační server *FAC_CONFSRV (local3) - konfigurační server
*FAC_CONFSRV (local4) - aktivátor konfigurací a konfigurační skripty vč. VLANStore *FAC_CONFSRV (local4) - aktivátor konfigurací a konfigurační skripty vč. VLANStore
 +*FAC_TUNSRV (local5) - tunelovací server
 +*FAC_TUNSRV (local5) - mazací server
 +
 +ZDE MAME DOST MALOU REZERVU, NENI V SYSLOG-NG TECH FACILITIES VETSI ROZSAH ?
 +
 +
 +
 +
 +
Řádka 80: Řádka 82:
U PHP kódu předpokládáme nastavení úrovně debugování ve vhodném .php souboru, který se pomocí include připojuje ke všem .php souborům (soubor s konstantami, soubor s autentizací ?) U PHP kódu předpokládáme nastavení úrovně debugování ve vhodném .php souboru, který se pomocí include připojuje ke všem .php souborům (soubor s konstantami, soubor s autentizací ?)
 +
 +
 +
 +=== Skripty/konfigurace syslog-ng pro přeposílání kritických zpráv administrátorům příslušných lokalit ===
 +=== Konfigurace lokálních proxy syslog-ng pro přeposílání zpráv na hlavní syslog server lokality ===

Verze z 19:14, 25. 7. 2007

Obsah

Logování a debugging

Pro odladění, sledování provozu a řešení incidentů celého distribuovaného systému virtuální laboratoře je nutný konzistentní systém ukládání informací o běhu na různých úrovních, které bude možné snadno automaticky vyhodnocovat a informovat příslušné správce o kritických nebo nestandardních stavech. Informace o běhu všech komponent (serverů) lokality budou shromažďovány na Syslog serveru dané lokality, kde budou vyhodnocovány vhodnými skripty nebo prostředky syslog démona a podle nastavených pravidel případně přeposílány emailem na správné zodpovědné správce. Logovací soubory syslog serverů všech lokalit budou zpřístupněny správcům všech ostatních lokalit (patrně přes WWW).

Z důvodu snadné implementace návazných rozšiření bude použit Syslog Next Generation (Syslog-ng).

Jednotlivé servery budou zasílat debug informace na syslog jednotně pomocí k tomu účelu vytvořené univerzální funkce (C), kterou budou formou knihovny přilinkovávat (PHP bude patrně volat jako externí program). Funkce předá zprávu Syslog serveru lokality (démonu Syslog-ng) zápisem do souboru (named pipe), na kterém Syslog démon poslouchá. V případě, že budou servery distribuovány na více strojů, bude na každém z nich instalován proxy syslog démon, který bude nastaven tak, aby zprávy pouze přeposílal na hlavní syslog démon lokality.

Debug hlášení pro základní ladění

Do informací zasílaných na Syslog nebudeme míchat debug hlášení pro základní ladění (trasování kódu programu, typicky posílané na stdout). Aby program neobsahoval množství těchto zapomenutých ladících printf(), zavedeme konvenci, že veškerá takováto hlášení budou vypisovány pouze funkcí perror (XXXXXXX), kterou dokážeme snadno ve zdrojových kódech na základě názvu v případě zapomenutí nalézt a odstranit.

Formát logovacích zpráv

Formát logovacích zpráv je částečně předurčen formátem používaných Syslogem.

Úrovně logování

Úrovně logování (priority zpráv) částečně předurčeny formátem používaných Syslogem.

  • LOG_EMERG (system is unusable)
  • LOG_ALERT (action must be taken immediately)
  • LOG_CRIT (critical conditions)
  • LOG_ERR (error conditions)
  • LOG_WARNING (warning conditions)
  • LOG_NOTICE (normal, but significant, condition)
  • LOG_INFO (informational message)
  • LOG_DEBUG (debug-level message)

Z priorit Syslogu využíváme následující úrovně:


Používané facilities a synonyma použivaná pro jednotlivé facilities jsou v souboru virtlab_facilities.h

  • FAC_WWWAPP (local0) - webová aplikace řídícího serveru lokality (GUI, mapovací algoritmus)
  • FAC_RSVSRV (local1) - rezervační server
  • FAC_CONSRV (local2) - konzolový server
  • FAC_CONFSRV (local3) - konfigurační server
  • FAC_CONFSRV (local4) - aktivátor konfigurací a konfigurační skripty vč. VLANStore
  • FAC_TUNSRV (local5) - tunelovací server
  • FAC_TUNSRV (local5) - mazací server

ZDE MAME DOST MALOU REZERVU, NENI V SYSLOG-NG TECH FACILITIES VETSI ROZSAH ?






Sjednocený formát textů logovaných zpráv

Knihovní funkce pro logování

man logger man 3 syslog: void openlog(const char *ident, int option, int facility); openlog("msg-prepend-string",LOG_NDELAY|LOG_CONS|LOG_PID, int facility (LOG_USER)); void syslog(FACILITY | PRIORITY , const char *format, ...); man 3 setlogmask: int setlogmask(int mask); - bitovým součtem se určí úrovně, které se mají funkcí syslog() skutečně logovat

A  process  has a log priority mask that determines which calls to sys-
      log(3) may be logged. All other calls  will  be  ignored.   Logging  is
      enabled for the priorities that have the corresponding bit set in mask.
      The initial mask is such that logging is enabled for all priorities.



Abychom dosáhli jednotné a pro programátory bezpracné nastavení úrovně logování u každého programu,

U PHP kódu předpokládáme nastavení úrovně debugování ve vhodném .php souboru, který se pomocí include připojuje ke všem .php souborům (soubor s konstantami, soubor s autentizací ?)


Skripty/konfigurace syslog-ng pro přeposílání kritických zpráv administrátorům příslušných lokalit

Konfigurace lokálních proxy syslog-ng pro přeposílání zpráv na hlavní syslog server lokality

Osobní nástroje