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
- AMQP writer and reader, with current support for
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”).
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
and resource monitoring, e.g.,
- Sigar or Servlet to monitor
- CPU utilization
- Memory usage
The Kieker framework itself is developed in Java, but also offers adapters for multiple other programming languages, e.g.,
- Visual Basic 6 (VB6)