assembling and executing kieker analysis configurations
play

Assembling and Executing Kieker Analysis Configurations via Java - PowerPoint PPT Presentation

Assembling and Executing Kieker Analysis Configurations via Java API and Web UI Kieker Days 2012 Nils Christian Ehmke Software Engineering Group Kiel University, Germany November 30, 2012 @ Kiel Nils Christian Ehmke Kieker


  1. Assembling and Executing Kieker Analysis Configurations via Java API and Web UI — Kieker Days 2012 — Nils Christian Ehmke Software Engineering Group Kiel University, Germany November 30, 2012 @ Kiel Nils Christian Ehmke Kieker Pipes-and-Filters API and Web UI November 30, 2012 @ Kiel 1 / 19

  2. [Valid] ...bookstoreTracing.Catalog, ... ValidPrinter [Valid] ...bookstoreTracing.Catalog, ... Monitoring Data FSReader MyResponseTimeFilter [Invalid] ...bookstoreTracing.Catalog, ... InvalidPrinter [Invalid] ...bookstoreTracing.Catalog, ... Motivation: Pipes-and-Filters Analysis Grad X Binomial Filter Raw Image Data Split Harris Corner Detector Interest Points Grad Y Binomial Filter Figure : Interest Point Detection Nils Christian Ehmke Kieker Pipes-and-Filters API and Web UI November 30, 2012 @ Kiel 2 / 19

  3. Motivation: Pipes-and-Filters Analysis Grad X Binomial Filter Raw Image Data Split Harris Corner Detector Interest Points Grad Y Binomial Filter Figure : Interest Point Detection [Valid] ...bookstoreTracing.Catalog, ... ValidPrinter [Valid] ...bookstoreTracing.Catalog, ... Monitoring Data FSReader MyResponseTimeFilter [Invalid] ...bookstoreTracing.Catalog, ... InvalidPrinter [Invalid] ...bookstoreTracing.Catalog, ... Figure : Kieker: Response time analysis Nils Christian Ehmke Kieker Pipes-and-Filters API and Web UI November 30, 2012 @ Kiel 2 / 19

  4. Kieker’s Pipes and Filters API 1 Kieker.WebGUI 2 Nils Christian Ehmke Kieker Pipes-and-Filters API and Web UI November 30, 2012 @ Kiel 3 / 19

  5. Purpose Kieker’s Pipes and Filters API Question Why do we need a pipes-and-filters API? Nils Christian Ehmke Kieker Pipes-and-Filters API and Web UI November 30, 2012 @ Kiel 4 / 19

  6. Purpose Kieker’s Pipes and Filters API Question Why do we need a pipes-and-filters API? Answer • Assemble, save, load analysis configurations • Creation of custom analyses • Reusability of filters Nils Christian Ehmke Kieker Pipes-and-Filters API and Web UI November 30, 2012 @ Kiel 4 / 19

  7. ... Filter n Reader 1 Filter 1 Filter 3 Reader 2 Filter 2 History Kieker’s Pipes and Filters API ≤ Kieker 1.4 • Pipes and filters possible — very difficult to use • Only programmatic assembly and execution ���������� ������ ������������������� ��� ���������� Nils Christian Ehmke Kieker Pipes-and-Filters API and Web UI November 30, 2012 @ Kiel 5 / 19

  8. History Kieker’s Pipes and Filters API ≤ Kieker 1.4 • Pipes and filters possible — very difficult to use • Only programmatic assembly and execution ���������� ������ ������������������� ��� ���������� ≥ Kieker 1.5 • Configurable and easy to use • Easy extendible pipes and filters ... Filter n Reader 1 Filter 1 Filter 3 Reader 2 Filter 2 Nils Christian Ehmke Kieker Pipes-and-Filters API and Web UI November 30, 2012 @ Kiel 5 / 19

  9. The Meta Model Behind the P&F API Kieker’s Pipes and Filters API Figure : The Pipes-and-Filters Ecore Model (Simplified) Nils Christian Ehmke Kieker Pipes-and-Filters API and Web UI November 30, 2012 @ Kiel 6 / 19

  10. P&F Assembly and Execution Methods Kieker’s Pipes and Filters API Question How to use the pipes and filters API? Nils Christian Ehmke Kieker Pipes-and-Filters API and Web UI November 30, 2012 @ Kiel 7 / 19

  11. P&F Assembly and Execution Methods Kieker’s Pipes and Filters API Question How to use the pipes and filters API? Answer • Implement and execute in plain Java code • Persist in kax files • Implement and execute in a WebGUI • (Implement own plugins) Nils Christian Ehmke Kieker Pipes-and-Filters API and Web UI November 30, 2012 @ Kiel 7 / 19

  12. P&F Assembly and Execution Method #1 Kieker’s Pipes and Filters API // Create an analysis controller AnalysisController analysisController = new AnalysisController(); Nils Christian Ehmke Kieker Pipes-and-Filters API and Web UI November 30, 2012 @ Kiel 8 / 19

  13. P&F Assembly and Execution Method #1 Kieker’s Pipes and Filters API // Create an analysis controller AnalysisController analysisController = new AnalysisController(); // Programmatic assembly of pipes-and-filter configuration Configuration config = new Configuration(); config.setProperty(...); MyResponseTimePrinter printer = new MyResponseTimePrinter(config); Nils Christian Ehmke Kieker Pipes-and-Filters API and Web UI November 30, 2012 @ Kiel 8 / 19

  14. P&F Assembly and Execution Method #1 Kieker’s Pipes and Filters API // Create an analysis controller AnalysisController analysisController = new AnalysisController(); // Programmatic assembly of pipes-and-filter configuration Configuration config = new Configuration(); config.setProperty(...); MyResponseTimePrinter printer = new MyResponseTimePrinter(config); analysisController.registerFilter(printer); Nils Christian Ehmke Kieker Pipes-and-Filters API and Web UI November 30, 2012 @ Kiel 8 / 19

  15. P&F Assembly and Execution Method #1 Kieker’s Pipes and Filters API // Create an analysis controller AnalysisController analysisController = new AnalysisController(); // Programmatic assembly of pipes-and-filter configuration Configuration config = new Configuration(); config.setProperty(...); MyResponseTimePrinter printer = new MyResponseTimePrinter(config); analysisController.registerFilter(printer); analysisController.connect( filter, MyResponseTimeFilter.OUTPUT_PORT_NAME_RT_VALID, printer, MyResponseTimeOutputPrinter.INPUT_PORT_NAME_EVENTS); Nils Christian Ehmke Kieker Pipes-and-Filters API and Web UI November 30, 2012 @ Kiel 8 / 19

  16. P&F Assembly and Execution Method #1 Kieker’s Pipes and Filters API // Create an analysis controller AnalysisController analysisController = new AnalysisController(); // Programmatic assembly of pipes-and-filter configuration Configuration config = new Configuration(); config.setProperty(...); MyResponseTimePrinter printer = new MyResponseTimePrinter(config); analysisController.registerFilter(printer); analysisController.connect( filter, MyResponseTimeFilter.OUTPUT_PORT_NAME_RT_VALID, printer, MyResponseTimeOutputPrinter.INPUT_PORT_NAME_EVENTS); // Starting the analysis analysisController.run(); Nils Christian Ehmke Kieker Pipes-and-Filters API and Web UI November 30, 2012 @ Kiel 8 / 19

  17. P&F Assembly and Execution Method #1 Kieker’s Pipes and Filters API Note: We can also save the analysis for later // Save the analysis in a kax file analysisController.saveToFile(new File("analysis.kax")); Nils Christian Ehmke Kieker Pipes-and-Filters API and Web UI November 30, 2012 @ Kiel 9 / 19

  18. P&F Assembly and Execution Method #2 Kieker’s Pipes and Filters API The resulting kax file (XMI format) ... <plugins xsi:type="Filter" name="Valid Printer" classname="..."> <properties name="validOutput" value="true"/> <inputPorts name="newEvent"/> </plugins> ... <plugins xsi:type="Filter" name="MyResponseTimeFilter" classname="..."> <properties name="thresholdNanos" value="1900000"/> <outputPorts name="validResponseTimes" subscribers="//@plugins.4/@inputPorts.0"/> <outputPorts name="invalidResponseTimes" subscribers="//@plugins.3/@inputPorts.0"/> <inputPorts name="newResponseTime"/> </plugins> Nils Christian Ehmke Kieker Pipes-and-Filters API and Web UI November 30, 2012 @ Kiel 10 / 19

  19. P&F Assembly and Execution Method #2 Kieker’s Pipes and Filters API Running the analysis using the Java API new AnalysisController(new File("analysis.kax")).run(); Running the analysis via the Kax-Runner kax-run.bat/sh -i analysis.kax Nils Christian Ehmke Kieker Pipes-and-Filters API and Web UI November 30, 2012 @ Kiel 11 / 19

  20. P&F Assembly and Execution Method #3 Kieker’s Pipes and Filters API Assembling the analysis in the WebGUI Nils Christian Ehmke Kieker Pipes-and-Filters API and Web UI November 30, 2012 @ Kiel 12 / 19

  21. P&F Assembly and Execution Method #3 Kieker’s Pipes and Filters API Running the analysis in the WebGUI Nils Christian Ehmke Kieker Pipes-and-Filters API and Web UI November 30, 2012 @ Kiel 13 / 19

  22. Implement Own Plugins Kieker’s Pipes and Filters API @Plugin( name = "Response time filter", outputPorts = { @OutputPort(name = "out", eventTypes = {MyResponseTimeRecord.class})}, configuration = { @Property(name = "thresholdNanos", defaultValue = "1000000")}) public class MyResponseTimeFilter extends AbstractFilterPlugin { @InputPort( name = "newResponseTime", eventTypes = {MyResponseTimeRecord.class}) public void newResponseTime(final MyResponseTimeRecord rtRecord) { ... super.deliver("out", rtRecord); } } Nils Christian Ehmke Kieker Pipes-and-Filters API and Web UI November 30, 2012 @ Kiel 14 / 19

  23. Kieker’s Pipes and Filters API 1 Kieker.WebGUI 2 Nils Christian Ehmke Kieker Pipes-and-Filters API and Web UI November 30, 2012 @ Kiel 15 / 19

Recommend


More recommend