1 / 53

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 ikocsis @ mit.bme.hu. Felügyeletre tervezés. Rendszerkomponensek: a rendszerfelügyelet számára általában nem módosíthatóak

kurt
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 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), …

More Related