.. _lectures-icpe-dublin: 201403-ICPE-Dublin ================== Information ----------- The 2-hour tutorial was held on March 23, 2014 at the ` 5th ACM/SPEC International Conference on Performance Engineering `_ in Dublin, Irland. Presenters: 1.  Andre van Hoorn, University of Stuttgart, Germany 2.  Nils Ehmke, Kiel University, Germany For this tutorial, Kieker version 1.8 has been used. Material provided outside this Wiki page: - Kieker and Kieker.WebGUI release archives (binary and doc): http://kieker-monitoring.net/download/ - Kieker user guide: `kieker-1.8_userguide.pdf `_ - Presentation slides: 1. Original slides with overlays: `20140323-ICPE-Tutorial-slides.pdf `_ 2. Handout versions: `20140323-ICPE-Tutorial-handout.pdf `_ Schedule -------- - 14:30 Introduction and Overview of Approach (avh) - 14:45 *Interactive: Quick Start* (nie) - 15:00 Intro (cont'd) (avh) - 15:05 Use Cases in Research and Practice (avh) - 15:20 Kieker's Monitoring Component (avh) - 15:35 Kieker's Analysis Component & WebGUI (nie) - 15:50 *Interactive: Java EE Monitoring* (avh) - 16:05 A Detailed Look at Selected Use Cases (nie/avh) - 16:30 End Instructions for the Interactive Parts -------------------------------------- It makes sense to put the following parts to separate pages. Preparation ~~~~~~~~~~~ 1. Unzip source and binary release archives 20140323-ICPE-Tutorial/kieker-1.8-release \* $ unzip kieker-1.8_binaries.zip && mv kieker-1.8 kieker-1.8-bin 20140323-ICPE-Tutorial/kieker-1.8-release \* $ unzip kieker-1.8_sources.zip && mv kieker-1.8 kieker-1.8-src 1. Start Eclipse with new/empty workspace 20140323-ICPE-Tutorial/workspace-avh Quick Start (nie) ~~~~~~~~~~~~~~~~~ - Preparation: - Create shortlink to directory 20140323-ICPE-Tutorial in Konqueror - Create new workspace in eclipse, located in 20140323-ICPE-Tutorial/eclipse-workspace - Download -> s. Folie - Files to be found in dir: 20140323-ICPE-Tutorial/download-kieker-1.8/ - User Guide vorstellen - Extract kieker-1.8_binaries.zip to 20140323-ICPE-Tutorial/ - ... and rename to kieker-1.8-binaries - Presentation of Release Archive (Binary, Source, User Guide) - Bookstore-Beispiel mit AspectJ aus dem User Guide 1. Bookstore ohne Instrumentierung 1. Import example project ch2--bookstore-application into workspace 2. Bookstore zunächst kurz vorstellen 3. Starten ohne Instrumentierung: BookstoreStarter.java -> run as -> Java application 2. Instrumentierung mit AspectJ (Vollinstrumentierung ohne Annotationen) 1. Create directory lib/ 2. Copy kieker-1.8_aspectj.jar 3. Create directory src/META-INF 4. Copy aop.example.xml to src/META-INF/aop.xml 5. Select full aspect and include "*" 6. run with -javaagent:lib/kieker-1.8_aspectj.jar 3. Filesystem-Log 1. Show console output 2. Show .map and .dat file in Konqueror 4. TraceAnalyse mit Visualisierung 1. Add kieker-1.8_emf.jar to build path 2. Add commons-cli-1.2.jar to build path 3. Run \*TraceAnalysisTool\* (run kieker-1.8_emf.jar as "Java Application") 4. Run configuration with program arguments: - -i /tmp/kieker-20121121-150448579-UTC-pc-vanhoorn-KIEKER-SINGLETON - --plot-Deployment-Operation-Dependency-Graph - -o . 5. Show output 1. HTML-Systemmodell 2. Abhaengigkeitsgraph (Deployment-Operation + ggf. mehr) 3. Call-Tree-Varianten 4. Sequenzdiagramm -> "if possible" Monitoring (avh) ~~~~~~~~~~~~~~~~ 1. Import Kieker source project (20140323-ICPE-Tutorial/kieker-1.8-release/kieker-1.8-src/) into the workspace ("Import..."->"Import existing project into workspace") 2. Show example record CPUUtilizationRecord 3. Show example probe CPUsDetailedPercSampler Analysis (nie) ~~~~~~~~~~~~~~ 1. ... WebGUI (nie) ~~~~~~~~~~~~ 1. Mem/swap example without CPU (to be prepared) 2. Open analysis editor 3. Explain example 4. Add CPU filter 5. Start analysis 6. Cockpit JavaEE (avh) ~~~~~~~~~~~~ Quick start ^^^^^^^^^^^ 1. Change dir to prepared Jetty 20140323-ICPE-Tutorial/kieker-1.8-release/kieker-1.8-bin/examples/JavaEEServletContainerExample/jetty-hightide-jpetstore 2. Start instrumented JPetStore jetty-hightide-jpetstore \* $ java -jar start.jar 3. Explain console output and tail -f on monitoring log 4. Access JPetStore http://localhost:8080/jpetstore/ and click around 5. Create and show plots jetty-hightide-jpetstore \* $ mkdir plots jetty-hightide-jpetstore \* $ ../../../bin/trace-analysis.sh -i /tmp/kieker-20140319-150803890-UTC-avh-ThinkPad-RSS-KIEKER-EXAMPLE-JAVAEE/ -o plots/ --plot-Deployment-Component-Dependency-Graph --plot-Assembl y-Component-Dependency-Graph --plot-Deployment-Operation-Dependency-Graph responseTimes --plot-Assembly-Operation-Dependency-Graph responseTimes --print-System-Model jetty-hightide-jpetstore \* $ ../../../bin/dotPic-fileConverter.sh plots/ pdf jetty-hightide-jpetstore \* $ acroread plots/*.pdf&   Advanced ^^^^^^^^ 1. Explain instrumentation (Spring, Servlet) 2. Use a custom Kieker configuration: 1. Copy META-INF from binary release to JavaEE example jetty-hightide-jpetstore \* $ cp -R ../../../META-INF/ . 2. Edit kieker.monitoring.properties: 1. hostname=ICPE14-SRV 2. jmx=true 3. adaptiveMonitoring.enabled=true 4. kieker.monitoring.writer.filesystem.AsyncFsWriter.customStoragePath=kieker-logs 3. Create output dir jetty-hightide-jpetstore \* $ mkdir kieker-logs 4. Activate configuration in start.ini - --exec - -Dkieker.monitoring.configuration=META-INF/kieker.monitoring.properties 3. Sigar Sampler for CPU and MEM 1. Copy Sigar Jar and {dll|so|...} to webapps/WEB-INF/lib/ jetty-hightide-jpetstore $ cp ../../../lib/sigar-1.6.4.jar ../../../lib/sigar-native-libs/\* webapps/jpetstore/WEB-INF/lib/ 2. Activate kieker.monitoring.probe.servlet.CPUMemUsageServletContextListener in webapps/jpetstore/WEB-INF/web.xml 1. Restart Jetty 2. Click around a bit 3. Show log 1. Attach to Monitoring Controller via JConsole: /usr/lib/jvm/sun-jdk1.6.0_38/bin/jconsole & 1. toString 2. Demonstrate adaptive Monitoring 1. Disable public void kieker.monitoring.probe.servlet.SessionAndTraceRegistrationFilter.doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) 3. enable/disable/terminate 4. Restart Jetty 5. Click around Bonus: ^^^^^^ 1. Sigar analysis from User Guide 1. Fix project 2. Add kieker.jar and sigar.jar to build path 3. run 2. AspectJ-based instrumentation