Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Programování v jazyku C# II. 11.kapitola. Obsah Přehled technologií pro spravovatelnost aplikací WMI – základy WMI – přístup z.NET frameworku WMI – instrumentace.

Podobné prezentace


Prezentace na téma: "Programování v jazyku C# II. 11.kapitola. Obsah Přehled technologií pro spravovatelnost aplikací WMI – základy WMI – přístup z.NET frameworku WMI – instrumentace."— Transkript prezentace:

1 Programování v jazyku C# II. 11.kapitola

2 Obsah Přehled technologií pro spravovatelnost aplikací WMI – základy WMI – přístup z.NET frameworku WMI – instrumentace vlastních aplikací Monitorování aplikace pomocí MOM /36

3 Monitorování a provoz.NET aplikací Aplikace musí být nejenom dobře napsaná, ale i dobře provozovatelná –Monitorování, instrumentace – sledování –Trasování – záznam událostí a chyb v aplikaci –Konfigurovatelnost – nastavení externích parametrů aplikace Na tyto vlastnosti je nutné myslet již při návrhu Dodání těchto funkcí ex-post je obtížné Dobrý objektový návrh vše zjednodušuje 3/36

4 Merc.StageShuttleJob Cache HTTP SQL Feed Store Feed Store DSS FTP Vize - System Definition Model Potřebné zdroje Politiky pro běh aplikace Operační možnosti Vytvoření definice nového systému nebo jeho úprava Fungování systému podle jeho definice Automatická alokace zdrojů a konfigurace podle definice STORAGESERVERSNETWORKING SDM dokument Design for Operations Dynamic Data Center 4/36 „Živá“ předloha pro fungování aplikace

5 Konfigurace aplikací Externí parametry (cesty, spojení do DB apod.) by měly být uloženy mimo aplikaci Infrastruktura v.NET Frameworku = konfigurační soubor: –Pro spustitelné – JmenoExeSouboru.exe.config –Pro ASP.NET aplikace – web.config –Cestu lze zjistit jako: AppDomain.SetupInformation.ConfigurationFile –Cestu lze nastavit při vytváření AppDomain –Obsah je spojen s obsahem machine.config Tip pro VS.NET – app.config v rootu projektu tlustých aplikací je vždy správně nakopírován !!! Velká rozšíření pro Framework 2.0 a Longhorn 5/36

6 Trace, Debug Velmi podobné statické třídy Výstup diagnostických informací: –Nepodmíněný – Write, WriteLine –Podmíněný – WriteIf, WriteLineIf, Assert Kód, který je volá, se kompiluje pouze tehdy, jsou-li přítomné přepínače DEBUG, TRACE –Je možné nechat i v ostré verzi produktu Liší se určením - konvence je, že: –DEBUG chybí v ostré verzi (je pro vývojáře) –TRACE zůstává v ostré verzi (je pro provozní diagnostiku) Stavební kameny: –Listener – zpracovává události –Switch – abstrahuje konfiguraci 6/36

7 Event Log Zápis do/čtení z Event Logu Možno používat systémové (Application, System, …) anebo si vytvářet vlastní Jde o starší technologii, použití z.NET frameworku není zcela přirozené Pozor na práva, řídí se přístupovými právy ke klíčům v Registry –HKLM/…/Services/EventLog/… –Standardně je nebude mít Network Service (účet pod kterým běží ASP.NET) v dostatečném rozsahu 7/36

8 Performance Counters Čtení hodnot čítačů výkonnosti a vytváření vlastních čítačů Jde o starší technologii, použití z.NET frameworku není zcela přirozené Pozor na práva, řídí se přístupovými právy ke klíčům v Registry –Modifikaci lze najít na různých webech, ale není to podporovaný postup –Standardně je nebude mít Network Service (účet pod kterým běží ASP.NET) v dostatečném rozsahu 8/36

9 Frameworky pro abstrakci událostí Oddělují vlastní abstraktní událost („publish“) od způsobu jejího zpracování a eskalace: –Databáze, Event Log, soubor na disku, WMI, message queueing, , … Konfigurace je dána konfiguračním souborem a lze ji dynamicky měnit Dostupné frameworky na MSDN: –Exception Management Application Blok –Enterprise Instrumentation Framework –Logging Application Block 9/36

10 K čemu je WMI dobré? Sběr dat - čtení –Inventura hardwaru, výkonnostní čítače, klíče registry, Event Logy, služby, procesy, … Konfigurace systému - zápis –Sdílené adresáře, NTFS oprávnění, konfigurace nastavení sítě, pagefile, … Vykonání akcí – volání metod –Zastav službu, zruš proces, … Správa událostí –W3SVC služba se zastavila, kabel síťové karty odpojen, nalezen nový virus, … 10/36

11 WBEM vs. WMI WBEM (Web Based Enterprise Management) –Standard navržený skupinou DMTF –Velmi čistý objektový návrh –Základní schéma nezávislé na OS (CIMv2) –Využit v mnoha mgmt. produktech WMI (Windows Management Interface) –Implementace WBEM na Windows platformě –Podporováno od Windows 98 & NT4 –Počínaje Windows 2000 součást OS –Mnoho dalších produktů podporuje WMI –Přístupné přes COM i.NET Framework 11/36

12 WMI - architektura Poskytovatelé (provider) Aplikace Zařízení OS (Win32) Klienti (consumer) Nástroje, skripty Jiné aplikace Management aplikace Služby (dotazy, události, filtrování, správa metadat, vazba klient-poskytovatel, …) Management Schema Katalog Infrastruktura 12/36

13 Schéma – jmenné prostory Slouží k rozlišení různých skupin tříd patřících různým aplikacím (OS, SQL, BizTalk, IIS, NLB, …) Základní jmenný prostor (namespace) se jmenuje root Základní třídy pro OS jsou ve jmenném prostoru root/CIMv2 Jmenný prostor je základ pro nastavení bezpečnosti 13/36

14 Schéma – jmenné prostory Vytvářet jmenné prostory a měnit je smí pouze lokální administrátor –Tedy ani Network Service ani ASPNET účty –V.NET frameworku je řešením použít předem installutil.exe z SDK –http://msdn.microsoft.com/library/default.asp?url=/library/en- us/cpguide/html/cpconregisteringthesch emaforaninstrumentedapplication.asphttp://msdn.microsoft.com/library/default.asp?url=/library/en- us/cpguide/html/cpconregisteringthesch emaforaninstrumentedapplication.asp Další práva se pak nastavují přes MMC snapin nebo voláním API 14/36 Bezpečnost

15 Schéma - třídy Základní jednotka pro správu Symbolizuje spravovaný objekt Přibližné analogie: –Namespace = databáze, běžící aplikace –Instance = instance objektu, tabulka databáze –Property = vlastnost objektu, sloupec databáze –Method = metoda –Association = relace mezi tabulkami, asociace Win32_Process: Methods: Create, GetOwner, GetOwnerSid, Terminate Properties: Name, ProcessID, Priority, PageFaults,... An Instance:notepad.exe, 900, 8, 335,... Associations:Win32_ComputerSystem, CIM_DataFile 15/36

16 WMI události Intrinsic Events –Systémové události („triggery“) vyvolané změnou dat nebo metadat –Instance/Class/Namespace- Creation/Deletion/Modification-Event Extrinsic Events –Definované poskytovateli –Např. Win32_PowerManagementEvent Timer Events –Systémové, periodicky nebo v daný čas 16/36

17 WMI - poskytovatelé WMI tým v MS –Win32 –SNMP –DMI (with Intel) –Registry –Windows NT® Event log –Performance Monitor –Performance Counters –Active Directory™ –Windows Installer –WMI for WDM SCSI Disk, IDE Disk, NDIS, Keyboard, Mouse, USB HUB, Modem, ACPI, SMBIOS, Serial, Parallel, Disk Perf Další týmy v MS –Exchange 2000 –Systems Management Server –NetMon monitors and experts –Network Load Balancing –SNA Server –Office 2000 –SQL Server™ 2000 –DNS Server –Application Center Monitoring –IIS, NetShow™ –BizTalk™ Server –Clustering Services –Disk Quotas, Job Objects, Ping –More… Výrobci třetích stran 17/36

18 WMI klienti (consumers) Management produkty Microsoftu –Operations Manager, AppCenter, SMS Mgmt. produkty třetích stran –CA, Tivoli, HP OpenView, BMC, … VS.NET – Server Explorer WMI Extension –http://go.microsoft.com/fwlink/?LinkId=3353http://go.microsoft.com/fwlink/?LinkId=3353 WMI Administrative Tools (CIM studio) –Mnohem více funkčnosti, ale není integrováno s.NET –http://www.microsoft.com/downloads/details.aspx?fami lyid=6430f db-8cc5- f2abdc3ed314&displaylang=enhttp://www.microsoft.com/downloads/details.aspx?fami lyid=6430f db-8cc5- f2abdc3ed314&displaylang=en 18/36

19 WMI v.NET Frameworku Funkce WMI jsou ve jmenném prostoru System.Management Známé prostředí a techniky –Třídy, kolekce, enumerátory, foreach, delegate, event, … Jazykově neutrální – C#, VB.NET, … Generování typových tříd pro WMI třídy: –MgmtClassGen.exe v.NET Framework SDK –WMI Server Explorer Extension pro VS.NET –Výhody IntelliSense®, kontrola při kompilaci … 19/36

20 Základní úlohy Enumerace a filtrování instancí objektů Získání specifické instance Dotazy na instance nebo události Provádění metod Registrace k odběru událostí Zjištění vztahů mezi spravovanými objekty 20/36

21 System.Management ManagementObject –Reprezentuje objekt WMI (data) ManagementClass –Reprezentuje třídu WMI (schéma) ManagementObjectSearcher –Vyhledávání objektů v repository –WQL – dotazovací jazyk vycházející z SQL –Další způsoby hledání – Relationship, RelatedObject ManagementObjectEventWatcher –Pro sledování událostí WMI ( EventArrived ) 21/36 Základní třídy

22 WMI.NET Consumer API using System; using System.Management; using System.IO; public void EnumerateServices() { //Request the collection of services ManagementObjectSearcher s = new ManagementObjectSearcher(“Win32_Service”); //Enumerate through the collection foreach (ManagementObject service in s.Get()) Console.WriteLine(“Service: “+Service[“Name”]+ ” is “+Service[“State”]); return; } 22/36 Příklad - Enumerate WMI objects

23 public void ServiceStopped() { WqlEventQuery q = new WqlEventQuery(“__InstanceModificationEvent”, 10, “TargetInstance isa Win32_Service and TargetInstance.State=‘Stopped’”); ManagementEventWatcher watcher = new ManagementEventWatcher(q); MyHandler handler = new MyHandler(); watcher.EventArrived += new EventArrivedEventHandler(handler.Arrived); watcher.Start(); Console.WriteLine(“Hit any key to stop listening…”); Console.ReadLine(); watcher.Stop(); } public class MyHandler { public void Arrived(object sender, EventArrivedEventArgs e) { ManagementBaseObject service = (ManagementBaseObject)(e.NewEvent["TargetInstance"]); Console.WriteLine(“Service " + service[“Name”] + “has stopped !!!”); } WMI.NET Consumer API Define the event query Initialize an event watcher with this query Set up a handler for incoming events Start listening Handle the event when it arrives 23/36 Příklad - Subscribe for events

24 WMI.NET Consumer API From previous example: public void Arrived(object sender, EventArrivedEventArgs e) { ManagementBaseObject service = (ManagementBaseObject)(e.NewEvent["TargetInstance"]); Console.WriteLine(“Service " + service[“Name”] + “has stopped !!!”); } Use SDK utility (MgmtClassGen.exe) to generate strongly-typed class “Service” for the WMI “Win32_Service” class Using the generated class the code becomes: public void Arrived(object sender, EventArrivedEventArgs e) { Service service = new Service(e.NewEvent[“TargetInstance”]); Console.WriteLine(“Service " + service.Name + “has stopped !!!”); //and, if we want to restar service.StartService(); } 24/36 Příklad - Strongly-typed objects

25 Instrumentace vlastní aplikace Intuitivní –.NET třídy se mapují na WMI třídy 1:1 –WMI schéma automaticky zjištěno z definice třídy a z přiřazených atributů Deklarativní – pomocí atributů a dědičnosti –Označení tříd typů, které chcete zpřístupnit –Označení schématu a názvu třídy –Volitelně – omezení zpřístupněných členů třídy Jednoduchá a bezpracná –Vše je v System.Management.Instrumentation –Instance typů zpřístupněny do vrstvy WMI –Události v kódu jsou vyvolány ve WMI 25/36 Snadná cesta k spravovatelné aplikaci

26 Vlastní WMI událost Definujte.NET třídu reprezentující událost Označte třídu pro instrumentaci –Pokud je to možné, poděděním ze třídy System.Management.Instrumentation.BaseEvent –Pokud ne, použijte pro třídu atribut [InstrumentationClass(InstrumentationType.Event)] Vytvořte instanci třídy, vyplňte vlastnosti, zavolejte metodu Fire Vyvolá WMI událost s příslušnými daty 26/36 Jak na to?

27 using System.Management.Instrumentation; [assembly:Instrumented(“root/default")] [InstrumentationClass(InstrumentationType.Event)] public class UserLogin { public string Username; public int SessionId; public int TimeToLogin; } UserLogin ul = new UserLogin(); ul.Username = “corinaf”; ul.SessionId = sCount++; ul.TimeToLogin = 10; Instrumentation.Fire(ul); Firing Events Define the WMI namespace to fire events into Attribute indicates this is instrumentation event Define event class Instantiate and fill in values Fire event using helper classes 27/36 Příklad – using attribution

28 Firing Events using System.Management.Instrumentation; [assembly:Instrumented(“root/default")] public class UserLogin : BaseEvent { public string Username; public int SessionId; public int TimeToLogin; } UserLogin ul = new UserLogin(); ul.Username = “corinaf”; ul.SessionId = sCount++; ul.TimeToLogin = 10; ul.Fire(); Derive from “BaseEvent” Fire event using base method 28/36 Příklad – using base class

29 Zpřístupnění objektu přes WMI Definujte libovolnou.NET třídu Označte třídu pro instrumentaci: –Pokud je to možné, poděděním ze třídy System.Management.Instrumentation.Instance –Pokud ne, použijte pro třídu atribut [InstrumentationClass(InstrumentationType.Instance)] Vytvořte instanci, opublikujte pomocí Publish Objekt bude přístupný přes WMI –Pouze pole a vlastnosti označené Public –Pouze ke čtení (bezpečnost) –Metody nejsou zpřístupněny (bezpečnost) 29/36 Jak na to?

30 Exposing Data using System.Management.Instrumentation; [assembly:Instrumented(“root/default")] [InstrumentationClass(InstrumentationType.Instance,“CIM_User”)] public class UserInfo { public string Name; public DateTime LastLogin; public int MaxWait; public UserInfo(name) { Name = name; LastLogin = GetLastLogin(); MaxWait = GetMaxWait(); Instrumentation.Publish(this); } usr[0] = new UserInfo(“Jeff”); usr[1] = new UserInfo(“Cori”); Define the WMI namespace to fire events into Attribute indicates this is instrumentation data Define data class When values are available, publish it Instantiate as usual 30/36 Příklad – using attribution

31 Exposing Data using System.Management.Instrumentation; [assembly:Instrumented(“root/default")] public class UserInfo : Instance { public string Name; public DateTime LastLogin; public int MaxWait; public UserInfo(name) { Name = name; LastLogin = GetLastLogin(); MaxWait = GetMaxWait(); Published = true; } usr[0] = new UserInfo(“Jeff”); usr[1] = new UserInfo(“Cori”); Derive from “Instance” Publish instance using property on base class 31/36 Example – using base class

32 Kompletní řešení pro operační dohled serverů a aplikací na bázi WMI –Identifikace a řešení kritických stavů ještě před tím, než se objeví „Operační expertíza v krabici“ – snadná instalace a okamžité výsledky Jednoduchá správa – snadné použití, flexibilita, automatizované nasazení, škálovatelnost Spolupráce s management nástroji dalších dodavatelů Přináší vyspělý reporting Workgroup verze – levné řešení do 10 serverů Co je MOM 2005? 32/36

33 MOM 2005 popis architektury System Center Data Warehouse –SQL Reporting Services Databáze MOM 2005 –Operační data –Konfigurační data MOM management Server –Database access server –MOM service MOM agent +MOM Server Uživatelská rozhraní Agenti MOM 2005 –Lokální monitorování –Lokální správa –Šifrovaná komunikace DB System Center Data Warehouse Reportování Agenti Oper. konzole Admin konzole Web konzole MOM Server 33/36

34 Reference Monitoring in.NET Distributed Application Design us/dnbda/html/monitordotnet.asp us/dnbda/html/monitordotnet.asp Operating.NET-based Applications solutions/net/maintain/opnetapp/default.asp solutions/net/maintain/opnetapp/default.asp MOM WMI Server Explorer Extension us/wmise/wmioriManagingWindowsManagementInstrumentationWMI DataEventsWithServerExplorer.asp us/wmise/wmioriManagingWindowsManagementInstrumentationWMI DataEventsWithServerExplorer.asp WMI Tools db-8cc5-f2abdc3ed314&displaylang=en db-8cc5-f2abdc3ed314&displaylang=en 34/36

35 Závěrem Aplikace musí být nejenom dobře napsaná, ale i dobře provozovatelná Na tyto vlastnosti je nutné myslet již při návrhu, dodání ex-post je obtížné Dobrý objektový návrh vše zjednodušuje WMI je správná technologie MOM 2005 je nejvhodnější nástroj pro monitorování prostřednictvím WMI 35/36

36 36/36 Konec


Stáhnout ppt "Programování v jazyku C# II. 11.kapitola. Obsah Přehled technologií pro spravovatelnost aplikací WMI – základy WMI – přístup z.NET frameworku WMI – instrumentace."

Podobné prezentace


Reklamy Google