Kieker provides several predefined and customizable filters to build you own analysis.
For example, it offers filters for trace analysis, anomaly detection, and architecture discovery.
Moreover, Kieker provides filters for associated visualizations such as call graphs and dependency graphs.
Finally, it offers the ability to define your own filter to adjust your custom analysis.
Predefined and custom analysis
It is easily possible to run a predefined analysis or to build a custom analysis for your own specific use case.
For example, Kieker provides the following predefined analyses:
- trace reconstruction and visualization
- anomaly detection
- architecture discovery and visualization
Since A Kieker analysis follows the pipe-and-filter architectural style, it is therefore easy to build your own analysis based on parts of predefined analyses.
Dynamic and adaptive monitoring
By default, instrumentation is static. This means, at runtime, once a method or resource is instrumented, the instrumentation cannot be removed, and if a method/resource is not instrumented, it cannot be instrumented.
Kieker includes functionality to change the instrumentation at runtime, which is denoted as dynamic instrumentation. Currently, the dynamic instrumentation can be configured via JMX and periodically polled configuration files. In this way, the monitoring can be enabled/disabled in parts or completely at runtime.
Dynamic instrumentation is a prerequisite for adaptive monitoring, which aims to plan and to execute the monitoring at runtime. This allows, for instance, to make the instrumentation more detailed when a performance problem should be analyzed.
Different monitoring outputs
The monitoring output can be persistently saved into logs, e.g.,
- file system (async/sync)
- database (async/sync)
or directly processed via streams using a custom or standard message protocol, e.g.,
- TCP (sync)
- JMS and JMX queues (async), with current support for
- ActiveMQ
- HornetQ
- OpenJMS
- AMQP writer and reader, with current support for
- RabbitMQ
Predefined and customizable probes
Kieker provides several predefined and customizable probes to instrument and monitor your target application.
For example, there are probes which collect
- the execution times of method invocations including their fully qualified name
- the behavior of different threads
- resource information, such as the CPU utilization and the memory footprint
Furthermore, it is easily possible to define custom probes, especially based on predefined probes.
For this purpose, Kieker offers a user-friendly domain specific language called the Record Instrumentation Language (see the tab “Tool Integration”).
Multiple ways of instrumentation
Kieker offers multiple ways of instrumentation for control flow tracing, e.g.,
- Manual source code insertion
- Automatic source code insertion via Aspect-Oriented Programming (AOP), e.g.
- AspectJ. The insertion points can be defined
- by annotations in the source code or via
- pointcuts in an external configuration file (
aop.xml) for better seperation of concerns.
- Middleware interception, e.g., Spring
- Servlet
- CXF/SOAP
and resource monitoring, e.g.,
- Sigar or Servlet to monitor
- CPU utilization
- Memory usage
Support for applications in multiple programming languages
The Kieker framework itself is developed in Java, but also offers adapters for multiple other programming languages, e.g.,
- Java
- .NET
- Cobol
- Visual Basic 6 (VB6)
Kieker Live Demo
An online Live Demo installation of the Kieker monitoring and analysis framework is now available at: http://demo.kieker-monitoring.net/
We provide a monitored installation of the jPetStore example application. Each click inside this application generates several new monitoring records, visualized within our Live Demo. Refer to the start page for further details.
Kieker Data Bridge (KDB)
The following post was originally published by Reiner Jung on his personal blog oiloftrop.
Continue reading
Kieker available with Maven
Starting with Kieker release 1.6, all Kieker releases are deployed at the Central Repository for Maven. Refer to the instruction on our download page for adding the required dependency configurations to your pom.xml.
Furthermore, all successful nightly builds (snapshots) of Kieker are made available with maven as well. Refer to the nightly build download page for additional details on the required configuration.