Developing Custom Extensions for Satoris

Extending the Satoris metering engine via the Probes Open API

Satoris, now freely available for download, comes with numerous built-in metering extensions. Some extensions adapt the engine to limit metering to particular software execution characteristics such as a particular code path or an environment condition. Others extend the data collection capabilities as well as allowing simplified integration with other tools and technologies. But it’s also possible to develop custom extensions around some well-defined extension points in the Probes Open API, which is fully supported by Satoris.

Anatomy of a Satoris Metered Runtime

There are 5 ways to extend the metering engine using the Probes Open API.


Manual instrumentation can be employed alongside agent-based dynamic bytecode instrumentation (BCI) to create and fire custom probes for a run of code within a large method or embedding additional context within a name.


The entire implementation of the Satoris metering engine can be replaced by implementing the service provider interface and setting a system property.

To install the alternative implementation:


The metering engine can be further extended by intercepting the lifecycle of all metered firing probes. Simply register a factory class name and have it return an interceptor when a thread, context, is first metered by the engine.

To install a custom interceptor add the following to the Satoris config file.


What we attend to and what we decide to ignore is very much part of our intelligence. The same applies to application performance monitoring tools. One or more custom strategies can be injected into the metering engine in deciding whether to meter (measure and collect) the firing of a specific named probe at some particular point in time in the software execution.

To install a custom strategy add the following to the Satoris config file.


The metering engine comes with numerous built-in meters but it also provides an interface for registering custom resource meters — measures.

To install a custom measure add the following to the Satoris config file.

It’s also possible to include custom resource measures using event counters.

Learning More

For further information on extending or integrating Satoris please check out the Probes Open API project documentation and sources hosted on GitHub.

Also, consider joining the Slack channel. Need an invite? Send an email.

William Louth. Software engineer specialized in self-adaptive software runtimes, adaptive control, self-regulation, resilience engineering & visualization.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store