70
1 Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Rendszermonitorizás és eseménykezelés fejlesztési támogatása Kocsis Imre, Micskei Zoltán Intelligens rendszerfelügyelet

Rendszermonitorizás és eseménykezelés fejlesztési támogatása

  • Upload
    adonai

  • View
    34

  • Download
    0

Embed Size (px)

DESCRIPTION

Intelligens rendszerfelügyelet. Rendszermonitorizás és eseménykezelés fejlesztési támogatása. Kocsis Imre, Micskei Zoltán. 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 - PowerPoint PPT Presentation

Citation preview

Page 1: Rendszermonitorizás  és eseménykezelés fejlesztési támogatása

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

16

Példa: hogy állunk most?

Page 17: Rendszermonitorizás  és eseménykezelés fejlesztési támogatása

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

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

19

Microsoft Enterprise LibraryLogging Application Block

Page 20: Rendszermonitorizás  és eseménykezelés fejlesztési támogatása

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

21

Logging Application Block áttekintése

Page 22: Rendszermonitorizás  és eseménykezelés fejlesztési támogatása

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

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

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

25

Enterprise Library Configuration Tool

Grafikus szerkesztő az xml-hez

Page 26: Rendszermonitorizás  és eseménykezelés fejlesztési támogatása

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

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

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

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

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

31

A Java platform és menedzsmentje

Page 32: Rendszermonitorizás  és eseménykezelés fejlesztési támogatása

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

33

java.lang.management.ManagementFactory

Page 34: Rendszermonitorizás  és eseménykezelés fejlesztési támogatása

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

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

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

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

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

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

40

Garbage Collection

Page 41: Rendszermonitorizás  és eseménykezelés fejlesztési támogatása

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

61

Standard MBean példa

Page 62: Rendszermonitorizás  és eseménykezelés fejlesztési támogatása

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

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

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

65

JDK-támogatás

Page 66: Rendszermonitorizás  és eseménykezelés fejlesztési támogatása

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

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

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

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

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