Skip to content

Latest commit

 

History

History
 
 

micrometer-metrics-examples

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

Vert.x Micrometer Metrics examples

These examples demonstrate how to use the Vert.x Micrometer Metrics module.

There are examples for Prometheus, InfluxDB and JMX backends.

Each of them deploys 3 verticles:

  • SimpleWebServer creates an HTTP server - visit http://localhost:8080/ to trigger requests.

  • EventbusProducer sends messages over the event bus.

  • EventbusConsumer receives event bus messages.

Each simulates a random processing time.

For Prometheus, the verticle WebServerForBoundPrometheus is an alternative of SimpleWebserver that binds the prometheus /metrics endpoint to an existing HTTP server.

Launching the example from the command line

First, build the fat jar:

mvn clean package

Then run any of these Main classes:

Prometheus

Note: check here for Prometheus getting started guide.

java -cp target/micrometer-metrics-examples-3.5.1-fat.jar io.vertx.example.micrometer.prometheus.Main

You need to configure the Prometheus server to scrape localhost:8081.

  - job_name: 'vertx-8081'
    static_configs:
      - targets: ['localhost:8081']

By default, histogram sampling is disabled. You can enable it manually in the Micrometer registry, as shown in commented code in class io.vertx.example.micrometer.prometheus.Main:

registry.config().meterFilter(
    new MeterFilter() {
      @Override
      public DistributionStatisticConfig configure(Meter.Id id, DistributionStatisticConfig config) {
        return DistributionStatisticConfig.builder()
            .percentilesHistogram(true)
            .build()
            .merge(config);
      }
    });

Prometheus with endpoint bound to existing server

java -cp target/micrometer-metrics-examples-3.5.1-fat.jar io.vertx.example.micrometer.ometheus.MainWithBoundPrometheus

You need to configure the Prometheus server to scrape localhost:8080.

  - job_name: 'vertx-8080'
    static_configs:
      - targets: ['localhost:8080']

InfluxDB

This sample application expects an InfluxDB server running on localhost, port 8086, without authentication. For quick setup, you can run it with this docker command:

docker run -p 8086:8086 influxdb

Start the application:

java -cp target/micrometer-metrics-examples-3.5.1-fat.jar io.vertx.example.micrometer.influxdb.Main

JMX

java -cp target/micrometer-metrics-examples-3.5.1-fat.jar io.vertx.example.micrometer.jmx.Main

Metrics will be available under domain metrics.

Triggering some workload

You can trigger some workload to see the impact on HTTP server metrics:

while true
do curl http://localhost:8080/
    sleep .8
done

View in Grafana

Metrics can be observed from Grafana. These dashboards track some HTTP server and event bus metrics:

HTTP server metrics

HTTP server metrics

Event bus metrics

Event bus metrics