/** * Copyright 2017 VMware, Inc. * <p> * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * <p> * https://www.apache.org/licenses/LICENSE-2.0 * <p> * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package io.micrometer.core.samples; import cern.jet.random.Normal; import cern.jet.random.engine.MersenneTwister64; import cern.jet.random.engine.RandomEngine; import io.micrometer.core.instrument.MeterRegistry; import io.micrometer.core.instrument.Tags; import io.micrometer.core.samples.utils.SampleConfig; import reactor.core.publisher.Flux; import java.time.Duration; import java.util.concurrent.atomic.AtomicLong; public class GaugeSample { public static void main(String[] args) { MeterRegistry registry = SampleConfig.myMonitoringSystem(); AtomicLong n = new AtomicLong(); registry.gauge("gauge", Tags.of("k", "v"), n); registry.gauge("gauge", Tags.of("k", "v1"), n, n2 -> n2.get() - 1); RandomEngine r = new MersenneTwister64(0); Normal dist = new Normal(0, 10, r); Flux.interval(Duration.ofSeconds(5)) .doOnEach(d -> n.set(Math.abs(dist.nextInt()))) .blockLast(); } }