310 likes | 399 Views
Learn about monitoring applications and servers, with a focus on J2EE, WebSphere Application Server, OS, HW, and middleware. Explore tools for service fault isolation, performance, and status monitoring. Discover best practices for managing application states and resources. Gain insights on platform-level event handling and remote supervision with SNMP, CIM-XML, WMI, and more. Dive into JMX architecture, Mbean patterns, and MBeanServer connections for efficient Java platform and application management.
E N D
Intelligens rendszerfelügyelet Alkalmazások és alkamazás-kiszolgálók monitorozása Kocsis Imre ikocsis@mit.bme.hu
Felügyelet és szoftverplatformok Alkalmazások Virtuális gép / futtatókörnyezet Middleware Operációs rendszer HW
Felügyelet és szoftverplatformok Nagyon Fontos J2EE Alkalmazás WebSphereApplication Server 6.1 IBM JDK WebSphere MQ És ha Windows a platform? AIX IBM xSeriesModel 630
Felügyelet és szoftverplatformok Használat mon.: ~ Alkalmazások ? Virtuális gép / futtatókörnyezet Middleware Operációs rendszer OS monitorozása HW HW mon.: ~
Szolgáltatás-hibabehatárolás és -állapotvizsgálat • Fenomenologikus, szolgáltatás szintű vizsgálat • Teljesítmény- és szolgáltatásbiztonsági jellemzők • N.B.: ezzel még foglalkozunk • Használt erőforrások felügyelete • Miért nem elegendőek? • Nagyon Fontos J2EE Alkalmazás: • A futtatókörnyezet Java folyamata fut • A szolgáltatásunk mégsem elérhető • Ok…?
Alkalmazás állapotának követése • Generikus fogalmak: fut/nem fut • Ezekre persze vannak alacsony/magas szintű eszközök • „Munkavégzés” metrikái • Messze nem teljesen fedhető a már vizsgált eszközökkel • Mik ezek? később tárgyaljuk • Keretrendszer (ha van) belső állapota • Java: heapmemory, GC, szálak tulajdonságai, … • J2EE alkalmazáskiszolgáló: threadpool-ok, … • Állapot az adott alkalmazás fogalmi rendszerében • Pl. „fontos” aktív objektumok kivételei
Állapot megfigyelhetőségének támogatása • Saját logállományok • Integráció a központosított felügyelethez… • Szükséges vs. elégséges felbontás? ( tisztán „push”) • Platformszintű eseménykezelés kihasználása • Windows Eventlog • syslogd • Saját menedzsment-eszközök • Integráció?
Platform távfelügyeleti támogatás kihasználása • Amiket láttunk, elméletileg működhetnek: • SNMP, CIM-XML, WMI, WS-Management (WinRM), … • Mi határozza meg a praktikus alkalmazhatóságot? • Fejlesztési támogatás kiszolgáló- és kliensoldalon • (Kvázi-)szabványos API és implementációk megléte a gyakorlatban fontosabb lehet, mint a protokoll szabványossága/nyíltsága • Bár a WMI nem (csak) ezért nem nyílt protokollszinten
Alkalmazás-környezetek és szabványos/platforminstrumentáció • OS – Windows: WMI • OS – UNIX-ok és Linux-ok: CIMOM-ok? • .NET technológiák: WMI • PHP, RubyonRails, Python, …: nem jellemző • J2SE és J2EE: JMX
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ő
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 (nyíltság?)
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
MBeanServer • MBean-eket nyilvántartó 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
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
Konnektorok • MBeanServer(-ek) lokális elérése: factory • staticMBeanServerManagementFactory.getPlatformMBeanServer() //java.lang.management • Másik JVM-ből?
MBean-ekmetaadatai • MBeanServer kliens Descriptor: „a metaadatmeataadata” (név/érték párok)
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! 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
Platform MBeanServer inicializálása java -Dcom.sun.management.jmxremote.port=9004 \ -Dcom.sun.management.jmxremote.ssl=false \ -Dcom.sun.management.jmxremote.authenticate=false \ DummyServer FIGYELEM: NEM BIZTONSÁGOS!
JConsole és JVisualVM • Eclipse, mint Java folyamat • JConsole: <JDK6_HOME>\bin\jconsole.exe • Csatlakozás az Eclipse Java folyamatra (Attach API) • Képességek áttekintése • JVisualVM: <JDK6_HOME>\bin\jvisualvm.exe • Csatlakozás az Eclipse Java folyamatra (Attach API) • JConsoleplugin installálása • Képességek áttekintése
Programozott hozzáférés [néhány kihagyott import] import javax.management.*; publicclassMyClient { publicstaticvoid main(String[] args){ JMXServiceURLaddress = null; JMXConnectorconnector = null; MBeanServerConnectionconnection = null; try { address = newJMXServiceURL("service:jmx:rmi:///jndi/rmi://"+ "localhost:9004/jmxrmi"); } catch (MalformedURLException e) {e.printStackTrace(); System.exit(1);}
Programozott hozzáférés try { //valós esetben itt kellene még egy paraméter-HashMap connector = JMXConnectorFactory.connect(address); connection = connector.getMBeanServerConnection(); } catch (IOException e) { e.printStackTrace(); System.exit(1); } […] String[] domains = connection.getDomains(); Integer mbc = connection.getMBeanCount(); Set<ObjectName> names = connection.queryNames(null, null); […]
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
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
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
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), …
JSR-77 • Egy J2EE környezet objektumait milyen néven kell menedzsment célokra elérhetővé tenni • Gyakorlatilag JMX-nevek, • amikben mindenképpen szerepeljen értékkel: • j2eeType • name • <szülő-j2eeType-ok> (mi a szülő szabvány) • Elérés: praktikusan JMX és EJB • Támogatás a gyártók részéről: erősen változó
Névhierarchia MitInfJ2EEDomain:j2eeType=J2EEApplication,name=LabPortal, J2EEServer=SauronServer
Linkek • Mi az a J2EE platform…? • http://en.wikipedia.org/wiki/J2EE • …egy J2EE alkalmazásszerver például képes futtatni szervleteket: • http://en.wikipedia.org/wiki/Servlet • Platform MBeanServer használata a Jboss J2EE (4.0.2+) alkalmazáskiszolgáló esetén: • http://www.jboss.org/community/docs/DOC-10521 • Platform MBeanServer használata a Tomcat 5.5 szervletkonténer esetén: • http://tomcat.apache.org/tomcat-5.5-doc/monitoring.html