Adaptive Monitoring

This article is a stub, as there are different technologies available to adaptively instrument applications. However, we need a place to collect some content.


There is a section in java-monitoring-controller-api also addressing this topic. The grammar should be moved to API and only referenced from here.


Please recheck whether the grammar is still correct.


Add list of options how to control adaptive monitoring.

Configuring Kieker for Adaptive Monitoring

Control Probes

Pattern Parsing Grammar

The Java pattern parser follows essentially the following grammar. Please note that this is going to change in the future.

Pattern parsing grammar

Pattern: WS* TrimmedPattern WS*

TrimmedPattern: '%' java.util.regex.Pattern | KiekerPattern

KiekerPattern: '*' | Modifiers ReturnType FQName '(' WS* Parameters WS* ')' Throws?

Modifiers: (Visibility WS)? (Abstract WS)? (Default WS)? (Static WS)?
  (Final WS)? (Synchronized WS)? (Native WS)?

Visibility: "public" | "private" | "protected" | "package"

Abstract: "abstract" | "non_abstract"

Default: "default" | "non_default"

Static: "static" | "non_static"

Final: "final" | "non_final"

Synchronized: "synchronized" | "non_synchronized"

Nativ: "native" | "non_native"

ReturnType: "new" | FQClassName

FQName: FQClassName '.' methodName

Parameters: (
  ".." |
  ".." Parameter |
  "*" |
  FQClassName ) Parameter*

Parameter: ".." | "*" | FQClassName

Throws: WS* "throws" Parameters WS*

FQClassName: ID ('.' ID)*