Skip to content

Latest commit

 

History

History
158 lines (115 loc) · 3.96 KB

File metadata and controls

158 lines (115 loc) · 3.96 KB

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

Check here for Prometheus getting started guide.

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

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

To run a pre-configured Prometheus server on your machine with Docker, go to this example directory and run:

docker run --network host \
-v ${PWD}/prometheus:/etc/prometheus \
-it prom/prometheus

To start the example from the command line:

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

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-4.5.0-fat.jar io.vertx.example.micrometer.prometheus.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-4.5.0-fat.jar io.vertx.example.micrometer.influxdb.Main

JMX

java -cp target/micrometer-metrics-examples-4.5.0-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.

Tip

To run a Grafana server on your machine with Docker, go to this example directory and run:

docker run --network host \
-it grafana/grafana

These dashboards track some HTTP server and event bus metrics:

HTTP server metrics

HTTP server metrics

Event bus metrics

Event bus metrics