Self-monitoring of the CMR with inspectIT Agent

Descripton

It is possible to monitor the CMR with another CMR. The first one should be an installed Version (at least the two inspectIT instances are not allowed to have the same workspace) and the second can be started from Eclipse. Running both CMRs from the same Eclipse will not work.

Process

  1. Install inspectIT on you computer, i.e. the most recent version from Github. Lets call this inspectIT "Monitor inspectIT".
  2. Start the Monitor inspectIT CMR without any specific start parameter.
  3. Import the Configuration which can be found in the inspectIT code under "inspectIT\resources\monitoring\CMR-Monitoring-Import-Data.xml". It is called: CMR [self monitoring].
  4. Ensure that the Agent Mapping is setup corretly that new Agents will use this Configuration under Agent Mapping Settings.
  5. Switch to the inspectIT Version In Eclipse which should be monitored. Lets call this inspectIT "ToTest inspectIT".
  6. Change the file inspectit.server\src\main\external-resources\config\default.xml: Change jetty.port to i.e. 8183 and the cmr.port to i.e. 9071.
  7. Start the CMR with the launch Script "CMR with Agent". Change the -javaagent path to the path of the Agent of the "Monitor inspectIT".
  8. When the second CMR is started you can monitor this one by putting load on it with another application.
  9. Ensure that the application that is monitored with the "ToTest inspectIT" uses the agent build by this inspectIT version and not from the "Monitor inspectIT" (In case they have not the same version). Further the monitored agent must add the cmr.port of the "ToTest CMR", i.e. -Dinspectit.repository=localhost:9071

Configuration

Currently this configuration is defined:

## repository <IP> <port> <Agent Name>
#############################################
repository localhost 9070 Development/CMR
## method-sensor-type <name> <fully-qualified-name> <priority> [<additional options>]
#####################################################################################
# method-sensor-type average-timer info.novatec.inspectit.agent.sensor.method.averagetimer.AverageTimerSensor HIGH stringLength=100
method-sensor-type timer info.novatec.inspectit.agent.sensor.method.timer.TimerSensor MAX stringLength=100
method-sensor-type isequence info.novatec.inspectit.agent.sensor.method.invocationsequence.InvocationSequenceSensor INVOC stringLength=100
method-sensor-type jdbc-connection info.novatec.inspectit.agent.sensor.method.jdbc.ConnectionSensor MIN
method-sensor-type jdbc-prepared-statement info.novatec.inspectit.agent.sensor.method.jdbc.PreparedStatementSensor MIN
method-sensor-type jdbc-prepared-statement-parameter info.novatec.inspectit.agent.sensor.method.jdbc.PreparedStatementParameterSensor MIN
method-sensor-type jdbc-statement info.novatec.inspectit.agent.sensor.method.jdbc.StatementSensor MIN 
## exception-sensor-type <fully-qualified-name> [<additional options>]
######################################################################
exception-sensor-type info.novatec.inspectit.agent.sensor.exception.ExceptionSensor mode=simple
## platform-sensor-type <fully-qualified-name> [<additional options>]
#####################################################################
platform-sensor-type info.novatec.inspectit.agent.sensor.platform.ClassLoadingInformation
platform-sensor-type info.novatec.inspectit.agent.sensor.platform.CompilationInformation
platform-sensor-type info.novatec.inspectit.agent.sensor.platform.MemoryInformation
platform-sensor-type info.novatec.inspectit.agent.sensor.platform.CpuInformation
platform-sensor-type info.novatec.inspectit.agent.sensor.platform.RuntimeInformation
platform-sensor-type info.novatec.inspectit.agent.sensor.platform.SystemInformation
platform-sensor-type info.novatec.inspectit.agent.sensor.platform.ThreadInformation
## send-strategy <fully-qualified-name>
#######################################
send-strategy info.novatec.inspectit.agent.sending.impl.TimeStrategy time=5000
# send-strategy info.novatec.inspectit.agent.sending.impl.ListSizeStrategy size=10
## buffer-strategy <fully-qualified-name>
#########################################
buffer-strategy info.novatec.inspectit.agent.buffer.impl.SimpleBufferStrategy
#buffer-strategy info.novatec.inspectit.agent.buffer.impl.SizeBufferStrategy size=12
## Ignore classes settings
#########################################
$include common/exclude-classes.cfg
## SQL tracing
##############
$include common/sql.cfg
## Uncomment configuration file under to enable parameter binding for SQL queries. This feature allows to have
## prepared Statements filled with the concrete parameter value that it was executed with, instead of just "?" values.
## Bear in mind that activating this feature will affect performance in a negative way as more methods need to be instrumented.
$include common/sql-parameters.cfg
# All services are proxies
sensor isequence info.novatec.inspectit.cmr.service* * modifiers=pub interface=true
sensor timer info.novatec.inspectit.cmr.service* * modifiers=pub interface=true
# All DAOs
sensor timer info.novatec.inspectit.cmr.dao.* * modifiers=pub interface=true
# Buffer
sensor timer info.novatec.inspectit.cmr.cache.IBuffer put interface=true
sensor timer info.novatec.inspectit.cmr.cache.IBuffer evict interface=true
sensor timer info.novatec.inspectit.cmr.cache.IBuffer analyzeNext interface=true
sensor timer info.novatec.inspectit.cmr.cache.IBuffer indexNext interface=true
# Storage
sensor timer info.novatec.inspectit.storage.StorageManager * modifiers=pub superclass=true
sensor timer info.novatec.inspectit.storage.StorageWriter * modifiers=pub superclass=true
sensor timer info.novatec.inspectit.cmr.storage.CmrStorageRecorder stop*
sensor timer info.novatec.inspectit.cmr.storage.CmrStorageRecorder start*
sensor timer info.novatec.inspectit.cmr.storage.CmrStorageRecorder record
# Indexing
sensor timer info.novatec.inspectit.cmr.indexing.impl.RootBranchFactory$RootBranch * modifiers=pub
# Aggregation
sensor timer info.novatec.inspectit.indexing.aggregation.impl.AggregationPerformer * modifiers=pub
# NIO
sensor timer info.novatec.inspectit.storage.nio.write.WritingChannelManager write*
sensor timer info.novatec.inspectit.storage.nio.read.ReadingChannelManager read*
# File upload servlet
sensor timer  info.novatec.inspectit.cmr.jetty.FileUploadServlet doGet
# All our exceptions
exception-sensor info.novatec.inspectit*