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

Preview:

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

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 Imreikocsis@mit.bme.hu

Intelligens rendszerfelügyelet

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

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

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…

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]

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

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

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?

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

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 …

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

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

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

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?

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)

16

Microsoft Enterprise Library 4.1Logging Application Block

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)

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

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…

20

Enterprise Library Configuration Tool

Grafikus szerkesztő az xml-hez

21

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

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

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

23

Linkek A Microsoft Enterprise Library 4.1 MSDN honlapja:

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

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ő

25

A Java platform és menedzsmentje

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

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

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

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

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

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

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

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

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

35

MBean-ek metaadatai MBeanServer kliens

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

a CIM-nél

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

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ó

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

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"));

[…]

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)

41

Standard MBean példa

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) {[…]}

43

Standard MBean példa

try {connector =

JMXConnectorFactory.connect(address);

connection = connector.getMBeanServerConnection();

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

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) {[…]}[…]

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

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

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

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

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

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

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ó

52

Névhierarchia

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

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

Recommended