Collecting Performance Metrics

Collecting Performance Metrics

Configuration of Performance Metrics Module

Starting with version 3.4.0 of OpenEMPI, the commercial edition of the software includes a module that collects performance metrics from the operation of the system. In this section we describe how to enable this feature, how to sample the performance metrics that the application collects and how to setup an instance of Graphite to collect and view the performance metrics collected.

The default installation of OpenEMPI does not have the performance metrics module enabled so, before you can view the metrics generated by the application or set up a Graphite instance to collect those metrics, you must first enable the performance metrics module. Enabling the module is fairly simple.

    1. Load the performance metrics module during startup of the OpenEMPI server: to load the performance metrics module you need to ensure that the module configuration file openempi-extension-contexts.properties in the configuration directory of your OpenEMPI instance contains the configuration file for the performance metrics module: applicationContext-module-perfmetrics.xml
    2. Replace the standard Record Manager service with the instrumented version: modify your instance so that it uses the instrumented version of the Record Manager service instead of the standard one. To achieve this you need to modify the applicationContext-services.xml file in the configuration directory of your OpenEMPI instance and apply the following two changes:
      1. The first change is to modify the context object and inject the instrumented version of the Record Manager service (ref="instrumentedRecordManagerService") instead of the standard version (ref="recordManagerService").
      2. The second change is to modify the Person Manager Adapter service and inject the instrumented version of the Record Manager service (ref="instrumentedRecordManagerService") instead of the standard version (ref="recordManagerService").

 

Before the change:

	<bean id="context" class="org.openhie.openempi.context.Context">
		<property name="auditEventService" ref="auditEventService" />
		<property name="configuration" ref="configuration" />
		<property name="notificationService" ref="notificationService" />
		<property name="entityDefinitionManagerService" ref="entityDefinitionManagerService" />
		<property name="recordManagerService" ref="recordManagerService" />
...

	<bean id="personManagerServiceAdapter" class="org.openhie.openempi.service.impl.PersonManagerServiceAdapter">
		<property name="personEntityName" value="person" />
		<property name="entityDefinitionService" ref="entityDefinitionManagerService"/>
		<property name="recordQueryService" ref="recordQueryService"/>
		<property name="recordManagerService" ref="recordManagerService" />

 

After the change:

	<bean id="context" class="org.openhie.openempi.context.Context">
		<property name="auditEventService" ref="auditEventService" />
		<property name="configuration" ref="configuration" />
		<property name="notificationService" ref="notificationService" />
		<property name="entityDefinitionManagerService" ref="entityDefinitionManagerService" />
		<property name="recordManagerService" ref="instrumentedRecordManagerService" />
 
...
 
	<bean id="personManagerServiceAdapter" class="org.openhie.openempi.service.impl.PersonManagerServiceAdapter">
		<property name="personEntityName" value="person" />
		<property name="entityDefinitionService" ref="entityDefinitionManagerService"/>
		<property name="recordQueryService" ref="recordQueryService"/>
		<property name="recordManagerService" ref="instrumentedRecordManagerService" />

After making these changes and restarting your server, you should be able to retrieve samples of the metrics from the application either through the browser or using a REST service request at the following URL:

http://openempi-server-host/openempi-admin/metrics/

A GET request to the URL will return a sample of the all the metrics available. There is an example of the output generated below.

Configuration of JMX Reporting

The performance metrics can also be made available through the JMX MBeans server instance. By default the JMX reporting service is turned off but it can be enabled by adding the following parameter to the setenv.sh (or setenv.bat) file used during startup by the OpenEMPI server.

export CATALINA_OPTS="-Xms1024m -Xmx6144m -XX:+UseG1GC -XX:MaxDirectMemorySize=512g \
	-Dopenempi.home=$OPENEMPI_HOME \
	-Djava.util.logging.config.file=${OPENEMPI_HOME}/conf/orientdb-logging.properties \
	-Dopenempi.jmx.enable=true -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9091 \
    -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

You should then be able to connect to the MBean server and retrieve the metrics using an JMX compatible client such as jvisualvm.

Configuration of Graphite Reporting

The performance metrics module can also be configured to send metrics to a Graphite server. The installation of Graphite varies by platform so you should follow the latest instructions for installation of the software on your platform from the Graphite documentation site. Once you have configured your instance of Graphite, you can enable the periodic reporting of metrics from OpenEMPI to your Graphite instance using the following configuration parameters. The parameters can be specified by adding them to the setenv.sh (or setenv.bat) file used during startup by the OpenEMPI server.

For example:

export CATALINA_OPTS="-Xms1024m -Xmx6144m -XX:+UseG1GC -XX:MaxDirectMemorySize=512g \
	-Dopenempi.home=$OPENEMPI_HOME \
	-Djava.util.logging.config.file=${OPENEMPI_HOME}/conf/orientdb-logging.properties -Dopenempi.jmx.enable=true \
	-Dopenempi.graphite.enable=true \
	-Dopenempi.graphite.host=localhost \
	-Dopenempi.graphite.port=2003"
Parameter NameDescription
openempi.graphite.enable

Enables or disables the graphite reporting service. By default it is set to false but can be enabled by setting the parameter to true.

-Dopenempi.graphite.enable=true

openempi.graphite.host

Specifies the hostname or IP address of the server that is hosting Graphite's carbon service to which the performance metrics should be sent to.

-Dopenempi.graphite.host=192.168.1.23

openempi.graphite.port

Specifies the port number on which Graphite's carbon service is listening on for UDP connections.

-Dopenempi.graphite.port=200

openempi.graphite.reporting.interval

Specifies the interval in the time units specified using the time units parameter at which performance metrics are reported by the OpenEMPI server to the graphite server. The default value is set to 1 in time units of minutes.

-Dopenempi.graphite.reporting.interval=5

openempi.graphite.reporting.interval.unit

Specifies the time units used for the interpretation of the reporting interval parameter. The default value is set to minutes so by default, OpenEMPI submits performance metrics to the Graphite server every 1 minute. It can be set to "seconds", "minutes", or "milliseconds"

-Dopenempi.graphite.reporting.interval.unit=minutes

 

Sample Output

The following is a sample of the JSON formatted response returned by the metrics URL to a GET request.

 {
  "version": "3.1.3",
  "gauges": {
    "G1-Old-Generation.count": {
      "value": 0
    },
    "G1-Old-Generation.time": {
      "value": 0
    },
    "G1-Young-Generation.count": {
      "value": 19
    },
    "G1-Young-Generation.time": {
      "value": 922
    },
    "heap.committed": {
      "value": 1073741824
    },
    "heap.init": {
      "value": 1073741824
    },
    "heap.max": {
      "value": 6442450944
    },
    "heap.usage": {
      "value": 0.02413177986939748
    },
    "heap.used": {
      "value": 155467808
    },
    "non-heap.committed": {
      "value": 125554688
    },
    "non-heap.init": {
      "value": 2555904
    },
    "non-heap.max": {
      "value": -1
    },
    "non-heap.usage": {
      "value": -1.2115976E8
    },
    "non-heap.used": {
      "value": 121159760
    },
    "pools.Code-Cache.committed": {
      "value": 31064064
    },
    "pools.Code-Cache.init": {
      "value": 2555904
    },
    "pools.Code-Cache.max": {
      "value": 251658240
    },
    "pools.Code-Cache.usage": {
      "value": 0.11466395060221354
    },
    "pools.Code-Cache.used": {
      "value": 28856128
    },
    "pools.Compressed-Class-Space.committed": {
      "value": 10432512
    },
    "pools.Compressed-Class-Space.init": {
      "value": 0
    },
    "pools.Compressed-Class-Space.max": {
      "value": 1073741824
    },
    "pools.Compressed-Class-Space.usage": {
      "value": 0.009239070117473602
    },
    "pools.Compressed-Class-Space.used": {
      "value": 9920376
    },
    "pools.G1-Eden-Space.committed": {
      "value": 613416960
    },
    "pools.G1-Eden-Space.init": {
      "value": 56623104
    },
    "pools.G1-Eden-Space.max": {
      "value": -1
    },
    "pools.G1-Eden-Space.usage": {
      "value": 0.08205128205128205
    },
    "pools.G1-Eden-Space.used": {
      "value": 50331648
    },
    "pools.G1-Eden-Space.used-after-gc": {
      "value": 0
    },
    "pools.G1-Old-Gen.committed": {
      "value": 397410304
    },
    "pools.G1-Old-Gen.init": {
      "value": 1017118720
    },
    "pools.G1-Old-Gen.max": {
      "value": 6442450944
    },
    "pools.G1-Old-Gen.usage": {
      "value": 0.006553654869397481
    },
    "pools.G1-Old-Gen.used": {
      "value": 42221600
    },
    "pools.G1-Old-Gen.used-after-gc": {
      "value": 0
    },
    "pools.G1-Survivor-Space.committed": {
      "value": 62914560
    },
    "pools.G1-Survivor-Space.init": {
      "value": 0
    },
    "pools.G1-Survivor-Space.max": {
      "value": -1
    },
    "pools.G1-Survivor-Space.usage": {
      "value": 1.0
    },
    "pools.G1-Survivor-Space.used": {
      "value": 62914560
    },
    "pools.G1-Survivor-Space.used-after-gc": {
      "value": 62914560
    },
    "pools.Metaspace.committed": {
      "value": 84058112
    },
    "pools.Metaspace.init": {
      "value": 0
    },
    "pools.Metaspace.max": {
      "value": -1
    },
    "pools.Metaspace.usage": {
      "value": 0.9796809140800117
    },
    "pools.Metaspace.used": {
      "value": 82350128
    },
    "total.committed": {
      "value": 1199296512
    },
    "total.init": {
      "value": 1076297728
    },
    "total.max": {
      "value": 6442450943
    },
    "total.used": {
      "value": 276651464
    }
  },
  "counters": {
    
  },
  "histograms": {
    
  },
  "meters": {
    "openempi.record-manager.add-record-link-request.count": {
      "count": 0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "units": "events/second"
    },
    "openempi.record-manager.add-record-link-request.error-count": {
      "count": 0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "units": "events/second"
    },
    "openempi.record-manager.add-record-links-request.count": {
      "count": 0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "units": "events/second"
    },
    "openempi.record-manager.add-record-links-request.error-count": {
      "count": 0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "units": "events/second"
    },
    "openempi.record-manager.add-record-request.count": {
      "count": 0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "units": "events/second"
    },
    "openempi.record-manager.add-record-request.error-count": {
      "count": 0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "units": "events/second"
    },
    "openempi.record-manager.add-records-request.count": {
      "count": 0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "units": "events/second"
    },
    "openempi.record-manager.add-records-request.error-count": {
      "count": 0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "units": "events/second"
    },
    "openempi.record-manager.delete-record-by-identifier-request.count": {
      "count": 0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "units": "events/second"
    },
    "openempi.record-manager.delete-record-by-identifier-request.error-count": {
      "count": 0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "units": "events/second"
    },
    "openempi.record-manager.delete-record-request.count": {
      "count": 0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "units": "events/second"
    },
    "openempi.record-manager.delete-record-request.error-count": {
      "count": 0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "units": "events/second"
    },
    "openempi.record-manager.import-record-link-request.count": {
      "count": 0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "units": "events/second"
    },
    "openempi.record-manager.import-record-link-request.error-count": {
      "count": 0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "units": "events/second"
    },
    "openempi.record-manager.import-record-request.count": {
      "count": 0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "units": "events/second"
    },
    "openempi.record-manager.import-record-request.error-count": {
      "count": 0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "units": "events/second"
    },
    "openempi.record-manager.import-records-request.count": {
      "count": 0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "units": "events/second"
    },
    "openempi.record-manager.import-records-request.error-count": {
      "count": 0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "units": "events/second"
    },
    "openempi.record-manager.load-record-link-request.count": {
      "count": 0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "units": "events/second"
    },
    "openempi.record-manager.load-record-link-request.error-count": {
      "count": 0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "units": "events/second"
    },
    "openempi.record-manager.load-record-request.count": {
      "count": 0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "units": "events/second"
    },
    "openempi.record-manager.load-record-request.error-count": {
      "count": 0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "units": "events/second"
    },
    "openempi.record-manager.remove-identifier-request.count": {
      "count": 0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "units": "events/second"
    },
    "openempi.record-manager.remove-identifier-request.error-count": {
      "count": 0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "units": "events/second"
    },
    "openempi.record-manager.remove-record-link-request.count": {
      "count": 0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "units": "events/second"
    },
    "openempi.record-manager.remove-record-link-request.error-count": {
      "count": 0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "units": "events/second"
    },
    "openempi.record-manager.remove-record-request.count": {
      "count": 0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "units": "events/second"
    },
    "openempi.record-manager.remove-record-request.error-count": {
      "count": 0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "units": "events/second"
    },
    "openempi.record-manager.update-record-link-request.count": {
      "count": 0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "units": "events/second"
    },
    "openempi.record-manager.update-record-link-request.error-count": {
      "count": 0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "units": "events/second"
    },
    "openempi.record-manager.update-record-request.count": {
      "count": 0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "units": "events/second"
    },
    "openempi.record-manager.update-record-request.error-count": {
      "count": 0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "units": "events/second"
    }
  },
  "timers": {
    "openempi.record-manager.add-record-link-request.response": {
      "count": 0,
      "max": 0.0,
      "mean": 0.0,
      "min": 0.0,
      "p50": 0.0,
      "p75": 0.0,
      "p95": 0.0,
      "p98": 0.0,
      "p99": 0.0,
      "p999": 0.0,
      "stddev": 0.0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "duration_units": "seconds",
      "rate_units": "calls/second"
    },
    "openempi.record-manager.add-record-links-request.response": {
      "count": 0,
      "max": 0.0,
      "mean": 0.0,
      "min": 0.0,
      "p50": 0.0,
      "p75": 0.0,
      "p95": 0.0,
      "p98": 0.0,
      "p99": 0.0,
      "p999": 0.0,
      "stddev": 0.0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "duration_units": "seconds",
      "rate_units": "calls/second"
    },
    "openempi.record-manager.add-record-request.response": {
      "count": 0,
      "max": 0.0,
      "mean": 0.0,
      "min": 0.0,
      "p50": 0.0,
      "p75": 0.0,
      "p95": 0.0,
      "p98": 0.0,
      "p99": 0.0,
      "p999": 0.0,
      "stddev": 0.0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "duration_units": "seconds",
      "rate_units": "calls/second"
    },
    "openempi.record-manager.add-records-request.response": {
      "count": 0,
      "max": 0.0,
      "mean": 0.0,
      "min": 0.0,
      "p50": 0.0,
      "p75": 0.0,
      "p95": 0.0,
      "p98": 0.0,
      "p99": 0.0,
      "p999": 0.0,
      "stddev": 0.0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "duration_units": "seconds",
      "rate_units": "calls/second"
    },
    "openempi.record-manager.delete-record-by-identifier-request.response": {
      "count": 0,
      "max": 0.0,
      "mean": 0.0,
      "min": 0.0,
      "p50": 0.0,
      "p75": 0.0,
      "p95": 0.0,
      "p98": 0.0,
      "p99": 0.0,
      "p999": 0.0,
      "stddev": 0.0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "duration_units": "seconds",
      "rate_units": "calls/second"
    },
    "openempi.record-manager.delete-record-request.response": {
      "count": 0,
      "max": 0.0,
      "mean": 0.0,
      "min": 0.0,
      "p50": 0.0,
      "p75": 0.0,
      "p95": 0.0,
      "p98": 0.0,
      "p99": 0.0,
      "p999": 0.0,
      "stddev": 0.0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "duration_units": "seconds",
      "rate_units": "calls/second"
    },
    "openempi.record-manager.import-record-link-request.response": {
      "count": 0,
      "max": 0.0,
      "mean": 0.0,
      "min": 0.0,
      "p50": 0.0,
      "p75": 0.0,
      "p95": 0.0,
      "p98": 0.0,
      "p99": 0.0,
      "p999": 0.0,
      "stddev": 0.0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "duration_units": "seconds",
      "rate_units": "calls/second"
    },
    "openempi.record-manager.import-record-request.response": {
      "count": 0,
      "max": 0.0,
      "mean": 0.0,
      "min": 0.0,
      "p50": 0.0,
      "p75": 0.0,
      "p95": 0.0,
      "p98": 0.0,
      "p99": 0.0,
      "p999": 0.0,
      "stddev": 0.0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "duration_units": "seconds",
      "rate_units": "calls/second"
    },
    "openempi.record-manager.import-records-request.response": {
      "count": 0,
      "max": 0.0,
      "mean": 0.0,
      "min": 0.0,
      "p50": 0.0,
      "p75": 0.0,
      "p95": 0.0,
      "p98": 0.0,
      "p99": 0.0,
      "p999": 0.0,
      "stddev": 0.0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "duration_units": "seconds",
      "rate_units": "calls/second"
    },
    "openempi.record-manager.load-record-link-request.response": {
      "count": 0,
      "max": 0.0,
      "mean": 0.0,
      "min": 0.0,
      "p50": 0.0,
      "p75": 0.0,
      "p95": 0.0,
      "p98": 0.0,
      "p99": 0.0,
      "p999": 0.0,
      "stddev": 0.0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "duration_units": "seconds",
      "rate_units": "calls/second"
    },
    "openempi.record-manager.load-record-request.response": {
      "count": 0,
      "max": 0.0,
      "mean": 0.0,
      "min": 0.0,
      "p50": 0.0,
      "p75": 0.0,
      "p95": 0.0,
      "p98": 0.0,
      "p99": 0.0,
      "p999": 0.0,
      "stddev": 0.0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "duration_units": "seconds",
      "rate_units": "calls/second"
    },
    "openempi.record-manager.remove-identifier-request.response": {
      "count": 0,
      "max": 0.0,
      "mean": 0.0,
      "min": 0.0,
      "p50": 0.0,
      "p75": 0.0,
      "p95": 0.0,
      "p98": 0.0,
      "p99": 0.0,
      "p999": 0.0,
      "stddev": 0.0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "duration_units": "seconds",
      "rate_units": "calls/second"
    },
    "openempi.record-manager.remove-record-link-request.response": {
      "count": 0,
      "max": 0.0,
      "mean": 0.0,
      "min": 0.0,
      "p50": 0.0,
      "p75": 0.0,
      "p95": 0.0,
      "p98": 0.0,
      "p99": 0.0,
      "p999": 0.0,
      "stddev": 0.0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "duration_units": "seconds",
      "rate_units": "calls/second"
    },
    "openempi.record-manager.remove-record-request.response": {
      "count": 0,
      "max": 0.0,
      "mean": 0.0,
      "min": 0.0,
      "p50": 0.0,
      "p75": 0.0,
      "p95": 0.0,
      "p98": 0.0,
      "p99": 0.0,
      "p999": 0.0,
      "stddev": 0.0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "duration_units": "seconds",
      "rate_units": "calls/second"
    },
    "openempi.record-manager.update-record-link-request.response": {
      "count": 0,
      "max": 0.0,
      "mean": 0.0,
      "min": 0.0,
      "p50": 0.0,
      "p75": 0.0,
      "p95": 0.0,
      "p98": 0.0,
      "p99": 0.0,
      "p999": 0.0,
      "stddev": 0.0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "duration_units": "seconds",
      "rate_units": "calls/second"
    },
    "openempi.record-manager.update-record-request.response": {
      "count": 0,
      "max": 0.0,
      "mean": 0.0,
      "min": 0.0,
      "p50": 0.0,
      "p75": 0.0,
      "p95": 0.0,
      "p98": 0.0,
      "p99": 0.0,
      "p999": 0.0,
      "stddev": 0.0,
      "m15_rate": 0.0,
      "m1_rate": 0.0,
      "m5_rate": 0.0,
      "mean_rate": 0.0,
      "duration_units": "seconds",
      "rate_units": "calls/second"
    }
  }
}