1 / 70

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

Intelligens rendszerfelügyelet. Rendszermonitorizás és eseménykezelés fejlesztési támogatása. Kocsis Imre, Micskei Zoltán. 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

adonai
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

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

More Related