This example is a very simple Quarkus application that exposes a service on http://localhost:8080/hello.
It offers 2 endpoints:
/helloresponding200 OKwithHello from Quarkus!. The endpoint- adds a random delay to generate different response times. From time to time,
- it will fail with
500 SERVER UNAVAILABLE. /metricsexposing the MicroProfile metrics with the Prometheus format.
You can run your application in dev mode that enables live coding using:
./mvnw quarkus:dev
The application is packageable using ./mvnw package.
It produces the executable restful-endpoint-1.0.0-SNAPSHOT-runner.jar file in /target directory.
Be aware that it’s not an über-jar as the dependencies are copied into the target/lib directory.
The application is now runnable using java -jar target/restful-endpoint-1.0.0-SNAPSHOT-runner.jar.
You can create a native executable using: ./mvnw package -Pnative.
Or you can use Docker to build the native executable using: ./mvnw package -Pnative -Dquarkus.native.container-build=true.
You can then execute your binary: ./target/restful-endpoint-1.0.0-SNAPSHOT-runner
If you want to learn more about building native executables, please consult https://quarkus.io/guides/building-native-image-guide .
Visit http://localhost:8080/hello a couple of times. Then go to http://localhost:8080/metrics to view the metrics.
MicroProfile metrics encompass base, vendor and application metrics. Even
without instrumenting your code and simply adding the MP-Metrics fraction in
your project, you get useful metrics. If you want to access a subset of the
metrics, you can append base, vendor or application to the metrics
endpoint (eg http://localhost:8080/metrics/application).
In addition to the Prometheus format, MicroProfile can also return the metrics as JSON payload:
curl -H "Accept: application/json" http://localhost:8080/metricsAs well as metadata:
curl -H "Accept: application/json" -XOPTIONS http://localhost:8080/metrics