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