![Page 1: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/1.jpg)
1Budapesti Műszaki és Gazdaságtudományi EgyetemMéréstechnika és Információs Rendszerek Tanszék
Rendszermonitorizás és eseménykezelés fejlesztési támogatása
Kocsis Imre, Micskei Zoltán
Intelligens rendszerfelügyelet
![Page 2: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/2.jpg)
2
Felügyeletre tervezés Rendszerkomponensek: a rendszerfelügyelet
számára általában nem módosíthatóako Black box komponensek felügyelhetősége általában
erősen korlátoso Felügyelhetőségre tervezés: erős ipari nyomás
• MOF, IBM Autonomic Computing• DevOps
Felügyeletre tervezéshez szükségeso Támogató API-k és platform mechanizmusoko Felügyeleti modell
![Page 3: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/3.jpg)
3
Miért lesz ez nekünk jó? Szokásos szoftver kiadás: Milyen jó lenne:
o Nem csak fut/nem fut látszódna az alkalmazásból
o Hibát jelezné, és automatikusan lehetne beavatkozni
o Alkalmazás jelezné a növekvő terhelést, automatikusan új kiszolgálót rakhatnánk alá
o …Forrás: http://dev2ops.org, What is DevOps?
![Page 4: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/4.jpg)
4
Felügyeletre tervezés - példa (Figyelem: felkészülés a házi feladatra)
Felügyelt SW komponens: whitelisting HTTP proxyo Kliensek internet-hozzáférésének szűréseo Egyszerűsítések: egyszálú, nincs perzisztens HTTP, nincs SSL
Analízis/modellezés: rendszerfelügyeletnek fontoso állapotok,o események,o metrikák és tulajdonságok,o beavatkozási lehetőségek meghatározása.
![Page 5: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/5.jpg)
5
Példa: kezdeti állapotgépFetch whitelist Bind to server port
Wait for request
Process client requestclientRequest
Fetch resource
[whitelist ok]
Forward data
[whitelist deny] / appLayerDeny
A rendszer erőteljesen alulspecifikált; „érdekes” hibák, hosszadalmas
hibakeresés…
![Page 6: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/6.jpg)
6
Példa: hibaesetek specifikálása
Fetch whitelist
[(failed to load) or (format error)]
Bind to server port[load ok]
[failed to bind]
Wait for request
[bind ok]
![Page 7: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/7.jpg)
7
Példa: további hibaesetek
Wait for request
terminate Process client request
clientRequest
[malformed req] / transportLDeny[whitelist deny] / appLayerDeny
Fetch resource
[whitelist ok]
[unsuccessful] / appLayerErrorCode
Forward data
[successful]
[successful] [unsuccessful]
Megfigyelhetőség? Legegyszerűbb: állapotgép-futás
(trace) lépéseinek naplózása
![Page 8: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/8.jpg)
8
Példa: kiegészítés naplózással
Fetch whitelist/ logInit
[(failed to load) or (format error)] / logConfigLoadError
Bind to server port[load ok] / logLoadOk
[failed to bind] / logBindFailure
Wait for request
[bind ok] / logBindOk
![Page 9: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/9.jpg)
9
Példa kiegészítés naplózással
Wait for request
terminate / logCleanTermination
Process client requestclientRequest / logClientRequest
[malformed req] / transportLDeny,logMalformedReq[whitelist deny] / appLayerDeny,logDeniedReq
Fetch resource
[whitelist ok] / logWhitelistOk
[unsuccessful] / appLayerErrorCode,logFetchError
Forward data
[successful] / logFetchOk
[successful] / logFwdOk[unsuccessful] / logFwdFailure
Biztos hogy minden lépés ugyanolyan fontos?
![Page 10: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/10.jpg)
10
Log események kategorizálása - példaKategória LeírásCritical Fatal error or application crash.Error Recoverable error.Warning Noncritical problem.Information Informational message.Verbose Debugging trace.…
(.NET Framework: System.Diagnostics.TraceEventType)
![Page 11: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/11.jpg)
11
Log események kategorizálása - példa logInit logLoadOk logConfigLoadError logBindOk logBindFailure logClientRequest
logMalformedReq logDeniedReq …
InformationInformationCriticalInformationCriticalVerbose (inkább, mint Information)ErrorError
![Page 12: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/12.jpg)
12
Példa: metrikák – funkcionális aspektus Funkció: kiszolgáló folyamat
o Uptime Funkció: kérés-válasz kiszolgáló
o Beérkezett kérések számao Sikeresen kiszolgált kérések száma
Funkció: HTTP proxyo Rosszul formáltság miatt eldobott kérések számao HTTP hibakód miatt nem kiszolgált kérések számao Nem whitelist-be eső kérések aránya
1. Uptime kivételével: valamilyen csúszóablakra nézzük2. Az utolsó metrika: inkább adatbiztonsági aspektus3. A többi egy része is átnyúlik a szolgáltatásbiztonságba
![Page 13: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/13.jpg)
13
Példa: metrikák – teljesítmény-aspektus Kérés-válasz kiszolgáló
o Kliensek felé átlagos kiszolgálási idő (várakozás + végrehajtás)
o Átlagos továbbított adatmennyiség HTTP proxy
o Saját kérések átlagos RTT-je• Megengedett oldalakra lebontva
o 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
![Page 14: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/14.jpg)
14
Példa: Futás közbeni állapotFetch whitelist Bind to server port
Wait for request
Process client requestclientRequest
Fetch resource
[whitelist ok]
Forward data
[whitelist deny] / appLayerDeny
2010.03.20.;10:34;100;Information;Binding to port 802010.03.20.;10:34;101;Information;Waiting for request...2010.03.20.;10:35;102;Verbose;Request arrived2010.03.20.;10:35;105;Error;Malformed request
Naplózás
Monitorozás / Lekérdezés
State: ProcessRequestUptime: 00:03:14NumRequests: 15FailedRequest: 0...
![Page 15: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/15.jpg)
15
Felügyeleti akciók - példák Terminálás
o A modell már tartalmazza Whitelist-állomány újratöltése
o Ehhez a modellt is módosítani kellene! Whitelist-modell on-the-fly módosítása
o ~ 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?
![Page 16: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/16.jpg)
16
Példa: hogy állunk most?
![Page 17: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/17.jpg)
17
Integráció a rendszerfelügyelethez? Naplózás: (osztály)könyvtárak
o filterelés és „routing”: konfiguráció, nem kód!o Kulcsrakész integráció platformszintű
mechanizmusokhoz (pl. Event Log, WMI)oMS Enterprise Library, log4j, …
Metrikák lekérdezhetősége, operációko Jellemzően platform támogatás kihasználásao CIM provider készítése (pl. .NET WMI provider)oMa: Java Management Extensions (JMX)
![Page 18: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/18.jpg)
18
Tartalom
Felügyeletre tervezés
Mintapélda: felügyeleti modell elkészítése
Felhasználható technológiákoMS Logging Application Blocko Java Management Extensions (JMX)
![Page 19: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/19.jpg)
19
Microsoft Enterprise LibraryLogging Application Block
![Page 20: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/20.jpg)
20
MS Enterprise Library Patterns & Practices csapat Tipikus feladatokra bevált megoldások gyűjteménye
![Page 21: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/21.jpg)
21
Logging Application Block áttekintése
![Page 22: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/22.jpg)
22
.NET naplózás a Logging Application Blockkal
1. Előszűrés
2. „Forrásokba” helyezés
3. Forrásokhoz rendelt, különböző célokkal rendelkező nyelők
0. Bejegyzéseket emittáló saját kód
4. Nyelőkhöz rendelt formázás
.NET alkalmazás-konfiguráció
(xml)
![Page 23: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/23.jpg)
23
Log bejegyzések létrehozásastatic void Main(string[] args) { LogWriter defaultWriter = → EnterpriseLibraryContainer.Current.GetInstance<LogWriter>(); LogEntry entry = new LogEntry(); entry.EventId = 10; entry.Severity = TraceEventType.Error; entry.Message = "LoggingTest program initialized"; defaultWriter.Write(entry);
Console.WriteLine("Hello logging world"); } Bejegyzés: LogEntry példány vagy
közvetlenül a Write() változatai
![Page 24: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/24.jpg)
24
Bejegyzések emittálása - konfiguráció
Az „alkalmazásblokk” használatba vétele
Beállítások ide kerülnek
![Page 25: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/25.jpg)
25
Enterprise Library Configuration Tool
Grafikus szerkesztő az xml-hez
![Page 26: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/26.jpg)
26
Log források és nyelőkICollection<String> LogEntry.Categories
Egy forráshoz több listener is tartozhat!„SourceLevel” szűrés!
![Page 27: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/27.jpg)
27
DEMO
Log esemény kiíratása Eseménynaplóba
Átkonfigurálás: o naplózás egy szöveges állományba is
Logging Application Block
![Page 28: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/28.jpg)
28
Linkek Microsoft Enterprise Library 5.0 – April 2010http://msdn.microsoft.com/en-us/library/ff632023.aspx Letölthető, teljes dokumentációhttp://entlib.codeplex.com/ Dev Guide: As Easy As Falling Off a Loghttp://msdn.microsoft.com/en-us/library/ff953185%28v=PandP.50%29.aspx
![Page 29: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/29.jpg)
29
Tartalom
Felügyeletre tervezés
Mintapélda: felügyeleti modell elkészítése
Felhasználható technológiákoMS Logging Application Blocko Java Management Extensions (JMX)
![Page 30: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/30.jpg)
30
Modern folyamat-virtuálisgépek felügyelete
.NET
Windows
WMI
Eventing
Logging
Perf. Counters
WinRM platform
![Page 31: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/31.jpg)
31
A Java platform és menedzsmentje
![Page 32: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/32.jpg)
32
JRE felügyeleti támogatás
Java API: platformszintű információk lokális elérésére java.lang.management
![Page 33: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/33.jpg)
33
java.lang.management.ManagementFactory
![Page 34: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/34.jpg)
34
Platform felügyeleti adatok: MXBean-ek
Java platform
Class Loading
Thread
Runtime
Compilation
Operating System
Memória
Memory
Memory Pool-ok
Memory Manager-ek
Garbage Collector-ok
![Page 35: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/35.jpg)
35
Platform felügyeleti adatok: MXBean-ek
Java platform
Class Loading
Thread
Runtime
Compilation
Operating System
Memória
Memory
Memory Pool-ok
Memory Manager-ek
Garbage Collector-ok
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, …
![Page 36: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/36.jpg)
36
JVM: memória Heap:
o Futásidejű adatterület: osztály-példányok és tömböko Szemétgyűjtés (garbage collection)
Non-Heap (része): method areao Osztályonkénti struktúrák, mint
• Metódus- és konstruktor-kód• Mező és metódus-adatok• (Futásidejű) szimbólumtábla
Memory pool: ezek logikai alegységei, melyeket Memory Manager-ek kezelnek
![Page 37: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/37.jpg)
37
Platform felügyeleti adatok: MXBean-ek
Java platform
Class Loading
Thread
Runtime
Compilation
Operating System
Memória
Memory
Memory Pool-ok
Memory Manager-ek
Garbage Collector-ok
![Page 38: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/38.jpg)
38
Garbage Collection Explicit memória-menedzsment problémái
o „Lógó” referenciák - dangling referencesoMemória-szivárgás - memory leako (Fragmentáció)
• Lásd: különböző malloc variánsok
Megoldás: memória felszabadításának automatikus kezelése
![Page 39: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/39.jpg)
39
Garbage Collection Azon objektumok élők, melyekre létezik referencia
o 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)o A legtöbb allokált objektum rövid ideig élőo Öregebb fiatalabb referenciák: kevéso Egyszerre általában kevés fiatal objektum
Generációs GCo Generációs pool-ok, túlélők „előléptetése”o Generációnként eltérő algoritmusok/gyakoriság
![Page 40: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/40.jpg)
40
Garbage Collection
![Page 41: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/41.jpg)
41
JRE felügyeleti támogatás
-Attach API: másik VM-be (saját) ágens betöltetése (lásd jconsole)- + …
![Page 42: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/42.jpg)
42
Saját alkalmazások felügyelete
Java platform
Class Loading
Thread
Runtime
Compilation
Operating System
Memória
Memory
Memory Pool-ok
Memory Manager-ek
Garbage Collector-ok
Saját webkiszolgáló állapota?
- Jó lenne hasonlóan: objektum írja le az aspektust! Valami registry / broker is kell (inkl. metaadatok)
! Távoli hozzáférés
![Page 43: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/43.jpg)
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(.*)
![Page 44: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/44.jpg)
44
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ő
![Page 45: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/45.jpg)
45
JMX: alapvető jellemzők Összetett, API-orientált szabvány „Java-ból menedzselünk akár távoli Java-t”
o Legyen egyszerűbb, mint az RMI… (de használhatja)
Metódushívás + get/set távolról
Kell valami menedzsmentobjektum-brókero Lokális Java objektumok „feliratkozása” provider-neko A lokális feliratkozottak távolról lekérdezése
• Hívások kezelése
![Page 46: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/46.jpg)
46
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
![Page 47: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/47.jpg)
47
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
![Page 48: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/48.jpg)
48
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!o Best practice: „type” és „name” kulcsok
MXBean-ek: szabványos nevek
![Page 49: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/49.jpg)
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
![Page 50: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/50.jpg)
50
DEMO
Tomcat 7.0.12, default configo http://localhost:8080
MBean-ek:o Serviceo GlobalRequestProcessor
• Page reload
JMX bevezető: példa MBean-ek
![Page 51: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/51.jpg)
51
MBeanServer MBean-eket nyilvántartó „broker” 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
![Page 52: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/52.jpg)
52
Konnektorok MBeanServer(-ek) lokális elérése: factory
o static MBeanServer ManagementFactory.getPlatformMBeanServer()
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
![Page 53: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/53.jpg)
53
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
![Page 54: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/54.jpg)
54
DEMO
Távoli/lokális: MBeanServerConnectiono http://java.sun.com/j2se/1.5.0/docs/api/javax/manage
ment/class-use/MBeanServerConnection.html
Lokális: MBeanServero http://java.sun.com/j2se/1.5.0/docs/api/javax/manage
ment/MBeanServer.html
MBeanServer interfészek
![Page 55: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/55.jpg)
55
MBean-ek metaadatai MBeanServer kliens
Descriptor: metaadatok (név/érték párok) – csakúgy, mint
a CIM-nél
![Page 56: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/56.jpg)
56
MBean-ek fejlesztése Egy MBean egy konkrét Java osztály (példánya),
amio Implementálja a saját Mbean interfészét vagyo a DynamicMBean interfészt, illetveo Opcionálisan a NotificationBroadcaster interfészt
Az első opció: „standard” MBeanoMenedzsment interfész: egyszerű szabályok a
struktúrán
![Page 57: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/57.jpg)
57
Standard MBean példa
public interface MyClassMBean {
public int getState();public void setState(int s);public void reset();
}
Az osztálynév: MyClass
Van megfelelő getter/setter: a State attribútum látszani fog
További operáció
![Page 58: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/58.jpg)
58
Standard MBean példapublic class MyClass implements MyClassMBean{
private int state = 0;private String hidden = null;
public void warble(){}
public String getHidden(){return hidden;}public void setHidden(String h){hidden = h;}
public void setState(int s) {state = s;}public int getState() {return state;}
public void reset() {state = 0;}
}
+ a publikus konstruktorok látszanak (az MBeanServer is
példányosíthat)
Rejtett marad
Szintén
![Page 59: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/59.jpg)
59
Standard MBean példa
public static void main(String[] args){
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
MyClass m = new MyClass();
try {mbs.registerMBean(m,
new ObjectName("inf.mit.bme.hu:" + "type=MyClass,name=probe"));
[…]
![Page 60: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/60.jpg)
60
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 \ ManagedApp
FIGYELEM: NEM BIZTONSÁGOS!(Lokális hozzáférés máshogy)
![Page 61: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/61.jpg)
61
Standard MBean példa
![Page 62: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/62.jpg)
62
Standard MBean példapublic class Manager {
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) {[…]}
![Page 63: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/63.jpg)
63
Standard MBean példa
try {connector =
JMXConnectorFactory.connect(address);
connection = connector.getMBeanServerConnection();
} catch (IOException e) {e.printStackTrace();System.exit(1);}
![Page 64: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/64.jpg)
64
Standard MBean példa
ObjectName on;
try {on = new
ObjectName("inf.mit.bme.hu:type=MyClass" + ",n ame=probe");
Object attr = connection.getAttribute(on, "State");
System.out.println(attr.toString());} catch (Exception e) {[…]}[…]
![Page 65: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/65.jpg)
65
JDK-támogatás
![Page 66: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/66.jpg)
66
DEMO
JConsole: <JDK6_HOME>\bin\jconsole.exeo Csatlakozás a Java folyamatra (Attach API)o Képességek áttekintéseo Platform MBean-ek!
JVisualVM: <JDK6_HOME>\bin\jvisualvm.exeo Csatlakozás a Java folyamatrao JConsole plugin installálásao Képességek áttekintése
JConsole és JVisualVM
![Page 67: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/67.jpg)
67
További JDK-támogatás „Monitoring”:
o jtopo jpso jstato jstatd
„Troubleshoot”:o jinfoo jmapo jsadebugdo jstack
![Page 68: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/68.jpg)
68
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
![Page 69: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/69.jpg)
69
JMX: Ami kimaradt További MBean típusok (nyílt, modell, …)
Értesítési mechanizmusok (notification)
Kötelező ágens-szolgáltatásoko „Dynamic loading”: akár dinamikusan letöltött
osztályok példányosításao Attribútum-érték monitorozás és értesítéso Ütemezett értesítésekoMBean-ek közötti asszociációs szolgáltatás
![Page 70: Rendszermonitorizás és eseménykezelés fejlesztési támogatása](https://reader035.vdocuments.pub/reader035/viewer/2022062520/5681631e550346895dd397fe/html5/thumbnails/70.jpg)
70
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/tutori
al/tutorialTOC.html A Tutorial-ban az instrumentáció legalapvetőbb
kérdései:o http://java.sun.com/j2se/1.5.0/docs/guide/jmx/tutori
al/essential.html#wp1053098 JMX adatbiztonság-menedzsment
(autentikáció/titkosítás):o http://java.sun.com/javase/6/docs/technotes/guides/
management/agent.html