53
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 ikocsis @ mit.bme.hu Intelligens rendszerfelügyelet

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

  • Upload
    kurt

  • View
    33

  • Download
    0

Embed Size (px)

DESCRIPTION

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 - 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 [email protected]

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

Felügyeletre tervezés aspektusaio Támogató API-k és platform mechanizmusoko Felügyeleti modell

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

3

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:o Rendszerfelügyelet szempontjából fontos állapotoko ~ eseményeko ~ metrikák és tulajdonságoko Felügyeleti akciók

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

4

Felügyeletre tervezés - példaFetch 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 5: Rendszermonitorizás  és eseménykezelés fejlesztési támogatása

5

Felügyeletre tervezés - példa

Fetch whitelist

[(failed to load) or (format error)]

Bind to server port[load ok]

[failed to bind]

Wait for request

[bind ok]

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

6

Felügyeletre tervezés - példa

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? A legegyszerűbb megoldás:

állapotgép-futás (trace) lépéseinek logolása

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

7

Felügyeletre tervezés - példa

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 8: Rendszermonitorizás  és eseménykezelés fejlesztési támogatása

8

Felügyeletre tervezés - példa

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 9: Rendszermonitorizás  és eseménykezelés fejlesztési támogatása

9

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.Start Starting of a logical operation.Stop Stopping of a logical operation.Suspend Suspension of a logical operation.Resume Resumption of a logical operation.Transfer Changing of correlation identity.

.NET Framework 3.5System.Diagnostics.TraceEventType

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

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 …

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

11

Példa metrikák – funkcionális aspektus Kiszolgálófolyamat-vetület

o Uptime

Kérés-válasz kiszolgáló vetületo Beérkezett kérések számao Sikeresen kiszolgált kérések száma

HTTP proxy vetületo 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 aspektus

3. A többi egy része is átnyúlik a szolgáltatásbiztonságba / teljesítménybe

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

12

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 site-okra lebontva

o Ha cache-elünk is: átlagos fogadott adatmennyiség• De akkor be lehet venni a szokásos cache metrikákat is

Ismétcsak csúszóablakokra nézve

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

13

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 14: Rendszermonitorizás  és eseménykezelés fejlesztési támogatása

14

Felügyeleti akciók - példák Terminálás

o A modell már tartalmazza

Whitelist-állomány újratöltéseo Ehhez a modellt is módosítani kellene!

Whitelist-modell on-the-fly módosításao ~

A főbb nem megengedett, de kért site-ok 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 15: Rendszermonitorizás  és eseménykezelés fejlesztési támogatása

15

Integráció a rendszerfelügyelethez? Loggolá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)oWindows Enterprise Library, log4j, …

Metrikák lekérdezhetősége, operációko Jellemzően platform támogatás kihasználásao A WMI esetén beszéltünk a .NET támogatásróloMa: Java Management Extensions (JMX)

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

16

Microsoft Enterprise Library 4.1Logging Application Block

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

17

.NET loggolás a Logging Application Block-kal

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 18: Rendszermonitorizás  és eseménykezelés fejlesztési támogatása

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

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

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…

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

20

Enterprise Library Configuration Tool

Grafikus szerkesztő az xml-hez

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

21

Log források és nyelőkICollection<String> LogEntry.Categories

Egy forráshoz több listener is tartozhat!„SourceLevel” szűrés!

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

22

DEMO

Critical „Hello World” kiíratása Event Log-ba (default config)

Átkonfigurálás: loggolás egy szöveges állományba is

Logging Application Block

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

23

Linkek A Microsoft Enterprise Library 4.1 MSDN honlapja:

o http://msdn.microsoft.com/en-us/library/dd203099.aspx

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

24

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 25: Rendszermonitorizás  és eseménykezelés fejlesztési támogatása

25

A Java platform és menedzsmentje

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

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?

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

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

27

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 28: Rendszermonitorizás  és eseménykezelés fejlesztési támogatása

28

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 29: Rendszermonitorizás  és eseménykezelés fejlesztési támogatása

29

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

Catalina:type=Cache,host=localhost,path=/tomcat-docs Catalina:type=Cache,host=localhost,path=/servlets-examples Catalina:type=ThreadPool,name=jk-8009java.lang:type=Runtimejava.util.logging:type=Logging com.sun.management:type=HotSpotDiagnostic

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

30

DEMO

JBoss 6.0.0M2, default konfigo http://localhost:8080

Jconsole: jboss.web:type=GlobalRequestProcessor,name=http-127.0.0.1-8080

JMX bevezető: példa Mbean-ek

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

31

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 32: Rendszermonitorizás  és eseménykezelés fejlesztési támogatása

32

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

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

33

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 34: Rendszermonitorizás  és eseménykezelés fejlesztési támogatása

34

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

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

35

MBean-ek metaadatai MBeanServer kliens

Descriptor: metaadatok (név/érték párok) – csakúgy, mint

a CIM-nél

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

36

Mbean-ek fejlesztése Egy MBean egy konkrét Java osztály, ami

o 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 37: Rendszermonitorizás  és eseménykezelés fejlesztési támogatása

37

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 38: Rendszermonitorizás  és eseménykezelés fejlesztési támogatása

38

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 39: Rendszermonitorizás  és eseménykezelés fejlesztési támogatása

39

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 40: Rendszermonitorizás  és eseménykezelés fejlesztési támogatása

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)

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

41

Standard MBean példa

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

42

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 43: Rendszermonitorizás  és eseménykezelés fejlesztési támogatása

43

Standard MBean példa

try {connector =

JMXConnectorFactory.connect(address);

connection = connector.getMBeanServerConnection();

} catch (IOException e) {e.printStackTrace();System.exit(1);}

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

44

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 45: Rendszermonitorizás  és eseménykezelés fejlesztési támogatása

45

DEMO Továbbra is Jboss

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 folyamatra (Attach API)o JConsole plugin installálásao Képességek áttekintése

JConsole és JVisualVM

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

46

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 47: Rendszermonitorizás  és eseménykezelés fejlesztési támogatása

47

JMX: Ami kimaradt További MBean típusok (nyílt, modell, …)

Notifikációs mechanizmusok

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 notifikációo Ütemezett értesítésekoMBean-ek közötti asszociációs szolgáltatás

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

48

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/tutori

alTOC.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/essential.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/manage

ment/agent.html

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

49

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

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

50

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

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

51

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ó

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

52

Névhierarchia

MitInfJ2EEDomain:j2eeType=J2EEApplication,name=LabPortal,J2EEServer=SauronServer

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

53

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.ht

ml