in metrics-core/src/main/java/software/amazon/swage/metrics/jmx/MXBeanPoller.java [116:146]
public MXBeanPoller(final ScheduledExecutorService executor,
final MetricRecorder metricRecorder,
final int pollingIntervalSeconds,
final List<Sensor> sensors)
{
this.executor = executor;
this.metricRecorder = metricRecorder;
this.sensors = Collections.unmodifiableList(new ArrayList<>(sensors));
// Name of the JVM, as stand-in for PID
final String runtimeName = ManagementFactory.getRuntimeMXBean().getName();
// Set up the context to use for the recorded metric events.
// Each sensor may add additional context
TypedMap contextData = ContextData.withId(runtimeName)
.add(StandardContext.OPERATION, "JMX")
.build();
for (Sensor s : sensors) {
contextData = s.addContext(contextData);
}
this.updaterContext = contextData;
// Context set
this.running.set(true);
this.executor.scheduleAtFixedRate(
() -> runSensors(),
0,
pollingIntervalSeconds,
TimeUnit.SECONDS);
}