Instrumentation Record Language

The Kieker Instrumentation Record Language (IRL) can be used to define new Kieker records also called (monitoring) events.

Language Features

  • Record types called event with scalar and array attributes

  • Template types which allow to group attributes and can be used as marker analog to interfaces in Java. They are not storable.

  • Transient and serializable attributes

  • Auto incrementing attributes

  • Aliasing attributes

  • Multi-inheritance from templates

  • Events can inherit only from one other event, but multiple templates

  • Linking attributes with foreign key

  • Default values for attributes

  • Assigning logging semantics

  • Model types, they allow to group event types and then extend all event types belonging to the model type together.

Event Types

event EventName {
   string name
}

event ChildEvent extends EventName {
   int children
}

EventName has one attribute name of type string and ChildEvent inherits the name attribute and adds a children attribute.

Template Types

template TraceEvent {
   int traceId
}
template OperationEvent {
   string operationName
}
template ClassEvent {
   string className
}
template BeforeOperationEvent : TraceEvent, OperationEvent, ClassEvent
event SpecialChild extends EventName : BeforeOperationEvent

Templates allow to group attributes. TraceEvent defines the attribute traceId. OperationEvent and ClassEvent define operationName and className. BeforeOperationEvent inherits from all templates attributes. Finally, SpecialChild inherits the EventName from above and all attributes from the templates.

Attributes

event EventName {
   const string NO_SESSION = "<no-session>"
   string name
   string sessionName = NO_SESSION
   auto-increment int value
   transient int key
   changeable int data // can be changed during analysis
}

Here an example with semantic annotations

event EventName {
        long value : timestamp
        string text = "empty" : operationsignature
}

Please note that the available semantics depend on the used semantics model.

Model Types

model ModelName TypeA, TypeB, TypeC

sub SubModelName ModelName {
        int additionaAttribute
        const int SOME_CONSTANT = 1
}

sub SubModel2Name ModelName : ExtensionTemplate, AdditionalExtensionTemplate

Language Syntax

IRL - Language Syntax and Semantics

Generating Records

  • Commandline

Eclipse Installation

  • Install package from: https://maui.se.informatik.uni-kiel.de/repo/kdt/

  • You may choose the repository under snapshot or a more stable releast from the releases folder.

  • Add the Xtext nature to the Eclipse project of Kieker

  • Configuration of IRL can be found in the Project Properties and Workspace Preferences. It is necessary to setup the properties/preferences to ensure correct generation of event types. You can select the target language and Kieker Version you want to support.