protected Observation prepareObservation(final MonitorableTask task) {
        val highCardinalityValues = toKeyValueArray(task.getUnboundedValues());
        val lowCardinalityValues = toKeyValueArray(task.getBoundedValues());
        return Observation.createNotStarted(task.getName(), observationRegistry.getObject())
            .lowCardinalityKeyValues(KeyValues.of(lowCardinalityValues))
            .highCardinalityKeyValues(KeyValues.of(highCardinalityValues))
            .contextualName(task.getName());
    }
This is {@link DefaultExecutableObserver}.

@author Misagh Moayyed
@since 7.0.0
core/cas-server-core-monitor/src/main/java/org/apereo/cas/monitor/DefaultExecutableObserver.java