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:
-
SimpleWebServercreates an HTTP server - visit http://localhost:8080/ to trigger requests. -
EventbusProducersends messages over the event bus. -
EventbusConsumerreceives 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.
First, build the fat jar:
mvn clean packageThen run any of these Main classes:
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-3.9.0-fat.jar io.vertx.example.micrometer.prometheus.MainBy 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);
}
});See also Micrometer documentation.
java -cp target/micrometer-metrics-examples-3.9.0-fat.jar io.vertx.example.micrometer.prometheus.MainWithBoundPrometheusYou need to configure the Prometheus server to scrape localhost:8080.
- job_name: 'vertx-8080'
static_configs:
- targets: ['localhost:8080']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 influxdbStart the application:
java -cp target/micrometer-metrics-examples-3.9.0-fat.jar io.vertx.example.micrometer.influxdb.MainYou can trigger some workload to see the impact on HTTP server metrics:
while true
do curl http://localhost:8080/
sleep .8
doneMetrics 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:

