## In order to use a custom Kieker.Monitoring configuration, create a copy of 
## this file and modify it according to your needs. 
##
## The location of the file is passed to Kieker.Monitoring via the JVM parameter
## kieker.monitoring.configuration. For example, with a configuration file named 
## my.kieker.monitoring.properties in the folder META-INF you would pass this location 
## to the JVM when starting your application:
##
##  java -Dkieker.monitoring.configuration=META-INF/my.kieker.monitoring.properties [...]
##
## If no configuration file is passed, Kieker tries to use a configuration file in
## META-INF/kieker.monitoring.properties
## If this also fails, a default configuration is being used according to the values in 
## this default file.

## The name of the Kieker instance.
kieker.monitoring.name=KIEKER

## Whether a debug mode is activated.
## This changes a few internal id generation mechanisms to enable 
## easier debugging. Additionally, it is possible to enable debug 
## logging in the settings of the used logger. 
## This setting should usually not be set to true. 
kieker.monitoring.debug=true

## Enable/disable monitoring after startup (true|false; default: true)
## If monitoring is disabled, the MonitoringController simply pauses.
## Furthermore, probes should stop collecting new data and monitoring 
## writers stop should stop writing existing data.
kieker.monitoring.enabled=true

## The name of the VM running Kieker. If empty the name will be determined 
## automatically, else it will be set to the given value.
kieker.monitoring.hostname=

## The initial ID associated with all experiments. (currently not used)
kieker.monitoring.initialExperimentId=1

## Enables/disable the automatic assignment of each record's logging timestamp.
## (true|false; default: true) 
kieker.monitoring.setLoggingTimestamp=false

## Whether a shutdown hook should be registered.
## This ensures that necessary cleanup steps are finished and no 
## information is lost due to asynchronous writers.
## This should usually not be set to false.
kieker.monitoring.useShutdownHook=true

## Whether any JMX functionality is available
kieker.monitoring.jmx=false
kieker.monitoring.jmx.domain=kieker.monitoring

## Enable/Disable the MonitoringController MBean
kieker.monitoring.jmx.MonitoringController=true
kieker.monitoring.jmx.MonitoringController.name=MonitoringController

## Controls JMX remote access
kieker.monitoring.jmx.remote=false
kieker.monitoring.jmx.remote.port=59999
kieker.monitoring.jmx.remote.name=JMXServer
## If the SUN-JMX Bootstrap class is not available, a fallback to the 
## default implementation can be used. The fallback solution prevents 
## the VM from terminating.
## A graceful shutdown is done by connecting to the JMXServer, there to
## kieker.monitoring.JMXServer and using the operation stop()
kieker.monitoring.jmx.remote.fallback=true
## These properties will be forwarded to configure the JMX server
com.sun.management.jmxremote.local.only=false
com.sun.management.jmxremote.authenticate=false
com.sun.management.jmxremote.ssl=false

## The size of the thread pool used to execute registered periodic sensor jobs.
## The thread pool is also used to periodically read the config file for adaptive
## monitoring.
## Set to 0 to deactivate scheduling.
kieker.monitoring.periodicSensorsExecutorPoolSize=1

## Enable or disable adaptive monitoring.
kieker.monitoring.adaptiveMonitoring.enabled=false
#
## Default location of the adaptive monitoring configuration File
kieker.monitoring.adaptiveMonitoring.configFile=META-INF/kieker.monitoring.adaptiveMonitoring.conf
#
## Enable/disable the updating of the pattern file by activating or deactivating
## probes through the api.
kieker.monitoring.adaptiveMonitoring.updateConfigFile=false
#
## The delay in seconds in which the pattern file is checked for changes.
## Requires kieker.monitoring.periodicSensorsExecutorPoolSize > 0.
## Set to 0 to disable the observation.
kieker.monitoring.adaptiveMonitoring.readInterval=30


###########################
#######    TIMER    #######
###########################
## Selection of the timer used by Kieker (classname)
## The value must be a fully-qualified classname of a class implementing 
## kieker.monitoring.timer.ITimeSource and providing a constructor that 
## accepts a single Configuration. 
kieker.monitoring.timer=kieker.monitoring.timer.SystemNanoTimer

####
#kieker.monitoring.timer=kieker.monitoring.timer.SystemMilliTimer
#
## A timer with millisecond precision.
#
## The offset of the timer. The time returned is since 1970-1-1 
## minus this offset. If the offset is empty it is set to the current 
## time.
## The offset must be specified in milliseconds.
kieker.monitoring.timer.SystemMilliTimer.offset=0
## The timeunit used to report the timestamp. 
## Accepted values:
##  0 - nanoseconds
##  1 - microseconds
##  2 - milliseconds
##  3 - seconds 
kieker.monitoring.timer.SystemMilliTimer.unit=0

####
#kieker.monitoring.timer=kieker.monitoring.timer.SystemNanoTimer
#
## A timer with nanosecond precision.
#
## The offset of the timer. The time returned is since 1970-1-1 
## minus this offset. If the offset is empty it is set to the current 
## time.
## The offset must be specified in milliseconds.
kieker.monitoring.timer.SystemNanoTimer.offset=0
## The timeunit used to report the timestamp. 
## Accepted values:
##  0 - nanoseconds
##  1 - microseconds
##  2 - milliseconds
##  3 - seconds 
kieker.monitoring.timer.SystemNanoTimer.unit=0


###########################
#######    WRITER   #######
###########################
## Selection of monitoring data writer (classname)
## The value must be a fully-qualified classname of a class implementing 
## kieker.monitoring.writer.IMonitoringWriter and providing a constructor that 
## accepts an IMonitoringController and a single Configuration. 
kieker.monitoring.writer=kieker.monitoring.writer.filesystem.AsyncFsWriter

#####
#kieker.monitoring.writer=kieker.monitoring.writer.DummyWriter
#
## Configuration Properties of the DummyWriter
kieker.monitoring.writer.DummyWriter.key=value


#####
#kieker.monitoring.writer=kieker.monitoring.writer.PrintStreamWriter
#
## The PrintStream used to print the monitoring records.
## Either STDOUT or STDERR.
## Other values are used as a filenames for a target log file.
## You should use AsyncFsWriter instead of this writer for logging to files!
kieker.monitoring.writer.PrintStreamWriter.Stream=STDOUT


#####
#kieker.monitoring.writer=kieker.monitoring.writer.filesystem.SyncFsWriter
#
## In order to use the default temporary directory, set the property value of
## storeInJavaIoTmpdir to true.
kieker.monitoring.writer.filesystem.SyncFsWriter.storeInJavaIoTmpdir=true
#
## In order to use a custom directory, set storeInJavaIoTmpdir=false
## and set customStoragePath as desired. Examples:
## /var/kieker or C:\\KiekerData (ensure the folder exists).
kieker.monitoring.writer.filesystem.SyncFsWriter.customStoragePath=.
#
## The maximal number of entries (records) per created file.
## Must be greater than zero.
kieker.monitoring.writer.filesystem.SyncFsWriter.maxEntriesInFile=25000
#
## The maximal file size of the generated monitoring log. Older files will be 
## deleted if this file size is exceeded. Given in MiB.
## At least one file will always remain, regardless of size!
## Use -1 to ignore this functionality. 
kieker.monitoring.writer.filesystem.SyncFsWriter.maxLogSize=-1
#
## The maximal number of log files generated. Older files will be 
## deleted if this number is exceeded.
## At least one file will always remain, regardless of size!
## Use -1 to ignore this functionality. 
kieker.monitoring.writer.filesystem.SyncFsWriter.maxLogFiles=-1
#
## When flushing is disabled, it could require a lot of records before
## finally any writing is done.
kieker.monitoring.writer.filesystem.SyncFsWriter.flush=true


#####
#kieker.monitoring.writer=kieker.monitoring.writer.filesystem.AsyncFsWriter
#
## When flushing is disabled, it could require a lot of records before
## finally any writing is done.
kieker.monitoring.writer.filesystem.AsyncFsWriter.flush=true
#
## In order to use the default temporary directory, set the property value of
## storeInJavaIoTmpdir to true.
kieker.monitoring.writer.filesystem.AsyncFsWriter.storeInJavaIoTmpdir=true
#
## In order to use a custom directory, set storeInJavaIoTmpdir=false
## and set customStoragePath as desired. Examples:
## /var/kieker or C:\\KiekerData (ensure the folder exists).
kieker.monitoring.writer.filesystem.AsyncFsWriter.customStoragePath=.
#
## The maximal number of entries (records) per created file.
## Must be greater than zero.
kieker.monitoring.writer.filesystem.AsyncFsWriter.maxEntriesInFile=25000
#
## The maximal file size of the generated monitoring log. Older files will be 
## deleted if this file size is exceeded. Given in MiB.
## At least one file will always remain, regardless of size!
## Use -1 to ignore this functionality. 
kieker.monitoring.writer.filesystem.AsyncFsWriter.maxLogSize=-1
#
## The maximal number of log files generated. Older files will be 
## deleted if this number is exceeded.
## At least one file will always remain, regardless of size!
## Use -1 to ignore this functionality. 
kieker.monitoring.writer.filesystem.AsyncFsWriter.maxLogFiles=-1
#
## Asynchronous writers need to store monitoring records in an internal buffer.
## This parameter defines its capacity in terms of the number of records. 
kieker.monitoring.writer.filesystem.AsyncFsWriter.QueueSize=10000
#
## Behavior of the asynchronous writer when the internal queue is full:
## 0: terminate Monitoring with an error (default)
## 1: writer blocks until queue capacity is available
## 2: writer discards new records until space is available
##  Be careful when using the value '1' since then, the asynchronous writer
##  is no longer decoupled from the monitored application.
kieker.monitoring.writer.filesystem.AsyncFsWriter.QueueFullBehavior=0
#
## Maximum time to wait for the writer threads to finish (in milliseconds).
## A MaxShutdownDelay of -1 means infinite waiting.
kieker.monitoring.writer.filesystem.AsyncFsWriter.MaxShutdownDelay=-1


#####
#kieker.monitoring.writer=kieker.monitoring.writer.filesystem.AsyncBinaryFsWriter
#
## In order to use the default temporary directory, set the property value of
## storeInJavaIoTmpdir to true.
kieker.monitoring.writer.filesystem.AsyncBinaryFsWriter.storeInJavaIoTmpdir=true
#
## In order to use a custom directory, set storeInJavaIoTmpdir=false
## and set customStoragePath as desired. Examples:
## /var/kieker or C:\\KiekerData (ensure the folder exists).
kieker.monitoring.writer.filesystem.AsyncBinaryFsWriter.customStoragePath=.
#
## The maximal number of entries (records) per created file.
## Must be greater than zero.
kieker.monitoring.writer.filesystem.AsyncBinaryFsWriter.maxEntriesInFile=25000
#
## The maximal file size of the generated monitoring log. Older files will be 
## deleted if this file size is exceeded. Given in MiB.
## At least one file will always remain, regardless of size!
## Use -1 to ignore this functionality. 
kieker.monitoring.writer.filesystem.AsyncBinaryFsWriter.maxLogSize=-1
#
## The maximal number of log files generated. Older files will be 
## deleted if this number is exceeded.
## At least one file will always remain, regardless of size!
## Use -1 to ignore this functionality. 
kieker.monitoring.writer.filesystem.AsyncBinaryFsWriter.maxLogFiles=-1
#
## Asynchronous writers need to store monitoring records in an internal buffer.
## This parameter defines its capacity in terms of the number of records. 
kieker.monitoring.writer.filesystem.AsyncBinaryFsWriter.QueueSize=10000
#
## Behavior of the asynchronous writer when the internal queue is full:
## 0: terminate Monitoring with an error (default)
## 1: writer blocks until queue capacity is available
## 2: writer discards new records until space is available
##  Be careful when using the value '1' since then, the asynchronous writer
##  is no longer decoupled from the monitored application.
kieker.monitoring.writer.filesystem.AsyncBinaryFsWriter.QueueFullBehavior=0
#
## Maximum time to wait for the writer threads to finish (in milliseconds).
## A MaxShutdownDelay of -1 means infinite waiting.
kieker.monitoring.writer.filesystem.AsyncBinaryFsWriter.MaxShutdownDelay=-1


#####
#kieker.monitoring.writer=kieker.monitoring.writer.namedRecordPipe.PipeWriter
#
## The name of the pipe used (must not be empty).
kieker.monitoring.writer.namedRecordPipe.PipeWriter.pipeName=kieker-pipe


#####
#kieker.monitoring.writer=kieker.monitoring.writer.jms.AsyncJMSWriter
#
## The url of the jndi provider that knows the jms service
## - ActiveMQ: tcp://127.0.0.1:61616/
## - HornetQ:  jnp://localhost:1099/
## - OpenJMS:  tcp://127.0.0.1:3035/
kieker.monitoring.writer.jms.AsyncJMSWriter.ProviderUrl=tcp://127.0.0.1:61616/
#
## The topic at the jms server which is used in the publisher/subscribe communication.
kieker.monitoring.writer.jms.AsyncJMSWriter.Topic=queue1
#
## The type of the jms factory implementation, e.g.
## - ActiveMQ: org.apache.activemq.jndi.ActiveMQInitialContextFactory
## - HornetQ:  org.jnp.interfaces.NamingContextFactory
## - OpenJMS:  org.exolab.jms.jndi.InitialContextFactory
kieker.monitoring.writer.jms.AsyncJMSWriter.ContextFactoryType=org.apache.activemq.jndi.ActiveMQInitialContextFactory
#
## The service name for the jms connection factory.
kieker.monitoring.writer.jms.AsyncJMSWriter.FactoryLookupName=ConnectionFactory
#
## The time that a jms message will be kept alive at the jms server before 
## it is automatically deleted.
kieker.monitoring.writer.jms.AsyncJMSWriter.MessageTimeToLive=10000
#
## Asynchronous writers need to store monitoring records in an internal buffer.
## This parameter defines its capacity in terms of the number of records. 
kieker.monitoring.writer.jms.AsyncJMSWriter.QueueSize=10000
#
## Behavior of the asynchronous writer when the internal queue is full:
## 0: terminate Monitoring with an error (default)
## 1: writer blocks until queue capacity is available
## 2: writer discards new records until space is available
##  Be careful when using the value '1' since then, the asynchronous writer
##  is no longer decoupled from the monitored application.
kieker.monitoring.writer.jms.AsyncJMSWriter.QueueFullBehavior=0
#
## Maximum time to wait for the writer threads to finish (in milliseconds).
## A MaxShutdownDelay of -1 means infinite waiting.
kieker.monitoring.writer.jms.AsyncJMSWriter.MaxShutdownDelay=-1


#####
#kieker.monitoring.writer=kieker.monitoring.writer.database.SyncDbWriter
#
## Database driver classname
## Examples:
##   MySQL:   com.mysql.jdbc.Driver
##   DerbyDB: org.apache.derby.jdbc.EmbeddedDriver
kieker.monitoring.writer.database.SyncDbWriter.DriverClassname=org.apache.derby.jdbc.EmbeddedDriver
#
## Connection string
## Examples:
##   MySQL:   jdbc:mysql://HOSTNAME/DBNAME?user=DBUSER&password=DBPASS
##   DerbyDB: jdbc:derby:DBNAME;user=DBUSER;password=DBPASS
kieker.monitoring.writer.database.SyncDbWriter.ConnectionString=jdbc:derby:tmp/KIEKER;user=DBUSER;password=DBPASS;create=true
#
## Prefix for the names of the database tables
kieker.monitoring.writer.database.SyncDbWriter.TablePrefix=kieker
#
## Drop already existing tables or terminate monitoring with an error. 
kieker.monitoring.writer.database.SyncDbWriter.DropTables=false


#####
#kieker.monitoring.writer=kieker.monitoring.writer.database.AsyncDbWriter
#
## Database driver classname
##   MySQL:   com.mysql.jdbc.Driver
##   DerbyDB: org.apache.derby.jdbc.EmbeddedDriver
kieker.monitoring.writer.database.AsyncDbWriter.DriverClassname=org.apache.derby.jdbc.EmbeddedDriver
#
## Connection string
## Examples:
##   MySQL:   jdbc:mysql://HOSTNAME/DBNAME?user=DBUSER&password=DBPASS
##   DerbyDB: jdbc:derby:DBNAME;user=DBUSER;password=DBPASS
kieker.monitoring.writer.database.AsyncDbWriter.ConnectionString=jdbc:derby:tmp/KIEKER;user=DBUSER;password=DBPASS;create=true
#
## Prefix for the names of the database tables
kieker.monitoring.writer.database.AsyncDbWriter.TablePrefix=kieker
#
## Drop already existing tables or terminate monitoring with an error. 
kieker.monitoring.writer.database.AsyncDbWriter.DropTables=false
#
## The number of concurrent Database connections.
kieker.monitoring.writer.database.AsyncDbWriter.numberOfConnections=4
#
## Asynchronous writers need to store monitoring records in an internal buffer.
## This parameter defines its capacity in terms of the number of records. 
kieker.monitoring.writer.database.AsyncDbWriter.QueueSize=10000
#
## Behavior of the asynchronous writer when the internal queue is full:
## 0: terminate Monitoring with an error (default)
## 1: writer blocks until queue capacity is available
## 2: writer discards new records until space is available
##  Be careful when using the value '1' since then, the asynchronous writer
##  is no longer decoupled from the monitored application.
kieker.monitoring.writer.database.AsyncDbWriter.QueueFullBehavior=0
#
## Maximum time to wait for the writer threads to finish (in milliseconds).
## A MaxShutdownDelay of -1 means infinite waiting.
kieker.monitoring.writer.database.AsyncDbWriter.MaxShutdownDelay=-1


#####
#kieker.monitoring.writer=kieker.monitoring.writer.jmx.JMXWriter
#
## The domain used to register the MonitoringLog. If empty, the value
## of "kieker.monitoring.jmx.domain" will be used.
kieker.monitoring.writer.jmx.JMXWriter.domain=
#
## The name of the MonitoringLog in the domain.
kieker.monitoring.writer.jmx.JMXWriter.logname=MonitoringLog

