Co to je WLDF a jak mi to pomůže
WLDF pomáhá odpovědět na záludné otázky které
                  dávají lidé z provozu vývojářům poté co se spustí
                  aplikace do produkce. Otázky jako „proč je ta
                  aplikace tak pomalá?“, „proč potřebuje tolik paměti?“
                  nebo „co se v aplikaci vlastně děje?“ atd.
WLDF to umožňuje pomocí aplikačních sledovačů,
                  které se připojí buď pomocí JMX rozhraní, AOP do
                  běžícího kódu nebo filtrováním log souborů. Náhledem
                  do aktuálního stavu konfigurace aplikace, jejich
                  aktuálních dat a historického vývoje klíčových
                  nastavených parametrů je možné vědět o aplikaci více
                  informací. Takže budeme moct lépe odpovědět na otázky
                  lidí z provozu.
WLDF komponenty
WLDF runtime část se skládá v podstatě ze dvou
                  hlavních komponent: sledovače (watchers) a notifikace
                  (notification). Sledovače sledují chod severu z
                  kolektoru podle nastavených pravidel a posílají
                  notifikace.
Sledování se dělá pomocí kolektorů (collectors)
                  nahlížejících na log soubory, pomocí JMX rozhraní
                  nebo pomocí vloženého kódu do aplikace. Jestli je
                  nějaká z podmínek sledovače splněna, tak se posílá
                  notifikace buď pomocí E-mailu, JMS, JMX a další, nebo
                  se udělá diagnostický náhled. Data se podle potřeby
                  ukládají do archivu pomocí Archivátoru (Archiver),
                  který je ukládá do souborů nebo databáze.

                
WLDF má ještě navíc část pro analýzu výsledků (Data
                  Accessor) a vytváření diagnostických náhledů
                  (Diagnostic image capture) na konfiguraci serveru.


Všechno se to konfiguruje ve WebLogic konzole a
                  ukládá do konfigurace serveru. Pro přístup k
                  historickým náhledům je potřeba doinstalovat
                  rozšíření konzole. Popis viz dále.
Sledování chodu serveru
Ke sledování chodu se používají Sledovače (Watches)
                  v oddělených vláknech. Ty fungují i v případě, že je
                  Vaše aplikace přetížena. Sledovače můžou sledovat jak
                  JMX data, log soubory nebo instrumentační data.
Vlastnosti sledovačů se nastavují pomocí podmínek
                  za kterých se spustí nějaká notifikace.
Příklady podmínek (pro jednoduchost jako fragment
                  XML, i když nastavování je ve WEB konzole):
- JMX podmínka, která bude splněná, když bude na
 serveru otevřeno 10 nebo více soketů:
<watch>
<name>myWatch</name>
<enabled>true</enabled>
<rule-type>Harvester</rule-type>
<rule-expression>${com.bea:Name=myserver,Type=ServerRuntime//SocketsOpenedTotalCount} >= 10</rule-expression>
<alarm-type>AutomaticReset</alarm-type>
<alarm-reset-period>60000</alarm-reset-period>
<notification>myMailNotif,myJMXNotif,mySNMPNotif</notification>
</watch>
- Nebo podmínka pro hledání log souboru a hledání
 chyby BEA-000360 v něm:
<watch>
<name>myLogWatch</name>
<rule-type>Log</rule-type>
<rule-expression>MSGID='BEA-000360'</rule-expression>
<severity>Info</severity>
<notification>myMailNotif2</notification>
</watch>
- Další podmínka pro sledování instrumentovaného
 kódu a aplikačních dat v něm:
<watch>
<name>myInstWatch</name>
<enabled>true</enabled>
<rule-type>EventData</rule-type>
<rule-expression>(PAYLOAD > 100000000) AND (MONITOR = 'Servlet_Around_Service')</rule-expression>
<alarm-type xsi:nil="true"></alarm-type>
<notification>mySMTPNotification</notification>
</watch>
Posílaní notifikací
Když je splněna podmínka v konfiguraci sledovače,
                  tak se spustí notifikace v něm nadefinovaná.
                  Notifikace může být například zavoláni JMX, poslani
                  zprávy do JMS, poslání emailu, vytvoření SNMP
                  události nebo vytvoření diagnostického náhledu.
Příklad E-mail notifikace:
<smtp-notification>
<name>myMailNotif2</name>
<enabled>true</enabled>
<mail-session-jndi-name>myMailSession</mail-session-jndi-name>
<subject>WebLogic diagnostic message</subject>
<recipient>username@emailservice.com</recipient>
</smtp-notification>
WLDF-QL jazyk pro psaní podmínek monitorování
                  serveru
WLDF-QL (Query language) je jednoduchý jazyk
                  podobný SQL pro popis podmínek WLF frameworku.
                  Obsahuje operátory, literály a proměnné. Mezi
                  operátory patří klasické AND, OR, NOT, (, ), >,
                  <, LIKE, IN atd.
Literály jsou jakékoli konstanty. Řetězce jsou v
                  uvozovkách. Znak „_“ znamená jakýkoli řetězec
                  (wildcard) a pomocí znaku „\“ se vkládají speciální
                  znaky. Reference na Java typy se dá také použít.
Proměnné představují jak ty které si v kódu můžete
                  vytvořit samy a taky ty, které reprezentují data z
                  aplikačního servru a jsou naplňovány dynamicky. Mezi
                  globální proměnné naplňované serverem patří například
                
- SERVER – jméno serveru
- SUBSYSTEM – subsystém serveru, jako JMS, JDBC
 atd
- THRED – jméno thredu (vlákna) ve kterém kód běží
- USERID – ID uživatele
- a další
                  Pro instrumentation jsou k dispozici další proměnné
                  jako:
- CLASSNAME – jméno třídy jointpointu
- RETVAT – návratová hodnota jointpointu
- LINENUM – číslo řádku ve zdrojáku který se právě
 sleduje
- a další
Pro zjednodušení práce s WLDF je možné využít taky
                  knihoven monitorů a akcí. Ty jsou jak pro oblast
                  serveru i aplikace. Například monitor
                  EJB_Before_EntityEjbSemanticMethods je spuštěn před
                  všemy set* a get* metodami entity beanů.
                  Pro kompletní popis viz WLDF-QL referenční manuál: http://e-docs.bea.com/wls/docs92/wldf_configuring/appendix_query.html
Mbean server harvester sledovač
MBean harvester umožňuje sledovat všechny Mbean
                  typy, instance a atributy mbeanů označené jako
                  harvestovatelné a běžící na tom samém serveru. Seznam
                  všech těchto beanů poskytuje
                  WLDFHarvesterRuntimeMBean který je součástí WLDF.
Pro konfigurace harvesteru je potřeba vybrat
                  mbeany, které se budou sledovat a interval, ve kterém
                  se bude sledovat. Příklad definice diagnostického
                  modulu který sleduje ServerRuntimeMBean každých 5
                  sekund:
<harvester>
<enabled>true</enabled>
<sample-period>5000</sample-period>
<harvested-type>
<name>weblogic.management.runtime.ServerRuntimeMBean</name>
</harvested-type>
<harvested-type>
<name>myMBeans.MySimpleStandard</name>
<harvested-instance>myCustomDomain:Name=myCustomMBean1</harvested-instance>
<harvested-instance>myCustomDomain:Name=myCustomMBean2</harvested-instance>
</harvested-type>
</harvester>
Instrumentation sledovač
Instrumentační sledovač umožňuje nahlížet na běžící
                  kód a jeho data za chodu aplikace. Používá na to
                  prostředků manipulace s java kompilovaným kódem,
                  všeobecně známým jako „bytecode instrumentation“.
                  Práce s ním a jeho konfigurace je trochu složitější.
                  Pro jeho pochopení je potřeba mít základy Aspect
                  Oriented Programing (AOP). Pro jeho popis se používá
                  speciální terminologie přezvaná z AOP a rozšířená o
                  prostředí aplikačního serveru.
Instrumetation Scope popisuje rozsah v kterém se
                  kód bude měnit, jako sever, cluster, concept, servis,
                  configuration. Scope je zapsaný v konfiguraci každého
                  monitoru
- Jointpoint
 je vstupní bod ve třídě která se sleduje
- Pointcut je formulace která popisuje co se
 bude v kódu dít když se narazí na jointpoint
- Diagnostic location je relativní pozice v
 kódu kde se bude dít diagnostická aktivita.
 Například before (před), after (po), around (kolem)
- Diagnostic
 monitor je diagnostický kód který sleduje
 aplikační kód v místě jointpointu. Monitor má svůj
 scope. WLDF poskytuje knihovnu monitorů, viz níže.
- Diagnostic
 action – akce která se vykoná v propojení s
 diagnostickým monitorem
 
Příklad nastavení instrumentačního monitoru který
                  vyvolává TraceAction pro všechny get* metody ve
                  specifických třídách:
<wldf-instrumentation-monitor>
<name>MyCustomMonitor</name>
<enabled>true</enabled>
<action>TraceAction</action>
<location-type>before</location-type>
<pointcut>call( * com.foo.bar.* get*(...));</pointcut>
</wldf-instrumentation-monitor>
Pro detailní popis viz http://e-docs.bea.com/wls/docs92/wldf_configuring/config_instrumentation.html#wp1085104
Diagnostické náhledy

                  Diagnostický náhled je možné udělat na požádání nebo
                  jako notifikaci na nějaký sledovač. Je to jakýsi
                  ekvivalent dump souboru na Unixu pro aplikační
                  server. Je ale v lépe čitelné formě.
                  Diagnostický náhled musí mít nadefinovaný cílový
                  adresář pro vytvoření souborů (dump-ů).
                  Obsah náhledu je zip soubor s hromadou XML souborů
                  popisující aktuální konfiguraci serveru. Obsahuje
                  kompletní popis konfigurace serveru,aplikací v něm a
                  taky obsah běžících služeb jako JNDI, JMS, JTA, JVM.
                  K běžícím službám přikládá kromě konfigurace i
                  informaci o stavu, počtu připojení, počtu zpráv atd.
Instalace a konfigurace WLDF
Konfigurační část WLDF je součástí Weblogic
                  konzole. Část pro analýzu historických dat tam ale
                  není. Je potřeba doinstalovat extenzi konzole a to
                  zkopírováním jar aplikace do console-ext adresáře v
                  doméně. Podrobný popis je tady: http://e-docs.bea.com/wls/docs92/wldf_console_ext/install_display.html

                
Reference
                  Introduction to WLDF: http://dev2dev.bea.com/pub/a/2006/06/wldf.html
                  Configuring and using WLDF: http://e-docs.bea.com/wls/docs92/wldf_configuring/index.html
                  WLDF console extension: http://e-docs.bea.com/wls/docs92/wldf_console_ext/index.html
                  WLDF configuration files – schema reference: http://e-docs.bea.com/wls/docs92/schemaref/diagnostics/index.html
