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

and resource monitoring, e.g.,

  • Sigar or Servlet to monitor
    • CPU utilization
    • Memory usage