alkalmazások és alkamazás-kiszolgálók monitorozása
DESCRIPTION
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. - PowerPoint PPT PresentationTRANSCRIPT
Budapesti Műszaki és Gazdaságtudományi EgyetemMéréstechnika és Információs Rendszerek Tanszék
Alkalmazások és alkamazás-kiszolgálók monitorozása
Kocsis [email protected]
Intelligens rendszerfelügyelet
Felügyelet és szoftverplatformok
HW
Operációs rendszer
Middleware
Virtuális gép / futtatókörnyezet
Alkalmazások
Felügyelet és szoftverplatformok
IBM xSeries Model 630
AIX
WebSphere MQ
WebSphere Application Server 6.1
IBM JDK
Nagyon Fontos J2EE Alkalmazás
És ha Windows a platform?
Felügyelet és szoftverplatformok
HW
Operációs rendszer
Middleware
Virtuális gép / futtatókörnyezet
Alkalmazások
OS monitorozása
HW mon.: ~
Használat mon.: ~
?
Szolgáltatás-hibabehatárolás és -állapotvizsgálat
Fenomenologikus, szolgáltatás szintű vizsgálato Teljesítmény- és szolgáltatásbiztonsági jellemzőko N.B.: ezzel még foglalkozunk
Használt erőforrások felügyelete Miért nem elegendőek?
Nagyon Fontos J2EE Alkalmazás:o A futtatókörnyezet Java folyamata futo A szolgáltatásunk mégsem elérhetőo Ok…?
Alkalmazás állapotának követése Generikus fogalmak: fut/nem fut
o 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ő állapotao Java: heap memory, GC, szálak tulajdonságai, …o J2EE alkalmazáskiszolgáló: thread pool-ok, …
Állapot az adott alkalmazás fogalmi rendszerébeno Pl. „fontos” aktív objektumok kivételei
Állapot megfigyelhetőségének támogatása Saját logállományok
o Integráció a központosított felügyelethez…o Szükséges vs. elégséges felbontás? ( tisztán „push”)
Platformszintű eseménykezelés kihasználásaoWindows Eventlogo syslogd
Saját menedzsment-eszközöko Integráció?
Platform távfelügyeleti támogatás kihasználása
Amiket láttunk, elméletileg működhetnek:o SNMP, CIM-XML, WMI, WS-Management (WinRM), …
Mi határozza meg a praktikus alkalmazhatóságot?o 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ágao 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, Ruby on Rails, Python, …: nem jellemző J2SE és J2EE: JMX
JMX (Java Management Extensions)
„Kibocsájtó”: Java Community Process (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ávalImpl.: J2SE 5.0-tól és J2EE 1.4-től kötelező
A Java platform és menedzsmentje
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?
o Java objektumok metódusainak hívása távolrólo 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
oMindenképpen legyen egyszerűbb, mint az RMI…o… de az implementáció használhatja persze (nyíltság?)
JMX - architektúra
Ugyanazon Java virtuális gép (JVM)
Felügyeleti kliens szint
Ágens szint
Instrumentációs szint
platform MBeanServer további MBeanServer
MBean
MBean
platform Mbean(java.lang.management)
Ágens szolgáltatás
MBean
Connector Server (RMI)
Connector Server
(JMXMP)
Connector Server (Web
Services)
Protocol Adapter
MBean
Connector Server (RMI)
Java felügyeleti alkalmazás
Connector Client (RMI)
Böngésző, SNMP
kliens, ... WS-Management kliens
Ágens szolgáltatás
MBean
Mbean-ek „Managed Bean”: alapvetően egy Java objektum
o Bean osztály: elnevezési, létrehozási és viselkedési konvenciók
o 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
Instrumentációs szint
MBean
MBean
platform Mbean(java.lang.management)
MBean
MBeanServer MBean-eket nyilvántartó objektum Publikus interfészén:
o Létrehozás/törlésoMBean-ek név és név-minta szerinti kereséseoMBean-ek attribútum- és metódushalmazának
lekérdezéseoMBean attribútumok olvasása és írása, metódusok
hívásao az MBean-ek által létrehozott jelzésekre feliratkozás
Távoli és lokális interfészei különböznek
DEMO
Távoli/lokális: MBeanServerConnectiono http://java.sun.com/j2se/1.5.0/docs/api/javax/manage
ment/class-use/MBeanServerConnection.html
Távoli: MBeanServero http://java.sun.com/j2se/1.5.0/docs/api/javax/manage
ment/MBeanServer.html
MBeanServer interfészek
Konnektorok MBeanServer(-ek) lokális elérése: factory
o static MBeanServer ManagementFactory.getPlatformMBeanServer() //java.lang.management
Másik JVM-ből?
Ágens szint
platform MBeanServer további MBeanServer
Ágens szolgáltatás
MBean
Connector Server (RMI)
Connector Server
(JMXMP)
Connector Server (Web
Services)
Protocol Adapter
Connector Server (RMI)
Ágens szolgáltatás
MBean
KonnektorokFelügyeleti kliens szint
Ágens szint
platform MBeanServer további MBeanServer
Ágens szolgáltatás
MBean
Connector Server (RMI)
Connector Server
(JMXMP)
Connector Server (Web
Services)
Protocol Adapter
Connector Server (RMI)
Java felügyeleti alkalmazás
Connector Client (RMI)
Böngésző, SNMP
kliens, ... WS-Management kliens
Ágens szolgáltatás
MBean
MBean-ek metaadatai MBeanServer kliens
Descriptor: „a metaadat meataadata”
(név/érték párok)
Mbean-ek nevei Az MBean-ekre objektum-referenciánk nincs!
Objektum-név:o Domain név: egyszerű, nem hierarchikus névtérkezeléso Kulcs tulajdonságok rendezetlen halmazao 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=Runtimejava.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!
DEMO
Eclipse, mint Java folyamat
JConsole: <JDK6_HOME>\bin\jconsole.exeo Csatlakozás az Eclipse Java folyamatra (Attach API)o Képességek áttekintése
JVisualVM: <JDK6_HOME>\bin\jvisualvm.exeo Csatlakozás az Eclipse Java folyamatra (Attach API)o JConsole plugin installálásao Képességek áttekintése
JConsole és JVisualVM
Programozott hozzáférés[néhány kihagyott import]import javax.management.*; public class MyClient {public static void main(String[] args){JMXServiceURL address = null;JMXConnector connector = null;MBeanServerConnection connection = null;try {
address = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://"+"localhost:9004/jmxrmi"); } catch (MalformedURLException e) {e.printStackTrace(); System.exit(1);}
Programozott hozzáféréstry { //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
o Unix/Linux: bash/ksh/perl/…o Windows: VB, PowerShell, .bat
A Java nyelv ≠ JVM/Java platformo A .NET CLR-re is több nyelv fordítható
JVM-re épülő szkriptnyelvek (fordítás/interpretálás):o Groovyo JRubyo JavaScript JConsole script shell
Linkek JMX technology page (Sun):
o http://java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement/
JMX tutorial:o http://java.sun.com/j2se/1.5.0/docs/guide/jmx/tutorial/tuto
rialTOC.html A Tutorial-ban az instrumentáció legalapvetőbb
kérdései:o http://java.sun.com/j2se/1.5.0/docs/guide/jmx/tutorial/ess
ential.html#wp1053098 Egy kliensoldali súlypontú áttekintés:
o https://unixlinux.tmit.bme.hu//JMX JMX adatbiztonság-menedzsment
(autentikáció/titkosítás):o http://java.sun.com/javase/6/docs/technotes/guides/manag
ement/agent.html
Java 2 Platform, Enterprise Edition Management Specification
„Kibocsájtó”: Java Community Process (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
o Szabványos attribútumok és metódusok;o Szabványos nevek
J2SE környezetben nincs is sok értelmeo Kivéve: platform MBean-ek
J2EE: sok szabványos fogalomo 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é tennio Gyakorlatilag JMX-nevek, o 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…?
o http://en.wikipedia.org/wiki/J2EE …egy J2EE alkalmazásszerver például képes futtatni
szervleteket:o http://en.wikipedia.org/wiki/Servlet
Platform MBeanServer használata a Jboss J2EE (4.0.2+) alkalmazáskiszolgáló esetén:o http://www.jboss.org/community/docs/DOC-10521
Platform MBeanServer használata a Tomcat 5.5 szervletkonténer esetén:o http://tomcat.apache.org/tomcat-5.5-doc/monitoring.html