Rendszermonitorizás és eseménykezelés fejlesztési támogatása - PowerPoint PPT Presentation

adonai
rendszermonitoriz s s esem nykezel s fejleszt si t mogat sa n.
Skip this Video
Loading SlideShow in 5 Seconds..
Rendszermonitorizás és eseménykezelés fejlesztési támogatása PowerPoint Presentation
Download Presentation
Rendszermonitorizás és eseménykezelés fejlesztési támogatása

play fullscreen
1 / 70
Download Presentation
Rendszermonitorizás és eseménykezelés fejlesztési támogatása
96 Views
Download Presentation

Rendszermonitorizás és eseménykezelés fejlesztési támogatása

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Intelligens rendszerfelügyelet Rendszermonitorizás és eseménykezelés fejlesztési támogatása Kocsis Imre, Micskei Zoltán

  2. Felügyeletre tervezés • Rendszerkomponensek: a rendszerfelügyelet számára általában nem módosíthatóak • Black box komponensek felügyelhetősége általában erősen korlátos • Felügyelhetőségre tervezés: erős ipari nyomás • MOF, IBM AutonomicComputing • DevOps • Felügyeletre tervezéshez szükséges • Támogató API-k és platform mechanizmusok • Felügyeleti modell

  3. Miért lesz ez nekünk jó? Szokásos szoftver kiadás: Milyen jó lenne: • Nem csak fut/nem fut látszódna az alkalmazásból • Hibát jelezné, és automatikusan lehetne beavatkozni • Alkalmazás jelezné a növekvő terhelést, automatikusan új kiszolgálót rakhatnánk alá • … Forrás: http://dev2ops.org, What is DevOps?

  4. Felügyeletre tervezés - példa • (Figyelem: felkészülés a házi feladatra) • Felügyelt SW komponens: whitelisting HTTP proxy • Kliensek internet-hozzáférésének szűrése • Egyszerűsítések: egyszálú, nincs perzisztens HTTP, nincs SSL • Analízis/modellezés: rendszerfelügyeletnek fontos • állapotok, • események, • metrikák és tulajdonságok, • beavatkozási lehetőségek meghatározása.

  5. Példa: kezdeti állapotgép A rendszer erőteljesen alulspecifikált; „érdekes” hibák, hosszadalmas hibakeresés…

  6. Példa: hibaesetek specifikálása

  7. Példa: további hibaesetek Megfigyelhetőség? Legegyszerűbb: állapotgép-futás (trace) lépéseinek naplózása

  8. Példa: kiegészítés naplózással

  9. Példa kiegészítés naplózással Biztos hogy minden lépés ugyanolyan fontos?

  10. Log események kategorizálása - példa (.NET Framework: System.Diagnostics.TraceEventType)

  11. Log események kategorizálása - példa • logInit • logLoadOk • logConfigLoadError • logBindOk • logBindFailure • logClientRequest • logMalformedReq • logDeniedReq • … Information Information Critical Information Critical Verbose (inkább, mint Information) Error Error

  12. Példa: metrikák – funkcionális aspektus • Funkció: kiszolgáló folyamat • Uptime • Funkció: kérés-válasz kiszolgáló • Beérkezett kérések száma • Sikeresen kiszolgált kérések száma • Funkció: HTTP proxy • Rosszul formáltság miatt eldobott kérések száma • HTTP hibakód miatt nem kiszolgált kérések száma • Nem whitelist-be eső kérések aránya Uptime kivételével: valamilyen csúszóablakra nézzük Az utolsó metrika: inkább adatbiztonsági aspektus A többi egy része is átnyúlik a szolgáltatásbiztonságba

  13. Példa: metrikák – teljesítmény-aspektus • Kérés-válasz kiszolgáló • Kliensek felé átlagos kiszolgálási idő (várakozás + végrehajtás) • Átlagos továbbított adatmennyiség • HTTP proxy • Saját kérések átlagos RTT-je • Megengedett oldalakra lebontva • Ha cache is: átlagos fogadott adatmennyiség • De akkor be lehet venni a szokásos cache metrikákat is Ismét csak csúszóablakokra nézve

  14. Példa: Futás közbeni állapot Monitorozás / Lekérdezés State: ProcessRequest Uptime: 00:03:14 NumRequests: 15 FailedRequest: 0 ... Naplózás 2010.03.20.;10:34;100;Information;Bindingto port 80 2010.03.20.;10:34;101;Information;Waitingforrequest ... 2010.03.20.;10:35;102;Verbose;Requestarrived 2010.03.20.;10:35;105;Error;Malformedrequest

  15. Felügyeleti akciók - példák • Terminálás • A modell már tartalmazza • Whitelist-állomány újratöltése • Ehhez a modellt is módosítani kellene! • Whitelist-modellon-the-fly módosítása • ~ • A főbb nem megengedett, de kért oldalak listájának lekérése (+ gyakoriság, IP címek, …) Ugye látszik, hogy bonyolultabb esetben mindezt (pl.) UML-ben ragadtuk volna meg?

  16. Példa: hogy állunk most?

  17. Integráció a rendszerfelügyelethez? • Naplózás: (osztály)könyvtárak • filterelés és „routing”: konfiguráció, nem kód! • Kulcsrakész integráció platformszintű mechanizmusokhoz (pl. Event Log, WMI) • MS EnterpriseLibrary, log4j, … • Metrikák lekérdezhetősége, operációk • Jellemzően platform támogatás kihasználása • CIM provider készítése (pl. .NET WMI provider) • Ma: Java Management Extensions (JMX)

  18. Tartalom • Felügyeletre tervezés • Mintapélda: felügyeleti modell elkészítése • Felhasználható technológiák • MS LoggingApplicationBlock • Java Management Extensions (JMX)

  19. Microsoft EnterpriseLibraryLoggingApplicationBlock

  20. MS EnterpriseLibrary • Patterns & Practices csapat • Tipikus feladatokra bevált megoldások gyűjteménye

  21. LoggingApplicationBlock áttekintése

  22. .NET naplózás a LoggingApplicationBlockkal 0. Bejegyzéseket emittáló saját kód 1. Előszűrés .NET alkalmazás- konfiguráció (xml) 2. „Forrásokba” helyezés 3. Forrásokhoz rendelt, különböző célokkal rendelkező nyelők 4. Nyelőkhöz rendelt formázás

  23. Log bejegyzések létrehozása staticvoid Main(string[]args) { LogWriterdefaultWriter= → EnterpriseLibraryContainer.Current.GetInstance<LogWriter>(); LogEntryentry=newLogEntry(); entry.EventId=10; entry.Severity=TraceEventType.Error; entry.Message="LoggingTest program initialized"; defaultWriter.Write(entry); Console.WriteLine("Hello loggingworld"); } Bejegyzés: LogEntry példány vagy közvetlenül a Write() változatai

  24. Bejegyzések emittálása - konfiguráció Az „alkalmazásblokk” használatba vétele Beállítások ide kerülnek

  25. EnterpriseLibraryConfigurationTool Grafikus szerkesztő az xml-hez

  26. Log források és nyelők ICollection<String> LogEntry.Categories Egy forráshoz több listener is tartozhat! „SourceLevel” szűrés!

  27. LoggingApplicationBlock • Log esemény kiíratása Eseménynaplóba • Átkonfigurálás: • naplózás egy szöveges állományba is

  28. Linkek • Microsoft Enterprise Library 5.0 – April 2010 http://msdn.microsoft.com/en-us/library/ff632023.aspx • Letölthető, teljes dokumentáció http://entlib.codeplex.com/ • DevGuide: As Easy As Falling Off a Log http://msdn.microsoft.com/en-us/library/ff953185%28v=PandP.50%29.aspx

  29. Tartalom • Felügyeletre tervezés • Mintapélda: felügyeleti modell elkészítése • Felhasználható technológiák • MS LoggingApplicationBlock • Java Management Extensions (JMX)

  30. Modern folyamat-virtuálisgépek felügyelete .NET Windows platform WMI WinRM Eventing Logging Perf. Counters

  31. A Java platform és menedzsmentje

  32. JRE felügyeleti támogatás Java API: platformszintű információk lokális elérésére java.lang.management

  33. java.lang.management.ManagementFactory

  34. Platform felügyeleti adatok: MXBean-ek

  35. Platform felügyeleti adatok: MXBean-ek Betöltött/kiürített osztályok száma Szál-statisztikák és –információk (lock-ok, StackTrace, …) VM adatok, indítási paraméterek, példány név, classpath, …

  36. JVM: memória • Heap: • Futásidejű adatterület: osztály-példányok és tömbök • Szemétgyűjtés (garbagecollection) • Non-Heap (része): methodarea • Osztályonkénti struktúrák, mint • Metódus- és konstruktor-kód • Mező és metódus-adatok • (Futásidejű) szimbólumtábla • Memorypool: ezek logikai alegységei, melyeket MemoryManager-ek kezelnek

  37. Platform felügyeleti adatok: MXBean-ek

  38. GarbageCollection • Explicit memória-menedzsment problémái • „Lógó” referenciák - danglingreferences • Memória-szivárgás - memoryleak • (Fragmentáció) • Lásd: különböző malloc variánsok • Megoldás: memória felszabadításának automatikus kezelése

  39. GarbageCollection • Azon objektumok élők, melyekre létezik referencia • Amire semmi nem mutat, annak a memóriaterületét kezeljük úgy, mint újra kioszthatót • Gyenge generációs hipotézis (tapasztalati szabály) • A legtöbb allokált objektum rövid ideig élő • Öregebb  fiatalabb referenciák: kevés • Egyszerre általában kevés fiatal objektum • Generációs GC • Generációs pool-ok, túlélők „előléptetése” • Generációnként eltérő algoritmusok/gyakoriság

  40. GarbageCollection

  41. JRE felügyeleti támogatás • Attach API: másik VM-be (saját) ágens betöltetése (lásd jconsole) • + …

  42. Saját alkalmazások felügyelete • Jó lenne hasonlóan: objektum írja le az aspektust • ! Valami registry / broker is kell (inkl. metaadatok) • ! Távoli hozzáférés

  43. JRE felügyeleti támogatás - Instrumentációs és (távoli) menedzsment Java API - Deklarációs mechanizmusok - Szükséges platform-támogatás javax.management(.*)

  44. JMX (Java Management Extensions) „Kibocsájtó”: Java CommunityProcess (JCP) Megalkotók: Sun, IBM, Apache, BEA, … Verzió: JMX 2.0, JSR255 (2008) Cél: A Java platform és alkalmazások menedzsmentjének szabványosítása, szerver és kliens oldali API-k és elvárt szolgáltatások megadásával Impl.: J2SE 5.0-tól és J2EE 1.4-től kötelező

  45. JMX: alapvető jellemzők • Összetett, API-orientált szabvány • „Java-ból menedzselünk akár távoli Java-t” • Legyen egyszerűbb, mint az RMI… (de használhatja) • Metódushívás + get/set távolról • Kell valami menedzsmentobjektum-bróker • Lokális Java objektumok „feliratkozása” provider-nek • A lokális feliratkozottak távolról lekérdezése • Hívások kezelése

  46. JMX - architektúra

  47. MBean-ek • „ManagedBean”: alapvetően egy Java objektum • Bean osztály: elnevezési, létrehozási és viselkedési konvenciók • Szinte akármit reprezentálhat • Platform MBean-ek (MXBean): JVM erőforrások • EE környezetek szolgáltatásai (JDBC, tranzakciókezelés, …) • Saját modell

  48. MBean-ek nevei • Az MBean-ekre objektum-referenciánk nincs! • Objektum-név: • Domain név: egyszerű, nem hierarchikus névtérkezelés • + kulcs tulajdonságok rendezetlen halmaza • Az „eredeti” típus (Java osztály) nem jelenik meg! • Best practice: „type” és „name” kulcsok • MXBean-ek: szabványos nevek

  49. MBean név példák Catalina:type=Cache,host=localhost,path=/tomcat-docs Catalina:type=Cache,host=localhost,path=/servlets-examples Catalina:type=ThreadPool,name=jk-8009 java.lang:type=Runtime java.util.logging:type=Logging com.sun.management:type=HotSpotDiagnostic

  50. JMX bevezető: példa MBean-ek • Tomcat 7.0.12, defaultconfig • http://localhost:8080 • MBean-ek: • Service • GlobalRequestProcessor • Pagereload