Application Performance Monitoring with Kieker: Failure detection, capacity management, reverse engineering and more

Similar documents
Application Performance Monitoring & Architecture Discovery with Kieker

Open-Source-Software als Katalysator im Technologietransfer am Beispiel des Monitoring-Frameworks

Tool-Supported Application Performance Problem Detection and Diagnosis. André van Hoorn.

Continuous Monitoring of Software Services: Design and Application of the Kieker Framework

Capturing provenance information with a workflow monitoring extension for the Kieker framework

Self Adaptive Software System Monitoring for Performance Anomaly Localization

Towards Adaptive Monitoring of Java EE Applications

INSTITUT FÜR INFORMATIK

INSTITUT FÜR INFORMATIK

ExplorViz: Visual Runtime Behavior Analysis of Enterprise Application Landscapes

Online Performance Anomaly Detection with

Monitoring of Perl-based webapplications using Kieker

A Benchmark Engineering Methodology to Measure the Overhead of Application-Level Monitoring

Scalable and Live Trace Processing with Kieker Utilizing Cloud Computing

INSTITUT FÜR INFORMATIK

GECO: Automatic Generator-Composition for (Aspect-oriented) DSLs

GECO: Automatic Generator-Composition for (Aspect-oriented) DSLs

Continuous Integration in Kieker

KPDAYS 13 Symposium on Software Performance: Joint Kieker/Palladio Days Karlsruhe, Germany, November 27 29, 2013 Proceedings

Evaluation of Technologies for Communication between Monitoring and Analysis Component in Kieker

A Comparison of the Influence of Different Multi-Core Processors on the Runtime Overhead for Application-Level Monitoring

Development of a Concurrent and Distributed Analysis Framework for Kieker

Performance Benchmarking of Application Monitoring Frameworks

Utilizing PCM for Online Capacity Management of Component-Based Software Systems

Towards Performance Awareness in Java EE Development Environments

Performance Monitoring of Database Operations

INSTITUT FÜR INFORMATIK

A COMPARISON OF AOP BASED MONITORING TOOLS

Microservices for Scalability

Hora: Online Failure Prediction Framework for Component-based Software Systems Based on Kieker and Palladio

Oracle WebLogic Server 11g: Administration Essentials

KIEKER: CONTINUOUS MONITORING AND ON DEMAND VISUALIZATION OF JAVA SOFTWARE BEHAVIOR

Application Performance Monitoring: Trade-Off between Overhead Reduction and Maintainability

11.1 inspectit inspectit

Evaluation of Alternative Instrumentation Frameworks

Introducing Performance Engineering by means of Tools and Practical Exercises

Holistic Performance Analysis of J2EE Applications

Application Performance Monitoring: Trade-Off between Overhead Reduction and Maintainability

SPECjEnterprise2010 & Java Enterprise Edition (EE) PCM Model Generation DevOps Performance WG Meeting

SERVICE LEVEL AGREEMENT XML SCHEMA FOR SOFTWARE QUALITY ASSURANCE

Performance Modeling for Web based J2EE and.net Applications

Performance Monitoring for a Web-based Information System

5 Days Course on Oracle WebLogic Server 11g: Administration Essentials

Operations and Monitoring with Spring

Decomposition into Parts. Software Engineering, Lecture 4. Data and Function Cohesion. Allocation of Functions and Data. Component Interfaces

Integrating the Palladio-Bench into the Software Development Process of a SOA Project

SOA management challenges. After completing this topic, you should be able to: Explain the challenges of managing an SOA environment

Evaluation of Control Flow Traces in Software Applications for Intrusion Detection

Winning the J2EE Performance Game Presented to: JAVA User Group-Minnesota

Scalable and Live Trace Processing in the Cloud

Internet Engineering: Web Application Architecture. Ali Kamandi Sharif University of Technology Fall 2007

Converting Java EE Applications into OSGi Applications

Concern Highlight: A Tool for Concern Exploration and Visualization

WebSphere Application Server - Introduction, Monitoring Tools, & Administration

IBM WebSphere Server Administration

Towards a Performance Model Management Repository for Component-based Enterprise Applications

WebSphere Server Administration Course

JAVA/J2EE DEVELOPER RESUME

Beginning POJOs. From Novice to Professional. Brian Sam-Bodden

This training is targeted at System Administrators and developers wanting to understand more about administering a WebLogic instance.

Architecture Rules Enforcement and Governance Using Aspects

EUROPEAN ORGANIZATION FOR NUCLEAR RESEARCH CERN ACCELERATORS AND TECHNOLOGY SECTOR A REMOTE TRACING FACILITY FOR DISTRIBUTED SYSTEMS

A Case Study on Model-Driven and Conventional Software Development: The Palladio Editor

Course Description. Course Audience. Course Outline. Course Page - Page 1 of 5

Automatic Extraction of Probabilistic Workload Specifications for Load Testing Session-Based Application Systems

FUSE-ESB4 An open-source OSGi based platform for EAI and SOA

WEBSPHERE APPLICATION SERVER ADMIN V8.5 (on Linux and Windows) WITH REAL-TIME CONCEPTS & REAL-TIME PROJECT

On the Specification of Non-Functional Properties of Systems by Observation

Glassbox: Open Source and Automated Application Troubleshooting. Ron Bodkin Glassbox Project Leader

Realization Strategies for Rich Clients by Web Services

How to Build an E-Commerce Application using J2EE. Carol McDonald Code Camp Engineer

WebSphere Business Modeler

Mohammed Khan SUMMARY

Efficient Monitoring of OSGi Applications

WEBAPP PATTERN FOR APACHE TOMCAT - USER GUIDE

LDIF - Linked Data Integration Framework

Instrumentation Software Profiling

Encapsulating Crosscutting Concerns in System Software

Enterprise Application Development In Java with AJAX and ORM

Research Article. ISSN (Print) *Corresponding author Lili Wang

Oracle9i Data Warehouse Review. Robert F. Edwards Dulcian, Inc.

CHAPTER 1 - JAVA EE OVERVIEW FOR ADMINISTRATORS

Java Metadata Interface and Data Warehousing

Oracle WebLogic Server 11g Administration

DEPLOYMENT ARCHITECTURE FOR JAVA ENVIRONMENTS

Model-Driven Data Warehousing

Oracle Identity Analytics Architecture. An Oracle White Paper July 2010

Web Application Testing. Web Performance Testing

Augmented Search for Web Applications. New frontier in big log data analysis and application intelligence

Approaching the Cloud: Using Palladio for Scalability, Elasticity, and Efficiency Analyses

Deploying Rule Applications

zen Platform technical white paper

Oracle Exam 1z0-599 Oracle WebLogic Server 12c Essentials Version: 6.4 [ Total Questions: 91 ]

U.S. Navy Automated Software Testing

Resource Provisioning in Clouds via Non-Functional Requirements

Java EE Web Development Course Program

Performance Optimization For Operational Risk Management Application On Azure Platform

Towards Integrating Modeling and Programming Languages: The Case of UML and Java

WEBLOGIC ADMINISTRATION

Transcription:

Application Performance Monitoring with Kieker: Failure detection, capacity management, reverse engineering and more Wilhelm Hasselbring, Reiner Jung Software Engineering Group, Kiel University http://se.informatik.uni-kiel.de/ with contributions by Till Bielefeld (Voltremote), Nils Ehmke, Florian Fitkau, Sören Frey, André van Hoorn (Uni Stuttgart), Holger Knoche (b+m), Matthias Rohr (BTC), Jan Waller, Christian Wulf, and others SPP Design for Future, Aachen, March st, 03

Agenda Monitoring for Dynamic Analysis Kieker Monitoring & Analysis Framework 3 Failure Detection 4 Reverse Engineering 5 Capacity Management 6 Kieker Hands On 7 Summary and Outlook Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future / 5

First: Static Analysis Monitoring for Dynamic Analysis Various approaches with varying objectives, some examples: Code Metrics JavaNCSS Coding rules Checkstyle Bug patterns FindBugs Clon detection Bauhaus Architecture analysis Sotograph Static analysis may be applied directly on the program code. Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 3 / 5

Dynamic Analysis of Runtime Behavior Monitoring for Dynamic Analysis Static analysis may asses the structure of software systems, but the actual runtime behavior may only be assessed via dynamic analysis. Profiling (during development) allows for dynamic analysis, but usually not under real workload conditions. Monitoring (during operation) allows for continuous dynamic analysis of the actual runtime behavior under real workload conditions. Appreciating the requirements of operating software systems is required while constructing software systems Continuous monitoring is such a requirement. Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 4 / 5

Monitoring on different system layers Monitoring for Dynamic Analysis Business/Service Monitoring Application Monitoring System Monitoring Business Processes Services Application Middleware Container Operating System Hardware Infrastructure Key performance indicators, e.g., process throughput time,... SLO compliance, workload,... Response times, operational profile,... Connection pool size,... Thread pool size, heap size,... CPU/Memory utilization,... Availability, reliability,... Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 5 / 5

What is done with large-scale systems? Example: Facebook Monitoring for Dynamic Analysis Scaling Facebook to 500 Million Users and Beyond Making lots of small changes and watching what happens only works if you re actually able to watch what happens. At Facebook we collect an enormous amount of data - any particular server exports tens or hundreds of metrics that can be graphed. This isn t just system level things like CPU and memory, it s also application level statistics to understand why things are happening. It s important that the statistics are from the real production machines that are having the problems, when they re having the problems the really interesting things only show up in production. The stats also have to come from all machines, because a lot of important effects are hidden by averages and only show up in distributions, in particular 95th or 99th percentile. Robert Johnson, Facebook Engineering Director Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 6 / 5

Agenda <<Reader>> : FS reader Writing (W) CreateVehicleEJB CreateVehicleWS Purchase Manage Browse (b) macro-benchmark operationexecutions traceevents outputport <<Filter>> : Trace reconstruction filter (a) micro-benchmark <<Filter>> : Performance anomaly filter <<Repository>> : System model repository systemmodel systemmodel messagetraces executiontraces anomalyratings anomalyratings messagetraces messagetraces <<Filter>> : Anomaly graph plotter systemmodel <<Filter>> : Sequence diagram visualization se.informatik.uni-kiel.de systemmodel <<Filter>> : Dependency graph visualization.0.5.0 0.5 0.0 Workload Anomaly Detection $ searchbook() 635 SRV0:: @3:..Bookstore Calendar time (hh:mm) getbook(..) @3:..Bookstore 0.75 SRV0:: @:..Catalog 0.50 Anomaly score getoffers() 0.5 0.0 SRV0:: @:..CRM M M getbook(..) <<execution container>> SRV0 @:..CRM 09 543 M M SRV:: @:..Catalog 573 06 M M M @:..Catalog getbook(..) <<execution container>> SRV @:..Catalog getbook(..) Kieker.Monitoring Monitoring Log/Stream Monitoring Monitoring Monitoring Probe Probe Probe Monitoring Controller Monitoring Writer Monitoring Record Serialization Deserialization Monitoring Monitoring Monitoring Reader Reader Reader Analysis Controller Analysis / Analysis // Visualization Visualization Plugin Plugin Kieker.Analysis AspectJ Servlet System time <your time source> Database (SQL) Named pipe <your monitoring writer> Operation execution Control-flow events CPU utilization Resource utilization Current time Manual instrumentation Spring CXF/SOAP <your interception technology> CPU utilization Memory usage <your technology> <your monitoring probe> File system Java Messaging Servcice (JMS) Java Management Ext. (JMX) Database (SQL) File system <your monitoring record type> File system Java Messaging Service (JMS) Java Management Ext. (JMX) Database (SQL) Named pipe <your monitoring reader> Output stream Memory/swap usage Real-time replayer Dependency graphs Sequence diagrams Call graphs <your visualization> <your trace analysis> <your reconstruction plugin> <your analysis plugin/tool> Kieker Monitoring & Analysis Framework Monitoring for Dynamic Analysis Kieker Monitoring & Analysis Framework Introduction Architecture Program Instrumentation Analysis Visualization Overhead Evaluation 3 Failure Detection 4 Reverse Engineering Reverse Engineering of Java EE Reverse Engineering von C# Reverse Engineering of COBOL Reverse Engineering of VB 6 5 Capacity Management 6 Kieker Hands On 7 Summary and Outlook Kieker: A Framework for Application Performance Monitoring and Dynamic Software Analysis www.kieker-monitoring.net Continuous Application Performance Monitoring for Online and Offline Analysis Static analysis is not sufficient to study the internal behavior of software systems comprehensively Continuous monitoring allows to gather a system's actual runtime behavior resulting from production usage profiles The obtained monitoring data can, for instance, be used for Performance evaluation (e.g., bottleneck detection) (Self-)adaptation control (e.g., capacity management) Application-level failure detection and diagnosis Instrumentation and Monitoring Overhead Framework Characteristics Pipe-and-Filter Configuration for Analysis/Visualization Invited Tool Demo @ ICPE 0 Includes probes for collecting timing, control flow, and resource utilization Support for various Java instrumentation methods, e.g., AspectJ, middleware interception, Servlet filters Micro-benchmarks revealed low overhead Each activation adds constant overhead (linear scaling) Modular, flexible, and extensible architecture Extensible probes, readers, writers, records, and plugins Integrated monitoring record type model for monitoring and analysis Allows to log, reconstruct, analyze, and visualize distributed traces Designed for continuous operation in multi-user systems Evaluated in lab experiments and industrial case studies (since 006) Kieker is open-source software (Apache License, V..0) A. van Hoorn, J. Waller, and W. Hasselbring. Kieker: A Framework for Application Performance Monitoring and Dynamic Software Analysis. Proc. 3rd ACM/SPEC Int. Conf. Perform. Eng. (ICPE '), ACM, 0 Invocations/minute [x 000] Software Engineering Group Department of Computer Science University of Kiel, Germany Simulation (workload, measurement, logging, and analysis) Software maintenance, reverse engineering, modernization Service-level management 635 searchbook() getoffers() Periodic Sampling JMX Interface Logging Logging Time Source Current Activities/Coming Soon Monitoring adapters for.net, VB6, COBOL etc. Model-driven instrumentation & analysis Web-based graphical user interface Plugins for analysis of concurrent behavior Monitoring Probes/Samplers Time Sources Monitoring Writers Monitoring Records Monitoring Readers Control-flow tracing Sigar Servlet Resource monitoring Kieker is distributed as part of SPEC RG's repository of peer-reviewed tools for quantitative system evaluation and analysis Asynchr. writers Syncr. Architecture reconstr. Pipe-and-filter framework Analysis/Visualization Plugins Trace analysis Visualization Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 7 / 5

Kieker Monitoring & Analysis Framework Essential features [Rohr et al. 008, van Hoorn et al. 009; 0] Kieker Monitoring & Analysis Framework Introduction Modular, flexible, and extensible architecture (Probes, records, readers, writers, filters etc.) Pipes-and-filters framework for analysis configuration Distributed tracing (Spring, SOAP, etc.) Low overhead (designed for continuous operation) Evaluated in lab and industrial case studies Kieker.Monitoring Periodic Sampling JMX Interface Monitoring Monitoring Monitoring Probe Probe Probe Logging Monitoring Controller Logging Monitoring Writer Serialization Time Source Monitoring Probes/Samplers Time Sources Monitoring Writers Control-flow tracing Resource monitoring System time <your time source> Asynchr. writers Syncr. Manual instrumentation AspectJ Servlet Database (SQL) Named pipe <your monitoring writer> Operation execution Spring CXF/SOAP <your interception technology> Servlet Sigar CPU utilization Memory usage <your technology> <your monitoring probe> File system Java Messaging Service (JMS) Java Management Ext. (JMX) Database (SQL) File system Output stream Kieker is Open-Source Software (Apache License, V..0) http://kieker-monitoring.net Recommended Tool of the SPEC Research Group Monitoring Log/Stream Monitoring Record Deserialization Monitoring Monitoring Monitoring Reader Reader Reader Monitoring Records Monitoring Readers Control-flow events CPU utilization Resource utilization Current time <your monitoring record type> File system Java Messaging Service (JMS) Java Management Ext. (JMX) Database (SQL) Named pipe Memory/swap usage Real-time replayer Kieker is distributed as part of SPEC RG s repository of peer-reviewed tools for quantitative system evaluation and analysis, http://research.spec.org/projects/tools.html Analysis Controller Analysis / Analysis // Visualization Visualization Plugin Plugin Kieker.Analysis Analysis/Visualization Plugins <your monitoring reader> Pipe-and-filter framework Architecture reconstr. Trace analysis Visualization Dependency graphs Sequence diagrams Call graphs <your visualization> <your trace analysis> <your reconstruction plugin> <your analysis plugin/tool> Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 8 / 5

Kieker s Evolution 006 0 Diplomand Erstprüfer Zweitprüfer Betreuer Trustworthy Software Systems Certification Quality of Service Component Technology DEPARTMENT FÜR INFORMATIK Thilo Focke Am Schloßgarten 4 SOFTWARE ENGINEERING Diplomarbeit 3. März 006 6 Oldenburg thilo.focke@informatik.uni-oldenburg.de Prof. Dr. Wilhelm Hasselbring Prof. Dr. Ralf Reussner (Universität Karlsruhe) MIT Matthias Rohr Dipl.-Math. Johannes-Gerhard Schute Kieker Monitoring & Analysis Framework Introduction 007 006 008 00 009 0 0 Correctness Safety Availability Reliability Performance Security Privacy Performance Monitoring von Middleware-basierten Applikationen 006 007 008 009 00 0 0 Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 9 / 5

Kieker s Evolution 006 0 Diplomand Erstprüfer Zweitprüfer Betreuer Trustworthy Software Systems Certification Quality of Service Component Technology DEPARTMENT FÜR INFORMATIK Thilo Focke Am Schloßgarten 4 SOFTWARE ENGINEERING Diplomarbeit 3. März 006 6 Oldenburg thilo.focke@informatik.uni-oldenburg.de Prof. Dr. Wilhelm Hasselbring Prof. Dr. Ralf Reussner (Universität Karlsruhe) MIT Matthias Rohr Dipl.-Math. Johannes-Gerhard Schute Kieker Monitoring & Analysis Framework Introduction 007 006 008 00 009 0 0 Correctness Safety Availability Reliability Performance Security Privacy Performance Monitoring von Middleware-basierten Applikationen 006 007 008 009 00 0 0 Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 9 / 5

Kieker s Evolution 006 0 Diplomand Erstprüfer Zweitprüfer Betreuer Trustworthy Software Systems Certification Quality of Service Component Technology DEPARTMENT FÜR INFORMATIK Thilo Focke Am Schloßgarten 4 SOFTWARE ENGINEERING Diplomarbeit 3. März 006 6 Oldenburg thilo.focke@informatik.uni-oldenburg.de Prof. Dr. Wilhelm Hasselbring Prof. Dr. Ralf Reussner (Universität Karlsruhe) MIT Matthias Rohr Dipl.-Math. Johannes-Gerhard Schute Kieker Monitoring & Analysis Framework Introduction 007 006 008 00 009 0 0 Correctness Safety Availability Reliability Performance Security Privacy Performance Monitoring von Middleware-basierten Applikationen 0.5 0.6 006 007 008 009 00 0 0 versions 0.5/0.6 - st Sourceforge releases - Monitoring Component - Tpmon - DB and FS Writer (sync&async) - Java classes - AspectJ probes - (Analysis component - Tpan - not part of the releases) Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 9 / 5

Kieker s Evolution 006 0 Diplomand Erstprüfer Zweitprüfer Betreuer Trustworthy Software Systems Certification Quality of Service Component Technology DEPARTMENT FÜR INFORMATIK Thilo Focke Am Schloßgarten 4 SOFTWARE ENGINEERING Diplomarbeit 3. März 006 6 Oldenburg thilo.focke@informatik.uni-oldenburg.de Prof. Dr. Wilhelm Hasselbring Prof. Dr. Ralf Reussner (Universität Karlsruhe) MIT Matthias Rohr Dipl.-Math. Johannes-Gerhard Schute Kieker Monitoring & Analysis Framework Introduction 007 006 008 00 009 0 0 Correctness Safety Availability Reliability Performance Security Privacy Performance Monitoring von Middleware-basierten Applikationen 0.5 0.6 0.9 0.95a.0 006 007 008 009 00 0 0 version 0.9 - Distributed monitoring - Servlet, CXF, and Spring probes - 36 Java classes Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 9 / 5

Kieker s Evolution 006 0 Diplomand Erstprüfer Zweitprüfer Betreuer Trustworthy Software Systems Certification Quality of Service Component Technology DEPARTMENT FÜR INFORMATIK Thilo Focke Am Schloßgarten 4 SOFTWARE ENGINEERING Diplomarbeit 3. März 006 6 Oldenburg thilo.focke@informatik.uni-oldenburg.de Prof. Dr. Wilhelm Hasselbring Prof. Dr. Ralf Reussner (Universität Karlsruhe) MIT Matthias Rohr Dipl.-Math. Johannes-Gerhard Schute Kieker Monitoring & Analysis Framework Introduction 007 006 008 00 009 0 0 Correctness Safety Availability Reliability Performance Security Privacy Performance Monitoring von Middleware-basierten Applikationen 0.5 0.6 0.9 0.95a.0 006 007 008 009 00 0 0 versions 0.95a/.0 - Major architectural changes (009 TR) - Generalized/extensible monitoring record model - Generalized/extensible writer/reader model - First release containing parts of the analysis component - Micro-benchmark - Version.0: 8 Java class files + 8 Java test files Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 9 / 5

Kieker s Evolution 006 0 Diplomand Erstprüfer Zweitprüfer Betreuer Trustworthy Software Systems Certification Quality of Service Component Technology DEPARTMENT FÜR INFORMATIK Thilo Focke Am Schloßgarten 4 SOFTWARE ENGINEERING Diplomarbeit 3. März 006 6 Oldenburg thilo.focke@informatik.uni-oldenburg.de Prof. Dr. Wilhelm Hasselbring Prof. Dr. Ralf Reussner (Universität Karlsruhe) MIT Matthias Rohr Dipl.-Math. Johannes-Gerhard Schute Kieker Monitoring & Analysis Framework Introduction 007 006 008 00 009 0 0 Correctness Safety Availability Reliability Performance Security Privacy Performance Monitoring von Middleware-basierten Applikationen JUnit 0.5 0.6 0.9 0.95a.0.. 006 007 008 009 00 0 0 version. - User Guide version. - TraceAnalysis tool - System meta-model - On-the-fly trace reconstruction - 4 Java classes Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 9 / 5

Kieker s Evolution 006 0 Diplomand Erstprüfer Zweitprüfer Betreuer Trustworthy Software Systems Certification Quality of Service Component Technology DEPARTMENT FÜR INFORMATIK Thilo Focke Am Schloßgarten 4 SOFTWARE ENGINEERING Diplomarbeit 3. März 006 6 Oldenburg thilo.focke@informatik.uni-oldenburg.de Prof. Dr. Wilhelm Hasselbring Prof. Dr. Ralf Reussner (Universität Karlsruhe) MIT Matthias Rohr Dipl.-Math. Johannes-Gerhard Schute Kieker Monitoring & Analysis Framework Introduction 007 006 008 00 009 0 0 Correctness Safety Availability Reliability Performance Security Privacy JUnit Performance Monitoring von Middleware-basierten Applikationen FindBugs regular meetings 0.5 0.6 0.9 0.95a.0...3.4 006 007 008 009 00 0 0 version.3 - Various new features - Improved configuration management - Initial version submitted to SPEC RG - 05 Java classes + 4 test classes Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 9 / 5

Kieker s Evolution 006 0 Diplomand Erstprüfer Zweitprüfer Betreuer Trustworthy Software Systems Certification Quality of Service Component Technology DEPARTMENT FÜR INFORMATIK Thilo Focke Am Schloßgarten 4 SOFTWARE ENGINEERING Diplomarbeit 3. März 006 6 Oldenburg thilo.focke@informatik.uni-oldenburg.de Prof. Dr. Wilhelm Hasselbring Prof. Dr. Ralf Reussner (Universität Karlsruhe) MIT Matthias Rohr Dipl.-Math. Johannes-Gerhard Schute Kieker Monitoring & Analysis Framework Introduction 007 006 008 00 009 0 0 Correctness Safety Availability Reliability Performance Security Privacy JUnit Performance Monitoring von Middleware-basierten Applikationen FindBugs regular meetings 0.5 0.6 0.9 0.95a.0...3.4 006 007 008 009 00 0 0 version.4 - Major improvements to code quality - Revised version for SPEC RG Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 9 / 5

Kieker s Evolution 006 0 Diplomand Erstprüfer Zweitprüfer Betreuer Trustworthy Software Systems Certification Quality of Service Component Technology DEPARTMENT FÜR INFORMATIK Thilo Focke Am Schloßgarten 4 SOFTWARE ENGINEERING Diplomarbeit 3. März 006 6 Oldenburg thilo.focke@informatik.uni-oldenburg.de Prof. Dr. Wilhelm Hasselbring Prof. Dr. Ralf Reussner (Universität Karlsruhe) MIT Matthias Rohr Dipl.-Math. Johannes-Gerhard Schute Kieker Monitoring & Analysis Framework Introduction 007 006 008 00 009 0 0 Correctness Safety Availability Reliability Performance Security Privacy iobserve ESN SL JUnit Performance Monitoring von Middleware-basierten Applikationen FindBugs regular meetings 0.5 0.6 0.9 0.95a.0...3.4.5.6 006 007 008 009 00 0 0 version.5 - Completely reworked pipes-and-filters framework - Event-based tracing - 84 Java classes + 9 test classes Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 9 / 5

Kieker s Evolution 006 0 Diplomand Erstprüfer Zweitprüfer Betreuer Trustworthy Software Systems Certification Quality of Service Component Technology DEPARTMENT FÜR INFORMATIK Thilo Focke Am Schloßgarten 4 SOFTWARE ENGINEERING Diplomarbeit 3. März 006 6 Oldenburg thilo.focke@informatik.uni-oldenburg.de Prof. Dr. Wilhelm Hasselbring Prof. Dr. Ralf Reussner (Universität Karlsruhe) MIT Matthias Rohr Dipl.-Math. Johannes-Gerhard Schute Kieker Monitoring & Analysis Framework Introduction 007 006 008 00 009 0 0 Correctness Safety Availability Reliability Performance Security Privacy iobserve ESN SL JUnit Performance Monitoring von Middleware-basierten Applikationen FindBugs regular meetings 0.5 0.6 0.9 0.95a.0...3.4.5.6 006 007 008 009 00 0 0 version.6 - Adaptive Monitoring - WebGUI (beta) - 375 Java classes + 47 test classes Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 9 / 5

Kieker s Evolution 006 0 Diplomand Erstprüfer Zweitprüfer Betreuer Trustworthy Software Systems Certification Quality of Service Component Technology DEPARTMENT FÜR INFORMATIK Thilo Focke Am Schloßgarten 4 SOFTWARE ENGINEERING Diplomarbeit 3. März 006 6 Oldenburg thilo.focke@informatik.uni-oldenburg.de Prof. Dr. Wilhelm Hasselbring Prof. Dr. Ralf Reussner (Universität Karlsruhe) MIT Matthias Rohr Dipl.-Math. Johannes-Gerhard Schute Kieker Monitoring & Analysis Framework Introduction 007 006 008 00 009 0 0 Correctness Safety Availability Reliability Performance Security Privacy iobserve ESN SL JUnit Performance Monitoring von Middleware-basierten Applikationen FindBugs regular meetings 0.5 0.6 0.9 0.95a.0...3.4.5.6 006 007 008 009 00 0 0 Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 9 / 5

Kieker: Monitoring Workflow SRV0:: getbook(..) SRV0:: getoffers() SRV0:: @:..CRM $ 635 getbook(..) SRV:: @:..CRM 09 543 573 06 Kieker Monitoring & Analysis Framework Architecture Analysis configuration (Web GUI) Analysis Plugins Workload Anomaly Detection.0 @3:..Bookstore 0.75 @:..Catalog @:..Catalog Invocations/minute [x 000].5 searchbook() 0.50 Anomaly score @3:..Bookstore <<execution container>> SRV0 635 searchbook() getoffers().0 0.5 @:..Catalog getbook(..) 0.5 0.0 <<execution container>> SRV @:..Catalog 0.0 Calendar time (hh:mm) getbook(..) Visualizations Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 0 / 5

Core Kieker Framework Components Kieker Monitoring & Analysis Framework Architecture Kieker.Monitoring Monitoring Probe Monitoring Record Java probes/samplers: Monitoring Probes/Samplers Control-flow tracing Resource monitoring Manual instrumentation AspectJ Servlet Spring CXF/SOAP <your interception technology> Servlet Sigar CPU utilization Memory usage <your technology> <your monitoring probe> + basic adapters for C#/.NET Visual Basic 6/COM COBOL Monitoring Records Operation execution Control-flow events CPU utilization Resource utilization Current time Memory/swap usage <your monitoring record type> Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future / 5

Core Kieker Framework Components Kieker Monitoring & Analysis Framework Architecture Kieker.Monitoring Monitoring Log/Stream Time Source Monitoring Probe Logging Monitoring Controller Monitoring Writer Monitoring Record Periodic Sampling JMX Interface Monitoring Readers/Writers File system Java Messaging Service (JMS) Java Management Ext. (JMX) Database (SQL) Named pipe <your monitoring reader/writer> Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future / 5

Core Kieker Framework Components Kieker Monitoring & Analysis Framework Architecture Kieker.Monitoring Time Source Monitoring Log/Stream Kieker.Analysis Pipe & Filter Configuration Monitoring Probe Logging Monitoring Controller Monitoring Writer Monitoring Record Monitoring Reader Analysis / Visualization Plugin Analysis Controller Periodic Sampling JMX Interface Analysis/Visualization Plugins Pipe-and-filter framework Architecture reconstr. Trace analysis Visualization Dependency graphs Sequence diagrams Call graphs <your visualization> <your trace analysis> <your reconstruction plugin> <your analysis plugin/tool> Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future / 5

Communication Among Kieker Components Kieker Monitoring & Analysis Framework Architecture * : IMonitoringProbe * : MonitoringController : IMonitoringWriter : AnalysisController * 4.: inputrecord(record) : IFilterPlugin..*..* * * : IMonitoringReaderPlugin *... * * * : IMonitoringRecord Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future / 5

Program Instrumentation (Here: Manual) Example: Monitoring Operation Executions Kieker Monitoring & Analysis Framework Program Instrumentation Application code: Monitoring probe code (schematic): public void getoffers() { // EXECUTION to be monitored: catalog.getbook(false); } // BEFORE execution to be monitored if (!ismonitoringenabled()) { collectdatabefore(); } // AFTER execution to be monitored if (!ismonitoringenabled()) { collectdataafter(); writemonitoringdata(); } Instrumentation Getting the monitoring probe into the code Manual instrumentation Aspect-Oriented Programming (AOP), middleware interception,... Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 3 / 5

ration is woven (b). Aspect-Oriented Programming (AOP) Kieker Monitoring & Analysis Framework Program Instrumentation aspect weaver basic functionality program aspect programming languages woven output code aspect description programs.8: AOP An aspect Aspect-oriented weaver weaves programming the aspects (following and thekiczales functional et al. part [997]) of an app tion into a single binary (following (Kiczales et al., 997)). Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 4 / 5

description of the respective aspect probemethod, Tpmon saves AOP-Based Instrumentation by the Annotation current time before and after b is executed. Kieker Monitoring & Analysis Figure Framework.7: Sample system Program instrumented Instrumentation with Tpmon (a) and how an annotated operation is woven (b). aspect weaver basic functionality program aspect programming languages woven output code aspect description programs Figure.8: An aspect weaver weaves the aspects and the functional part of an application into a single binary (following (Kiczales et al., 997)). @OperationExecutionMonitoringProbe 3 public void getoffers() { 4 4 catalog.getbook(false); 5 } 6} Annotation-based (AOP) instrumentation for monitoring trace information Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 5 / 5

Visualization of Calling Networks Clustering the Monitoring Log [Zheng et al. 0] Kieker Monitoring & Analysis Framework Analysis Visualization Community structure Layered structure hierarchy Xi an Jiaotong University, Shaanxi [Zheng et al. 0] Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 6 / 5

akes it possible to access the facts using data visualisation and data analysis chniques, Visualization hence obtaining of Architecture a higher level of understanding Warehouses of those facts, that is taining knowdledge. In this section I deepen the definition by several examples. Artifacts of the JUnit project [Dabrowski 0] Kieker Monitoring & Analysis Framework Analysis Visualization Fig.. Graph-based visualisation of artifacts in junit project Warsaw University [Dabrowski 0] Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 7 / 5

3D Visualization [Döhring 0], based on Wulf [00] Kieker Monitoring & Analysis Framework Analysis Visualization Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 8 / 5

Overhead Evaluation Linear Rise of Overhead [Waller and Hasselbring 0] Kieker Monitoring & Analysis Framework Overhead Evaluation Execution time (median in µs) 580 560 540 50 500 Writing (W) Collecting (C) Instrumentation (I) Method Time (T) 7, Slope ( ) 0. 0.9 59,8 5,7 4, 30,0,7 3, 5,0 0.,0 7,6 6,8 0, 0,7,5 3,3 4 8 6 3 64 Recursion depth (number of successive method calls) Experiment similar to: A5 AsyncFS writer 6 cores whole system is available MSEPT 0 Mul core Influence on Applica on Level Monitoring Overhead Jan Waller and Wilhelm Hasselbring 3.05. 4 Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 9 / 5

Agenda [ 369/967 0,046 0,8,7% ] [ 6365/437 0,6 0,006 3,4% ] [ 640/437 0,6 0,06,8% ] [ 967/967 0,995 0,406 4,43% ] [ 967/967 0,995 0,488 4,69% ] [ 6309/349 0,6 0,037 3,04% ] Failure Detection Monitoring for Dynamic Analysis Kieker Monitoring & Analysis Framework 3 Failure Detection 4 Reverse Engineering 5 Capacity Management 6 Kieker Hands On 7 Summary and Outlook $ 409 43498 088 98 Virtual Machine tier Virtual Machine scooter Virtual Machine puck [ 447/6098 0,03 5,90% ] [ 88/76 0,07 3,43% ] [ 447/943 0,03 4,48% ] Deployment Context Level Component Level Virtual Machine klotz 409 org.apache.struts.action.actionservlet [ 487/85960 0,90 7,8% ] 397 70 6837 088 presentation.orderbean presentation.cartbean presentation.catalogbean presentation.accountbean [ 454/397 0,094 7,8% ] [ 07/70 0,087 5,99% ] [ 838/6837 0,048 6,88% ] [ 494/088 0,06 6,6% ] 98 44 47353 088 088 service.hessian.client.orderservice [ 484/98 0,057 6,9% ] service.hessian.client.accountservice [ 53/088 0,033 6,35% ] 98 43498 088 Component Level Operation Level service.hessian.client.catalogservice 967 349 088 967 349 getproduct(string) getproductlistbycategory(string) getitemlistbyproduct(string) getcategory(string) 967 437 967 349 getproductlistbycategory(string,int,int) getitemlistbyproduct(string,int,int) 437 Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 0 / 5

Pipe-and-Filter Configuration Failure Detection <<Reader>> : FS reader operationexecutions outputport <<Filter>> : Performance anomaly filter systemmodel <<Repository>> : System model repository anomalyratings anomalyratings <<Filter>> : Anomaly graph plotter Kieker.Analysis example pipes-and-filters configuration Performance anomaly detection and visualization Architecture and trace reconstruction/visualization Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future / 5

Performance Anomaly Detection A typical example for using a monitoring framework Failure Detection 4 3 Realized and deployed at Xing AG [Bielefeld 0]. Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future / 5

Agenda Reverse Engineering Monitoring for Dynamic Analysis Kieker Monitoring & Analysis Framework Introduction Architecture Program Instrumentation Analysis Visualization Overhead Evaluation 3 Failure Detection 4 Reverse Engineering Reverse Engineering of Java EE Reverse Engineering von C# Reverse Engineering of COBOL Reverse Engineering of VB 6 5 Capacity Management 6 Kieker Hands On 7 Summary and Outlook Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 3 / 5

Extending the Pipe-and-Filter Configuration $ @:..CRM 09 543 573 @:..Catalog getbook(..) Reverse Engineering <<Reader>> : FS reader traceevents outputport <<Filter>> : Trace reconstruction filter <<Repository>> : System model repository systemmodel messagetraces executiontraces messagetraces messagetraces systemmodel <<Filter>> : Sequence diagram visualization systemmodel <<Filter>> : Dependency graph visualization searchbook() SRV0:: @3:..Bookstore getbook(..) SRV0:: @:..Catalog getoffers() SRV0:: @:..CRM <<execution container>> SRV0 getbook(..) SRV:: @:..Catalog 635 @3:..Bookstore 635 searchbook() getoffers() Kieker.Analysis example pipes-and-filters configuration Performance anomaly detection and visualization Architecture and trace reconstruction/visualization 06 <<execution container>> SRV @:..Catalog getbook(..) Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 4 / 5

Generated Sequence Diagram Reverse Engineering Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 5 / 5

Web-based GUI for Configuring the Analysis Plugins Reverse Engineering Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 6 / 5

Reverse Engineering of Java EE Customer portal of EWE TEL GmbH Reverse Engineering Reverse Engineering of Java EE Distributed Enterprise Java System instrumented subsystem <<device>> Front End Server (on site) <<device>> Client <<device>> 0.. H/W LB * * <<execution environment>> Web Server/ Java EE Container <<artifact>> PortalServiceA <<artifact>> PortalServiceB <<artifact>> PortalServiceC <<device>> Application Server <<execution environment>> Java EE Container <<artifact>> BusinessServices M N <<device>> DB Cluster <<device>> Back End System <<device>> 3rd Party System 0.. <<device>> Front End Server (off site) K Servlet, Spring and CXF/SOAP probes Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 7 / 5

Software architecture level Component dependency graph Reverse Engineering Reverse Engineering of Java EE $ 5785 5556 97 <<execution container>> css0 <<execution container>> css 00 77540 7740 75894 7589 <<execution container>> pikdb0 <<execution container>> pikdb Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 8 / 5

System architecture level Component dependency graph Reverse Engineering Reverse Engineering of Java EE $ 53 5300 0035 75894 <<execution container>> css @:..KiekerRequestRegistrationAndLoggingFilter @:..KiekerTpmonResponseInProbe dofilter(..) <<execution container>> css0 @:..KiekerRequestRegistrationAndLoggingFilter @:..KiekerTpmonResponseInProbe dofilter(..) 0475 97 4975 5099 00 handlemessage(..) handlemessage(..) 7589 77540 7740 @3:..KiekerTpmonResponseOutProbe handlemessage(..) @3:..KiekerTpmonResponseOutProbe handlemessage(..) <<execution container>> pikdb0 70 78 9 5 4 50 5 6 86 98 7 30 30 39 370 4 0 83 74 43 60 68 63 54 555 3 3 8 8 0 7 44 9 5 5 84 456 8 9 6 44 4 0 6 69 486 38 5 7 8 36 30 5 66 86 365 6634 3 4 73 7 3 8 88 94 58 65 7 664 <<execution container>> pikdb 7 74 6 4 66 60 4 9 4 43 8 69 8 499 496 399 4 6 65 3 7 4 8 6 5 57 7 55 46 59 59 686 5 4 8 447 83 4 4 38 3 6 59 96 94 734 9 6 7 5 33 85 57 4 64 573 499 9 43 0 78 3606 633 6586 3 8 6 3 84 93 64 5 @9:..DnsService isuptodate(..) getzone(..) deleteresourcerecord(..) addresourcerecord(..) modifyresourcerecord(..) @7:..WebhostingService getwebuserids(..) getwebhostingcategories(..) updateftpaccount(..) updatemysql(..) terminateftpaccount(..) createftpaccount(..) changedomainusagecategory(..) createwebspace(..) getwebspacesubdirectories(..) getwebhostingcategory(..) getprowebdomainnames(..) getwebhostingdetails(..) getwebspacequota(..) getemailfrommasteraccount(..) createwebstatssession(..) getavailablephpversions(..) hasproweb(..) @8:..SupportService addsmscontact(..) sendsupportrequest(..) getsmsauthorizations(..) getftpquota(..) getincreasebandwidthresult(..) getorderstaticipresult(..) getmailquota(..) getsmscontacts(..) sendsms(..) getantivirlicenselist(..) getsmsnumbers(..) removesmscontact(..) queuesms(..) getvirtualserverenvironment() setsmsauthorizations(..) getsmsauthorization(..) createwlanaccount(..) addantivirlicense(..) getmysqlversion(..) activatesmsnumber(..) createsmstoken(..) scheduleantivirlicenseactivation(..) getmysqlquota(..) @6:..DomainService isdomainfree(..) getdomains(..) gettopleveldomains(..) getdomains(..) reassigndomain(..) createsubdomain(..) restartdomaintransfer(..) getfederalstateforzipcode(..) getdomaininfo(..) getdomaincategory(..) performdomainorder(..) isvalidcontact(..) @4:..EmailService updatevacationinfo(..) getmailaccounts(..) updateemailforward(..) getvacationinfo(..) deleteemailvirusscan(..) addemailvirusscan(..) updatespamfilterconfiguration(..) removelistentryfromspamfilter(..) createemailaccount(..) addemailalias(..) deleteemailalias(..) getspamfilterconfiguration(..) addlistentrytospamfilter(..) deleteemailaccount(..) @5:..AccountService getcustomeraccount(..) checklogin(..) acknowledgednstermsofuse(..) getmyadminloginlink(..) hasacknowledgeddnstermsofuse(..) getaccountnumberfordbuser(..) passwordrequestbymailallowed(..) updateaccountpassword(..) deletetoken(..) updatecsspassword(..) createtoken(..) checktoken(..) getenddatefrommaincontract(..) getpackageconfiguration(..) getaccountinfos(..) @9:..DnsService modifyresourcerecord(..) isuptodate(..) deleteresourcerecord(..) addresourcerecord(..) getzone(..) @7:..WebhostingService getwebspacesubdirectories(..) createwebspace(..) getwebhostingcategory(..) getavailablephpversions(..) getemailfrommasteraccount(..) createwebstatssession(..) getwebspacequota(..) getwebhostingdetails(..) getwebuserids(..) getwebhostingcategories(..) hasproweb(..) createmysql(..) updatewebspace(..) setphpversion(..) createftpaccount(..) createwebspacesubdirectory(..) updateftpaccount(..) getprowebdomainnames(..) changedomainusagecategory(..) @8:..SupportService scheduleantivirlicenseactivation(..) sendsupportrequest(..) addantivirlicense(..) getincreasebandwidthresult(..) getorderstaticipresult(..) queuesms(..) getmailquota(..) getsmsauthorizations(..) getantivirlicenselist(..) getftpquota(..) getsmsauthorization(..) sendsms(..) getsmsnumbers(..) getsmscontacts(..) activatesmsnumber(..) createsmstoken(..) getvirtualserverenvironment() createwlanaccount(..) orderstaticip(..) setsmsauthorizations(..) 45 3 getmysqlquota(..) 3 removesmscontact(..) addsmscontact(..) getmysqlversion(..) @6:..DomainService getdomains(..) gettopleveldomains(..) createsubdomain(..) reassigndomain(..) performdomainorder(..) isvalidcontact(..) deletesubdomain(..) isdomainfree(..) getdomaininfo(..) getfederalstateforzipcode(..) getdomaincategory(..) getdomains(..) @4:..EmailService getvacationinfo(..) getmailaccounts(..) updatevacationinfo(..) reactivateemailvirusscan(..) deleteemailvirusscan(..) addemailvirusscan(..) removelistentryfromspamfilter(..) addemailalias(..) deleteemailaccount(..) addlistentrytospamfilter(..) updatespamfilterconfiguration(..) createemailaccount(..) getspamfilterconfiguration(..) updateemailforward(..) deleteemailalias(..) @5:..AccountService createtoken(..) getenddatefrommaincontract(..) getpackageconfiguration(..) getcustomeraccount(..) getaccountinfos(..) checklogin(..) getwebstatisticlink(..) getaccountnumberfordbuser(..) acknowledgednstermsofuse(..) hasacknowledgeddnstermsofuse(..) getmyadminloginlink(..) printcontractconfirmation(..) updatecsspassword(..) updateaccountpassword(..) checktoken(..) deletetoken(..) <<execution container>> pikdb0 @9:..DnsService 76 @8:..SupportService 97 377 947 @7:..WebhostingService @3:..KiekerTpmonResponseOutProbe 556 47408 @6:..DomainService 0035 <<execution container>> css 75894 6386 @5:..AccountService 53 @:..KiekerRequestRegistrationAndLoggingFilter 4975 @:..KiekerTpmonResponseInProbe 7589 @4:..EmailService $ 5300 <<execution container>> css0 77540 <<execution container>> pikdb @:..KiekerRequestRegistrationAndLoggingFilter 0475 5099 @:..KiekerTpmonResponseInProbe 7740 67 5 @9:..DnsService @6:..DomainService 00 @3:..KiekerTpmonResponseOutProbe 969 6530 @7:..WebhostingService 378 @4:..EmailService 47406 @8:..SupportService @5:..AccountService Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 9 / 5

Reverse Engineering of C# Complete Test Suite for Nordic Analytics [Magedanz 0] Reverse Engineering Reverse Engineering von C# Case study at HSH Nordbank AG. Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 30 / 5

After selecting one use case Reverse Engineering of C# Reverse Engineering Reverse Engineering von C# $ 7 @:..canalytics 3 7 5 @6:..cModelDescription @:..cobjectpool @9:..cJob @7:..cJobDescriptor @4:..cModelType @5:..cModelParameters 4 @54:..cImplicitCalibration @53:..cValuationControl @33:..cValuationDateFinder 7 398 9 @34:..cPricing 3 9 57 73 38 @3:..cJobObject @35:..cCashFlowPricingModel 3 5 40 3 6 76 9 9 @3:..cSecurityFactory @30:..cTypeFilter @8:..cEvaluationObjects @44:..cDefaultFunctions @5:..cSecurityDetailsCFP 6 36 @39:..cPricingParams @49:..cLinearRateModelBlack @48:..cConvexityAdjustmentModel 9 @47:..cCashRateVolatilityFinder 7 4 3 07 9 38 38 57 38 @5:..cScriptParameters @6:..cSwap @4:..cSecurity @4:..cScriptTables @3:..cSecurityDependency @5:..cLegDetailsCFP @40:..cPricingParamsCreditLinked 76 9 @45:..cMarketAnalyticModel @46:..cVolatilityFinder @3:..cVaRMethodFactory 4 37 36 8 @4:..cTermTreeFunctionIndex @6:..cScriptCashFlowHandler 9 @0:..cLeg @4:..cPricingParamsCFP 68 @7:..cLegDescriptor 34 08 @:..ccashflowscriptgenerator 56 38 34 34 4 68 34 68 38 @:..cscript 36 @9:..cScriptOptions @8:..cStandardFormulaBuilder 34 88 9 38 4 38 9 9 @38:..cCollector 43 @36:..cIndexFixingDescriptionCollector 38 34 @37:..cScriptIndexDescriptorFunction 8 @43:..cSetIndex 38 43 95 68 @0:..cReplaceIndexNameByFunction @:..ccashflowbuilder 34 @7:..cFormulaBuilder @50:..cAccruedInterestCalculator 34 34 34 34 34 @3:..cCashFlow 34 34 @8:..cPayoffDescriptor @:..caccrualconvention 38 34 @9:..cCreditDescriptor @5:..cCreditBaskets Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 3 / 5

Zoom to the operation level Reverse Engineering of C# Reverse Engineering Reverse Engineering von C# @6:NordicAnalyticsProject.Engine.Evaluation.ValuationControl.cValuationControl Evaluate(..) @9:NordicAnalyticsProject.Engine.Evaluation.Pricing.cPricing IsShortRateMC(..) CreateSwaptionPricing(..) Price(..) InitializeLMMPricing(..) InitializeCommodityMCPricing(..) InitializeIndexMCPricing(..) IsHistoricalSecurity(..) AddIPricingResults(..) Price(..) @5:NordicAnalyticsProject.Engine.Evaluation.PricingModels.Swaption.cSwaptionPricingModel GetPricingResult(..) Price(..) $ 4 PriceSwaption(..) SetContactMessage() ReadObjectsFromFile(..) WriteObjectsToFile(..) ClearPools() EvaluateJob(..) GetVersionNumber() GetCompilationDate() 6 PriceSwaption(..) GetSpecificMarketData(..) @0:NordicAnalyticsProject.Engine.Evaluation.PricingModels.Swaption.cSwaptionPricingAnalytic @4:NordicAnalyticsProject.Engine.Evaluation.PricingModels.Swaption.cSwaptionPricingResult SetResultProperties(..) GetObject(..) SetJobPart(..) PriceSwaption(..) GetVolatility(..) AddResultProperty(..) AddResultProperty(..) CreateObject(..) CreateObject(..) GetOutConverter(..) WriteLogInfo(..) WriteLogInfo(..) InitializeTemplateObjects() SetStoreLossDistributions() InitializeUsageTracking() InitializePartialJobs(..) GetUseUsageTracking(..) Evaluate() InitializeMarketDataUsageTracking() 8 6 8 4 @:NordicAnalyticsProject.Engine.Analytics.cAnalytics 6 @8:NordicAnalyticsProject.Engine.Job.cValuationDateFinder GetValuationDate() <<assembly component>> @4:NordicAnalyticsProject.Engine.Job.cJob 8 InitializeObjectTracking(..) GetObject(..) MarketDataUsageCheck() BuildNotBuiltDefaultCurves() ClearIntermediateObjects() ToString() 0 8 30 4 6 4 8 5 @:NordicAnalyticsProject.Engine.Securities.cPlainSwapDateGrid BuildDateGrids(..) GetSwaptionValueEvaluationType(..) GetBlackScholesOptionType(..) StoreAdditionalPricingResults(..) FairRate(..) CreateObject(..) CreateObjectPreProcessing(..) SetObjectAndCheckImpliedCalibration(..) @7:NordicAnalyticsProject.Engine.Job.cImplicitCalibration IsCalibrated(..) @5:NordicAnalyticsProject.Engine.Job.cJobObject GetObjects(..) Objects(..) JobPartObjects(..) ReplaceDependence(..) 4 50 686 4 6 58 0 70 @3:NordicAnalyticsProject.Engine.Securities.cAccrualConvention GetAdditionalDays(..) @3:NordicAnalyticsProject.Engine.OptionValuation.cBlackScholes Vega(..) OptionValue(..) @:NordicAnalyticsProject.Engine.Evaluation.Pricing.cPlainSwapPricing PriceFixLeg(..) PriceFloatLeg(..) @9:NordicAnalyticsProject.Engine.Evaluation.ValuationControl.cModelType InitializeMethodAssetClassSpecification() ReadMethodAssetClassSpecification(..) GetDefaultIRSubModelType(..) ReadAnalyticMethodsTable(..) @8:NordicAnalyticsProject.Engine.Securities.cSecurityFactory CreateInstance(..) @:NordicAnalyticsProject.Engine.Evaluation.Risk.cVaRMethodFactory Create(..) ReadObjectsTable(..) CreateObjectPostProcessing(..) @:NordicAnalyticsProject.Engine.Evaluation.ValuationControl.cModelDescription ReadScenarioTable(..) @0:NordicAnalyticsProject.Engine.Evaluation.ValuationControl.cModelParameters InitMembersWithCorrespondingNullValues() Initialize(..) 4 InitializeObjects() CopyOrId(..) FindCollections(..) SetCollectionObjects(..) GetObjectSignatures(..) CheckObjectsAreUnique(..) GetObjects(..) Objects(..) ReplaceDependence(..) @6:NordicAnalyticsProject.Engine.Job.cTypeFilter Accept(..) @:NordicAnalyticsProject.Engine.Job.cJobDescriptor 0 0 4 GetEndDate() GetSwapTenor() PriceFixCF(..) PriceFloatCF(..) @3:NordicAnalyticsProject.Engine.Job.cEvaluationObjects ReadDescriptionTableProperties(..) ReadObjectsTable(..) CheckNumberOfObjects(..) ProveOfUniqueObjects(..) ReadObjects(..) Insert(..) OnClearPool() ReplaceDependenceByObjectSignature() @7:NordicAnalyticsProject.Engine.Securities.cSwaption @4:NordicAnalyticsProject.Engine.ObjectFactory.cObjectPool 4 8 GetUnderlyingCashRateIndex() @6:NordicAnalyticsProject.Engine.Securities.cSingleOptionSecurity ReadDescriptionTableProperties(..) GetSwapTenorTime() GetCreditNames() @5:NordicAnalyticsProject.Engine.Securities.cSecurity GetHashCode() ReadCurrencyProperty(..) GetDependencyHandle() OnInsertObject(..) @7:NordicAnalyticsProject.Engine.Securities.cSecurityDependency ReplaceDependence() GetObject(..) GetDependencies() GetObjects() Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 3 / 5

Zoom to the operation level Reverse Engineering of C# Reverse Engineering Reverse Engineering von C# @7:NordicAnalyticsProject.Engine.Securities.cS GetEndDate() 4 GetSwapTenor() ReadDescriptionTableProperties(..) 5 @6:NordicAnaly @:NordicAnalyticsProject.Engine.Securities.cPlainSwapDateGrid @3:NordicAnalyticsProject.Engine.Securities.cAccrualConvention BuildDateGrids(..) 50 GetAdditionalDays(..) <assembly component>> valuation.pricingmodels.swaption.cswaptionpricinganalytic eswaption(..) tvolatility(..) GetSwaptionValueEvaluationType(..) GetBlackScholesOptionType(..) StoreAdditionalPricingResults(..) @3:NordicAnalyticsProject.Engine.OptionValuation.cBlackScholes Vega(..) OptionValue(..) aptionpricingresult sultproperty(..) FairRate(..) @:NordicAnalyticsProject.Engine.Evaluation.Pricing.cPlainSwapPricing PriceFixLeg(..) 0 PriceFixCF(..) sultproperty(..) PriceFloatLeg(..) 0 PriceFloatCF(..) 686 4 @9:NordicAnalyticsProject.Engine.Evaluation.ValuationControl.cModelType InitializeMethodAssetClassSpecification() ReadMethodAssetClassSpecification(..) GetDefaultIRSubModelType(..) ReadAnalyticMethodsTable(..) @5:Nordic @8:NordicAnalyticsProject.Engine.Securities.cSecurityFactory CreateInstance(..) Hasselbring, Jung (CAU) Application Performance @:NordicAnalyticsProject.Engine.Evaluation.Risk.cVaRMethodFactory Monitoring with Kieker SPP Design for Future 3 / 5

Reverse Engineering of COBOL With consideration of non-instrumented modules [Knoche et al. 0] Reverse Engineering Reverse Engineering of COBOL IDENTIFICATION DIVISION. PROGRAM-ID. MODULE-X. Literal block PROCEDURE DIVISION. CALL "MODULE-Y". GOBACK. Before-Call Injection Point Called Module: "MODULE-Y" Literal block AOP-based COBOL instrumentation MODULE-B $ MODULE-A MODULE-C MODULE-D MODULE-E Module-level call dependency graph with assumed dependencies Case study of b+m Informatik AG (Kieker extensions by Holger Knoche): Industrial context with more than.000 COBOL modules. 40.35 probes with 4 probe types. Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 33 / 5

Analysis of a PC COBOL System [Richter 0] Reverse Engineering Reverse Engineering of COBOL Abbildung 6.5: Komponentenabhängigkeits-Modell der Menü-Navigation; Extrahiert aus den Monitoringdaten $ @:SGBSTART 4 @8:MSGERZEU @9:MSGLAUFZ @0:MSGMELDE @:ZREPLACE @7:DATABTBA @4:SACHG-INIMO @3:SUCHEFUN @3:ZUGRIFUN @47:PSGLO-MENNA @48:SACHG-SAVMO @34:SGBINITA 3 @38:PSKVSINI @45:SGBMENWA @:PSGLOINI @35:USRIDENT @4:DRUCKREO 7 @39:PSKVSSAV @46:SGBMENUE 7 4 3 0 @0:PSGLOSAV @3:REALIA_GET_MACHINE_NAME @9:JOBIDSAV @:S_GetEnvironmentVariableA 3 @4:PATHMAKE @4:PASSWORT @5:DATUMFUN @40:PSKVSEDI @9:SCRHANDL 9 7 5 5 5 3 4 0 @:PSGLOEDI @6:SHIFTFUN @5:PSGLOFUN @7:REALIA_FINDFIRST @8:REALIA_FINDCLOSE @43:D999FUN @8:SCRINOUT 4 4 373 @3:BUCHWAND @44:REALIA_CREATE_UNIQUE_FILE 3 @6:DATABASE @30:STRINFUN @33:SP 7 3 3 6 @3:DATABLOK @:DATABSPT 35 3 @5:DATABTRV 5 5 9 @37:WKSIDENT 3 @4:BTRV @36:DATABSBS 6 3 @7:PATHFIND 345 87 @6:PARMFILE 6.4 Ergebnisse der Evaluation Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 34 / 5

Reverse Engineering of Visual Basic 6 Analysis of specific traces Reverse Engineering Reverse Engineering of VB 6 frmlogin.cmdok_click() frmlogin.anwendung() frmmain.mdiform_load() Module.Main() frmlogin.form_load() frmakte.tool_menu_begin() frmlogin.txtpassword_gotfocus() frmakte.ob_frei() $ frmmain.mnudatafrmakte_click() frmakte.form_resize() frmakte.form_load() frmakte.ob_sperren() frmakte.felder_sperren() frmakte.option_click(integer) clsklasse.class_initialize() clsklasse.pruef_user() clsklasse.pruef_abt() clsklasse.pruef_rechte() BENUTZER.select() ABTEILUNG.select() BENABT.select() frmakte.felder_frei() frmakte.setbuttons(boolean) AKTE.select() clsklasse.adoprimaryrs_movecomplete(adodb.eventreasonenum, ADODB.Error, ADODB.EventStatusEnum, ADODB.Recordset) frmakte.suchen() frmakte.felder_sichern() 8 clsklasse.class_getdatamember(string, Object) frmakte.cmdedit_click() frmakte.indexposlesen() IPOS.select() frmakte.pruefung_ob() frmakte.fuehrende_nullen(long) frmakte.txtfields_change(integer) frmakte.daten_binden() 6 frmakte.tool_menu_edit() frmakte.abteilung() frmakte.rtxtboxtitel_change() frmakte.rtxtboxenthaelt_change() Case study at Dataport (Kieker extensions by Holger Knoche). Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 35 / 5

cmdupdate_click Detection of unused code Reverse Engineering of Visual Form_KeyDown Basic 6 Reverse Engineering Reverse Engineering of VB 6 SetButtons.847 ms mnufileclose_click mnueditundo_click cmdnext_click frmstat cmdlast_click cmdfirst_click cmdclose_click 85 Abt_Akte_del Ben_BenAb ipos_loesch Statistik 6.7 ms 80.695 ms Abt_Zus_del 76 Ausgabe cmd_start_click abt_suchen 5 4.98 ms Form_Load MouseWheel mnufilestart_click 3.596 ms txt_abt_gotfocus Zeile mnuhelpabout_click MSHFlexGrid_RowColChange EditingRecord Itext_neu Add IndexNeu mnuhelpsearchforhelpon_click 3.9 ms Zus_Akte_del 38.54 ms Form_KeyDown Ben_neu Abt_n cmdclose_click 83 mnuhelpcontents_click mnufileexit_click cmd_druck_click AkteLoeschen Zus_Itext_del Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 36 / 5

Agenda Capacity Management Monitoring for Dynamic Analysis Kieker Monitoring & Analysis Framework 3 Failure Detection 4 Reverse Engineering 5 Capacity Management 6 Kieker Hands On 7 Summary and Outlook Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 37 / 5

Online Capacity Management SLAstic Framework (Ph.D. thesis of André van Hoorn) Capacity Management instrumented, runtime reconfigurable s/w system... instrumentation SLAstic model SLAstic. MONITORING raw monitoring records monitoring events SLAstic.CONTROL SLAstic. RECONFIGURATION reconfiguration actions reconfiguration plans architecture technology initialization extraction SLAstic model Analysis online adaptation engine Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 38 / 5

In SPP 593: iobserve http://www.dfg-spp593.de/index.php?id=44 Capacity Management bserve Page 0 Integrated Observation and Modeling Techniques to Support Adaptation and Evolution of Software Systems reated to prescribe properties of a planned system. Descriptive models describe systems as they have een realized. In our approach, observation data is fed into descriptive models@runtime. <<references>> <<references>> Figure 3: Descriptive Models and their relation to the software system Models@Runtime for Managed Software Evolution. The scenario described in Figure 3, resembles a software system running on an infrastructure serice (IaaS ) utilizing software services (Service ). The boxes on the left represent the four models we erive from previous work in the context of our integrated observation and anomaly detection project. he Software Metrics Meta Model (SMM) [77] is one of the meta model specifications developed by he Hasselbring, Architecture-Driven Jung (CAU) Modernization Application (ADM) Performance Task Force, Monitoringa with sub-committee Kieker of the SPPObject Design for Future Management 39 / 5

Agenda Kieker Hands On Monitoring for Dynamic Analysis Kieker Monitoring & Analysis Framework 3 Failure Detection 4 Reverse Engineering 5 Capacity Management 6 Kieker Hands On 7 Summary and Outlook Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 40 / 5

The Bookstore Kieker Hands On <<SystemAssembly>> BookstoreSystem <<Component>> Bookstore <<Component>> Catalog <<Component>> CRM Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 4 / 5

Instrumentation by Hand Example: Monitoring of Operation Executions Kieker Hands On public class CRM { private final Catalog catalog; public CRM(final Catalog catalog) { this.catalog = catalog; } } public void getoffers() { this.catalog.getbook(false); } Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 4 / 5

Example: Component CRM Add Operation Execution Probe Kieker Hands On private static final IMonitoringController MONITORING_CONTROLLER = MonitoringController.getInstance(); public void getoffers() { final long tin = MONITORING_CONTROLLER.getTimeSource().getTime(); catalog.getbook(false); // <-- the monitored execution final long tout = MONITORING_CONTROLLER.getTimeSource().getTime(); } final OperationExecutionRecord e = new OperationExecutionRecord( "public void Catalog.getBook(boolean)", NO_SESSION_ID, NO_TRACEID, tin, tout, "myhost", NO_EOI_ESS, NO_EOI_ESS); MONITORING_CONTROLLER.newMonitoringRecord(e); Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 43 / 5

Full Instrumentation with Kieker Kieker Hands On AOP Konfiguration META-INF/aop.xml <!DOCTYPE aspectj PUBLIC "-//AspectJ//DTD//EN" "http://www.aspectj.org/ dtd/aspectj 5_0.dtd"> <aspectj> <weaver options=""> <include within="*"/> </weaver> <aspects> <aspect name="kieker.monitoring.probe.aspectj.operationexecution. OperationExecutionAspectFull"/> </aspects> </aspectj> AspectJ $ java -javaagent:lib/kieker-.6_aspectj.jar -jar BookstoreApplication.jar 50 Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 44 / 5

Monitoring JPetStore Kieker Hands On 3-Layer Architecture Presentation layer: Struts Service layer: POJOs Persistence layer: ibatis Client HTTP HTTP struts.actionservlet ibatis JPetStore Apache Struts Presentation Layer Service Layer Persistence Layer ibatis DAO Framework SQL SQL DBMS ibatis JPetStore 5.0 (http://ibatis.apache.org/) Deployment Application Server (here: Jetty 7.6.7) SQL DBMS Server (here: HSQL) Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 45 / 5

JPetStore AOP Konfiguration Kieker Hands On Datei webapps/jpetstore/web-inf/classes/meta-inf/aop.xml <!DOCTYPE aspectj PUBLIC "-//AspectJ//DTD//EN" "http://www.aspectj.org/ dtd/aspectj 5_0.dtd"> <aspectj> <weaver options=""> <include within="org.mybatis.jpetstore..*"/> <include within="net.sourceforge.stripes.controller. DispatcherServlet"/> </weaver> <aspects> <aspect name="kieker.monitoring.probe.aspectj.operationexecution. OperationExecutionAspectFull"/> </aspects> </aspectj> Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 46 / 5

JPetStore Application Context Kieker Hands On Datei webapps/jpetstore/web-inf/applicationcontext.xml <beans xmlns="http://www.springframework.org/schema/beans" [...]> [...] <!-- Kieker's instrumentation probes based on the Spring AOP interception framework --> <bean id="opemii" class="kieker.monitoring.probe.spring.executions. OperationExecutionMethodInvocationInterceptor" /> <aop:config> <aop:advisor advice-ref="opemii" pointcut="execution(public * org.mybatis.jpetstore..*.*(..))"/> </aop:config> [...] </beans> Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 47 / 5

Online Analysis Kieker Hands On Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 48 / 5

Online Analysis Kieker Hands On Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 48 / 5

Summary Summary and Outlook Kieker is... a framework for application monitoring and analysis, employed in various industry use cases, flexible and extensible. Kieker supports... Java, JEE (in production).net, VB6, Cobol (industry case studies) C, Perl (currently developed) http://kieker-monitoring.net/ Hasselbring, Jung (CAU) Application Performance Monitoring with Kieker SPP Design for Future 49 / 5