Quarkus
Introduction
The Quarkus O11ySource provides comprehensive observability for Quarkus-based JVM applications by collecting and exposing key application and JVM metrics. It offers end-to-end visibility into application performance and health, including HTTP server requests, latency, error rates, active connections, JVM memory utilization, garbage collection, thread activity, class loading, buffer pools, Netty metrics, worker pool utilization, process and system CPU usage, file descriptor utilization, and runtime information.
Getting Started
Compatibility
vuSmartMaps support Quarkus monitoring for applications with the following requirements:
- Quarkus Runtime: JVM mode
- Quarkus Version: 2.x LTS or 3.x LTS
- Java Version: 11 or above for Quarkus 2.x; Java 17 or above for Quarkus 3.x
- Build Tool: Maven 3.8.4 or above
- Required metrics extension: quarkus-micrometer-registry-prometheus
- Optional health extension: quarkus-smallrye-health
- GraalVM native mode is partially supported only for non-JVM metrics; JVM memory, GC, thread, and classloading panels will not populate for native-mode services.
Data Collection Method
The Quarkus O11ySource utilizes the vuSmartMaps internal agent to collect Quarkus application metrics. The agent pulls Micrometer metrics from the Quarkus metrics endpoint and forwards the events through the metrics pipeline. No agent installation is required on the Quarkus host.
Prerequisites
Inputs for Configuring Data Source
- Host: The IP address or FQDN of the Quarkus application. This field uniquely identifies each application added in this source configuration.
- Port Number: The port in which the Quarkus application or management endpoint is running.
- Period (in seconds): How frequently data is gathered. The period should be between 60 seconds and 300 seconds.
Firewall Requirement
To collect data from this O11ySource, ensure the following ports are opened:
| Source IP | Destination IP | Destination Port | Protocol | Direction |
|---|---|---|---|---|
| vuSmartMaps IP | IP Address or FQDN of the Quarkus application | The Quarkus application port (typically 8080) or the Quarkus management port (typically 9000) when quarkus.management.enabled=true | TCP | Outbound |
*Before providing the firewall requirements, please update the port based on the customer environment.
Configuring the Target
The Quarkus application must be configured to expose metrics before onboarding:
Dependencies: Add the following to your pom.xml: <dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-micrometer-registry-prometheus</artifactId> </dependency> <dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-smallrye-health</artifactId> </dependency> Application Properties: Confirm or add the following in src/main/resources/application.properties: quarkus.micrometer.enabled=true quarkus.micrometer.export.prometheus.enabled=true quarkus.micrometer.export.prometheus.path=/q/metrics quarkus.smallrye-health.root-path=/q/health quarkus.micrometer.binder.http-server.match-patterns=/api/users/{id}=/api/users,/api/orders/{id}=/api/orders Optional Configuration:
-
- Enable JDBC pool metrics only if required: quarkus.datasource.metrics.enabled=true
-
- If quarkus.management.enabled=true, use the management port for all /q/* endpoints. The default management port is 9000.
-
- If the metrics endpoint is protected, configure the matching authentication mode for the metrics endpoint.
Endpoints to verify from the collector host:
-
- curl http://<host>:<port>/q/metrics
-
- curl http://<host>:<port>/q/health
Configuration Steps
Enablethe O11ySource for Quarkus.- Select the Sources tab and press the
+button to add a new Quarkus instance. - Provide the required configurations in the UI:
- *Host
- *Port
- *Period
- Verify the host and port point to the Quarkus application port or to the management port if management endpoints are enabled.
- Click
Saveto create the instance.
Metrics Collected
| Name | Description | Data Type |
|---|---|---|
| Timestamp | Collection timestamp with millisecond precision used for time filtering and partitioning. | DateTime64(3) |
| Name | Raw Telegraf measurement name emitted by the metrics input. | String |
| Doc Type | Document or measurement type used to route Quarkus telemetry records. | String |
| Host | Host label from Telegraf for the scraped Quarkus endpoint. | String |
| URL | Full metrics scrape URL used by Telegraf. | String |
| Action | Garbage collection action label. | String |
| Allocator Type | Netty allocator type label. | String |
| Area | JVM memory area label such as heap or nonheap. | String |
| Cache Type | Cache type label emitted by Quarkus/Micrometer when present. | String |
| Cause | Garbage collection cause label. | String |
| Class | Class label emitted by runtime metrics when present. | String |
| Executor | Executor or worker pool label. | String |
| GC | Garbage collector name label. | String |
| ID | Metric identifier label, commonly JVM memory pool name. | String |
| Memory Type | Memory type label emitted by allocator metrics. | String |
| Method | HTTP method label for server request metrics. | String |
| Outcome | HTTP request outcome label such as SUCCESS or SERVER_ERROR. | String |
| Pool | Pool label for worker, allocator, or memory pool metrics. | String |
| Pool Name | Detailed pool name label. | String |
| Pool Type | Pool type label. | String |
| Runtime | Runtime label, usually JVM runtime information. | String |
| Server Port | Server port label for the Quarkus HTTP endpoint. | String |
| State | JVM thread state label. | String |
| Status | HTTP response status label for server request metrics. | String |
| URI | HTTP route or URI label for server request metrics. | String |
| URL Scheme | URL scheme label such as http or https. | String |
| Vendor | JVM vendor label. | String |
| Version | JVM or runtime version label. | String |
| Demo Background Jobs Total | Demo application background job counter exposed through application metrics. | UInt64 |
| HTTP Server Active Connections | Current number of active HTTP server connections. | UInt64 |
| HTTP Server Active Requests | Current number of in-flight HTTP server requests. | UInt64 |
| HTTP Server Bytes Read Count | HTTP server bytes read metric emitted by Quarkus/Micrometer. | UInt64 |
| HTTP Server Bytes Read Max | HTTP server bytes read metric emitted by Quarkus/Micrometer. | Float64 |
| HTTP Server Bytes Read Sum | HTTP server bytes read metric emitted by Quarkus/Micrometer. | Float64 |
| HTTP Server Bytes Written Count | HTTP server bytes written metric emitted by Quarkus/Micrometer. | UInt64 |
| HTTP Server Bytes Written Max | HTTP server bytes written metric emitted by Quarkus/Micrometer. | Float64 |
| HTTP Server Bytes Written Sum | HTTP server bytes written metric emitted by Quarkus/Micrometer. | Float64 |
| HTTP Server Connections Seconds Active Count | HTTP server connection duration metric emitted by Quarkus/Micrometer. | UInt64 |
| HTTP Server Connections Seconds Duration Sum | HTTP server connection duration metric emitted by Quarkus/Micrometer. | Float64 |
| HTTP Server Connections Seconds Max | HTTP server connection duration metric emitted by Quarkus/Micrometer. | Float64 |
| HTTP Server Errors Total | Cumulative HTTP server error count. | UInt64 |
| HTTP Server Requests Seconds Count | Cumulative HTTP server request count from Quarkus Micrometer metrics. | Float64 |
| HTTP Server Requests Seconds Max | Maximum observed HTTP server request duration in seconds for the scrape window. | Float64 |
| HTTP Server Requests Seconds Sum | Cumulative HTTP server request duration in seconds; used with request count for average latency. | Float64 |
| JVM Buffer Count Buffers | JVM buffer pool metric collected from the Quarkus metrics endpoint. | UInt64 |
| JVM Buffer Memory Used Bytes | JVM buffer pool metric collected from the Quarkus metrics endpoint. | UInt64 |
| JVM Buffer Total Capacity Bytes | JVM buffer pool metric collected from the Quarkus metrics endpoint. | UInt64 |
| JVM Classes Loaded Classes | JVM class loading metric collected from the Quarkus metrics endpoint. | UInt64 |
| JVM Classes Loaded Count Classes Total | JVM class loading metric collected from the Quarkus metrics endpoint. | UInt64 |
| JVM Classes Unloaded Classes Total | JVM class loading metric collected from the Quarkus metrics endpoint. | UInt64 |
| JVM GC Live Data Size Bytes | JVM garbage collection metric collected from the Quarkus metrics endpoint. | UInt64 |
| JVM GC Max Data Size Bytes | JVM garbage collection metric collected from the Quarkus metrics endpoint. | UInt64 |
| JVM GC Memory Allocated Bytes Total | JVM garbage collection metric collected from the Quarkus metrics endpoint. | UInt64 |
| JVM GC Memory Promoted Bytes Total | JVM garbage collection metric collected from the Quarkus metrics endpoint. | UInt64 |
| JVM GC Overhead | JVM garbage collection metric collected from the Quarkus metrics endpoint. | Float64 |
| JVM GC Pause Seconds Count | JVM garbage collection metric collected from the Quarkus metrics endpoint. | Float64 |
| JVM GC Pause Seconds Max | JVM garbage collection metric collected from the Quarkus metrics endpoint. | Float64 |
| JVM GC Pause Seconds Sum | JVM garbage collection metric collected from the Quarkus metrics endpoint. | Float64 |
| JVM Info Total | JVM information metric with runtime/vendor/version dimensions. | UInt64 |
| JVM Memory Committed Bytes | JVM memory metric collected from the Quarkus metrics endpoint. | UInt64 |
| JVM Memory Max Bytes | JVM memory metric collected from the Quarkus metrics endpoint. | Int64 |
| JVM Memory Usage After GC | JVM memory metric collected from the Quarkus metrics endpoint. | Float64 |
| JVM Memory Used Bytes | JVM memory metric collected from the Quarkus metrics endpoint. | UInt64 |
| JVM Threads Daemon Threads | JVM thread metric collected from the Quarkus metrics endpoint. | UInt64 |
| JVM Threads Live Threads | JVM thread metric collected from the Quarkus metrics endpoint. | UInt64 |
| JVM Threads Peak Threads | JVM thread metric collected from the Quarkus metrics endpoint. | UInt64 |
| JVM Threads Started Threads Total | JVM thread metric collected from the Quarkus metrics endpoint. | UInt64 |
| JVM Threads States Threads | JVM thread metric collected from the Quarkus metrics endpoint. | UInt64 |
| Netty Allocator Memory Pinned | Netty allocator metric exposed by Quarkus/Micrometer. | UInt64 |
| Netty Allocator Memory Used | Netty allocator metric exposed by Quarkus/Micrometer. | UInt64 |
| Netty Allocator Pooled Arenas | Netty allocator metric exposed by Quarkus/Micrometer. | UInt64 |
| Netty Allocator Pooled Cache Size | Netty allocator metric exposed by Quarkus/Micrometer. | UInt64 |
| Netty Allocator Pooled Chunk Size | Netty allocator metric exposed by Quarkus/Micrometer. | UInt64 |
| Netty Allocator Pooled Threadlocal Caches | Netty allocator metric exposed by Quarkus/Micrometer. | UInt64 |
| Netty Eventexecutor Tasks Pending | Netty event executor metric exposed by Quarkus/Micrometer. | UInt64 |
| Netty Eventexecutor Workers | Netty event executor metric exposed by Quarkus/Micrometer. | UInt64 |
| Process CPU Time Ns Total | JVM process resource metric collected from the Quarkus metrics endpoint. | UInt64 |
| Process CPU Usage | JVM process resource metric collected from the Quarkus metrics endpoint. | Float64 |
| Process Files Max Files | JVM process resource metric collected from the Quarkus metrics endpoint. | UInt64 |
| Process Files Open Files | JVM process resource metric collected from the Quarkus metrics endpoint. | UInt64 |
| Process Start Time Seconds | JVM process resource metric collected from the Quarkus metrics endpoint. | Float64 |
| Process Uptime Seconds | JVM process resource metric collected from the Quarkus metrics endpoint. | Float64 |
| System CPU Count | System resource metric collected from the Quarkus metrics endpoint. | UInt64 |
| System CPU Usage | System resource metric collected from the Quarkus metrics endpoint. | Float64 |
| System Load Average 1m | System resource metric collected from the Quarkus metrics endpoint. | Float64 |
| Worker Pool Active | Quarkus worker pool metric collected from the metrics endpoint. | UInt64 |
| Worker Pool Completed Total | Quarkus worker pool metric collected from the metrics endpoint. | UInt64 |
| Worker Pool Idle | Quarkus worker pool metric collected from the metrics endpoint. | UInt64 |
| Worker Pool Queue Delay Seconds Count | Quarkus worker pool metric collected from the metrics endpoint. | Float64 |
| Worker Pool Queue Delay Seconds Max | Quarkus worker pool metric collected from the metrics endpoint. | Float64 |
| Worker Pool Queue Delay Seconds Sum | Quarkus worker pool metric collected from the metrics endpoint. | Float64 |
| Worker Pool Queue Size | Quarkus worker pool metric collected from the metrics endpoint. | UInt64 |
| Worker Pool Ratio | Quarkus worker pool metric collected from the metrics endpoint. | Float64 |
| Worker Pool Rejected Total | Quarkus worker pool metric collected from the metrics endpoint. | UInt64 |
| Worker Pool Usage Seconds Count | Quarkus worker pool metric collected from the metrics endpoint. | Float64 |
| Worker Pool Usage Seconds Max | Quarkus worker pool metric collected from the metrics endpoint. | Float64 |
| Worker Pool Usage Seconds Sum | Quarkus worker pool metric collected from the metrics endpoint. | Float64 |
| Target | Target Quarkus instance identifier or IP used as lookup key. | String |
