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

kurt
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 / 53
Download Presentation
89 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 ikocsis@mit.bme.hu

  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 • Felügyeletre tervezés aspektusai • Támogató API-k és platform mechanizmusok • Felügyeleti modell

  3. 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ügyelet szempontjából fontos állapotok • ~ események • ~ metrikák és tulajdonságok • Felügyeleti akciók

  4. Felügyeletre tervezés - példa A rendszer erőteljesen alulspecifikált; „érdekes” hibák, hosszadalmas hibakeresés…

  5. Felügyeletre tervezés - példa


  6. Felügyeletre tervezés - példa Megfigyelhetőség? A legegyszerűbb megoldás: állapotgép-futás (trace) lépéseinek logolása

  7. Felügyeletre tervezés - példa

  8. Felügyeletre tervezés - példa Biztos hogy minden lépés ugyanolyan fontos?

  9. Log események kategorizálása - példa .NET Framework 3.5 System.Diagnostics.TraceEventType

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

  11. Példa metrikák – funkcionális aspektus 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 / teljesítménybe • Kiszolgálófolyamat-vetület • Uptime • Kérés-válasz kiszolgáló vetület • Beérkezett kérések száma • Sikeresen kiszolgált kérések száma • HTTP proxy vetület • 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

  12. 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 site-okra lebontva • Ha cache-elünk is: átlagos fogadott adatmennyiség • De akkor be lehet venni a szokásos cache metrikákat is Ismétcsakcsúszóablakokra nézve

  13. 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

  14. Felügyeleti akciók - példák Ugye látszik, hogy bonyolultabb esetben mindezt (pl.) UML-ben ragadtuk volna meg? • 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 site-ok listájának lekérése (+ gyakoriság, IP címek, …)

  15. Integráció a rendszerfelügyelethez? • Loggolá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) • Windows EnterpriseLibrary, log4j, … • Metrikák lekérdezhetősége, operációk • Jellemzően platform támogatás kihasználása • A WMI esetén beszéltünk a .NET támogatásról • Ma: Java Management Extensions (JMX)

  16. Microsoft EnterpriseLibrary 4.1LoggingApplicationBlock

  17. .NET loggolás a LoggingApplicationBlock-kal 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

  18. Bejegyzések emittálása Bejegyzés: LogEntry példány; bővítés: ExtendedProperties + specializáció Ezt az enum-ot már láttuk (az aktivitásokra itt nem térünk ki) Façade osztály; praktikusan szinte mindig ezt használjuk

  19. Bejegyzések emittálása - konfiguráció Az „alkalmazásblokk” használatba vétele (végülis ez egy API…) N.B.: egyébként is itt lenne…

  20. EnterpriseLibraryConfigurationTool Grafikus szerkesztő az xml-hez

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

  22. LoggingApplicationBlock • Critical „Hello World” kiíratása Event Log-ba (defaultconfig) • Átkonfigurálás: loggolás egy szöveges állományba is

  23. Linkek • A Microsoft EnterpriseLibrary 4.1 MSDN honlapja: • http://msdn.microsoft.com/en-us/library/dd203099.aspx

  24. 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ő

  25. A Java platform és menedzsmentje

  26. JMX: alapvető jellemzők • Összetett, API-orientált szabvány • „Java-ból menedzselünk akár távoli Java-t” • Mik lehetnek a tervezői döntések? • Java objektumok metódusainak hívása távolról • Legyen valami menedzsment objektum-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 • Mindenképpen legyen egyszerűbb, mint az RMI… • … de az implementáció használhatja persze

  27. JMX - architektúra

  28. 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

  29. 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 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

  30. JMX bevezető: példa Mbean-ek • JBoss 6.0.0M2, defaultkonfig • http://localhost:8080 • Jconsole: jboss.web:type=GlobalRequestProcessor,name=http-127.0.0.1-8080

  31. MBeanServer • MBean-eket nyilvántartó „broker” objektum • Publikus interfészén: • Létrehozás/törlés • MBean-ek név és név-minta szerinti keresése • MBean-ek attribútum- és metódushalmazának lekérdezése • MBean attribútumok olvasása és írása, metódusok hívása • az MBean-ek által létrehozott jelzésekre feliratkozás • Távoli és lokális interfészei különböznek

  32. Konnektorok • MBeanServer(-ek) lokális elérése: factory • staticMBeanServerManagementFactory.getPlatformMBeanServer() //java.lang.management • Másik JVM-ből?

  33. Konnektorok

  34. MBeanServer interfészek • Távoli/lokális: MBeanServerConnection • http://java.sun.com/j2se/1.5.0/docs/api/javax/management/class-use/MBeanServerConnection.html • Távoli: MBeanServer • http://java.sun.com/j2se/1.5.0/docs/api/javax/management/MBeanServer.html

  35. MBean-ekmetaadatai • MBeanServer kliens Descriptor: metaadatok (név/érték párok) – csakúgy, mint a CIM-nél

  36. Mbean-ek fejlesztése • Egy MBeanegy konkrét Java osztály, ami • Implementálja a saját Mbean interfészét vagy • a DynamicMBean interfészt, illetve • Opcionálisan a NotificationBroadcaster interfészt • Az első opció: „standard” Mbean • Menedzsment interfész: egyszerű szabályok a struktúrán

  37. Standard Mbean példa Az osztálynév: MyClass publicinterfaceMyClassMBean { publicintgetState(); publicvoidsetState(int s); publicvoidreset(); } További operáció Van megfelelő getter/setter: a State attribútum látszani fog

  38. Standard MBean példa publicclassMyClassimplementsMyClassMBean{ privateintstate = 0; privateStringhidden = null; publicvoidwarble(){} publicStringgetHidden(){returnhidden;} publicvoidsetHidden(String h){hidden = h;} publicvoidsetState(int s) {state = s;} publicintgetState() {returnstate;} publicvoidreset() {state = 0;} } Rejtett marad Szintén + a publikus konstruktorok látszanak (az MBeanServer is példányosíthat)

  39. Standard MBean példa publicstaticvoid main(String[] args){ MBeanServermbs = ManagementFactory.getPlatformMBeanServer(); MyClass m = newMyClass(); try { mbs.registerMBean(m, newObjectName("inf.mit.bme.hu:" + "type=MyClass,name=probe")); […]

  40. Platform MBeanServer: távoli hozzáférés java -Dcom.sun.management.jmxremote.port=9004 \ -Dcom.sun.management.jmxremote.ssl=false \ -Dcom.sun.management.jmxremote.authenticate=false \ Managed FIGYELEM: NEM BIZTONSÁGOS! (Lokális hozzáférés máshogy)

  41. Standard MBean példa

  42. Standard MBean példa publicclass Manager { publicstaticvoid main(String[] args) { JMXServiceURLaddress = null; JMXConnectorconnector = null; MBeanServerConnectionconnection = null; try { address = newJMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:9004/jmxrmi"); } catch (MalformedURLException e) {[…]}

  43. Standard MBean példa try { connector = JMXConnectorFactory.connect(address); connection = connector.getMBeanServerConnection(); } catch (IOException e) { e.printStackTrace(); System.exit(1); }

  44. Standard MBean példa ObjectNameon; try { on = newObjectName("inf.mit.bme.hu:type=MyClass" + ",n ame=probe"); Objectattr = connection.getAttribute(on, "State"); System.out.println(attr.toString()); } catch (Exception e) {[…]}[…]

  45. JConsole és JVisualVM • Továbbra is Jboss • JConsole: <JDK6_HOME>\bin\jconsole.exe • Csatlakozás a Java folyamatra (Attach API) • Képességek áttekintése • Platform Mbean-ek! • JVisualVM: <JDK6_HOME>\bin\jvisualvm.exe • Csatlakozás a Java folyamatra (Attach API) • JConsoleplugin installálása • Képességek áttekintése

  46. Szkriptelt hozzáférés • Programozott megoldások sokszor feleslegesek • Unix/Linux: bash/ksh/perl/… • Windows: VB, PowerShell, .bat • A Java nyelv ≠ JVM/Java platform • A .NET CLR-re is több nyelv fordítható • JVM-re épülő szkriptnyelvek (fordítás/interpretálás): • Groovy • JRuby • JavaScript  JConsole script shell

  47. JMX: Ami kimaradt • További MBean típusok (nyílt, modell, …) • Notifikációs mechanizmusok • Kötelező ágens-szolgáltatások • „Dynamicloading”: akár dinamikusan letöltött osztályok példányosítása • Attribútum-érték monitorozás és notifikáció • Ütemezett értesítések • MBean-ek közötti asszociációs szolgáltatás

  48. Linkek • JMX technologypage (Sun): • http://java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement/ • JMX tutorial: • http://java.sun.com/j2se/1.5.0/docs/guide/jmx/tutorial/tutorialTOC.html • A Tutorial-ban az instrumentáció legalapvetőbb kérdései: • http://java.sun.com/j2se/1.5.0/docs/guide/jmx/tutorial/essential.html#wp1053098 • Egy kliensoldali súlypontú áttekintés: • https://unixlinux.tmit.bme.hu//JMX • JMX adatbiztonság-menedzsment (autentikáció/titkosítás): • http://java.sun.com/javase/6/docs/technotes/guides/management/agent.html

  49. Java 2 Platform, EnterpriseEdition Management Specification „Kibocsájtó”: Java CommunityProcess (JCP) Megalkotók: Sun, IBM, BEA, … Verzió: JSR77 (2006) Cél: A J2EE platform menedzsmentjéhez standard modellek

  50. Alkalmazáskiszolgálók felügyelete • JMX: szabványos „adatmodell” nincs • Szabványos attribútumok és metódusok; • Szabványos nevek • J2SE környezetben nincs is sok értelme • Kivéve: platform MBean-ek • J2EE: sok szabványos fogalom • Servlet-ek és konténereik, EJB-k és konténereik, aszinkron üzenetküldés (JMS), …