Keycloak Metrics
Keycloak exposes metrics at /auth/metrics on port 9000.
These measurements describe authentication processing, request handling, database connections, caches, clustering and runtime resource usage.
Where a table uses braces, each listed suffix identifies a separate metric.
For example, http_client_requests_seconds_\{count,sum,max} represents the count, total duration and maximum duration of requests.
JVM and process
Memory and thread labels identify the resource being measured. CPU usage and GC overhead are ratios.
| Metric | Type and unit | Labels | Meaning |
|---|---|---|---|
|
Constant information counter |
|
JVM identity. |
|
Gauge, classes |
None |
Classes currently loaded. |
|
Counter, classes |
None |
Classes loaded since JVM start. |
|
Counter, classes |
None |
Classes unloaded since JVM start. |
|
Gauge, bytes |
|
Memory used in each pool. |
|
Gauge, bytes |
|
Memory committed to each pool. |
|
Gauge, bytes |
|
Maximum pool capacity; may be undefined. |
|
Gauge, buffers |
|
Buffers in each buffer pool. |
|
Gauge, bytes |
|
Buffer-pool memory usage. |
|
Gauge, bytes |
|
Buffer-pool capacity. |
|
Gauge, threads |
None |
Live platform threads. |
|
Gauge, threads |
None |
Daemon platform threads. |
|
Gauge, threads |
None |
Peak live thread count. |
|
Gauge, threads |
|
Platform threads by state. |
|
Counter, threads |
None |
Threads started. |
|
Gauge, bytes |
None |
Maximum long-lived heap size. |
|
Gauge, bytes |
None |
Long-lived heap occupancy after GC. |
|
Counter, bytes |
None |
Heap allocation tracked through GC notifications. |
|
Counter, bytes |
None |
Bytes promoted to long-lived memory; generational collectors. |
|
Timer count |
|
GC pauses recorded. |
|
Timer total, seconds |
Same |
Time spent in GC pauses. |
|
Gauge, seconds |
Same |
Rolling maximum pause. |
|
Timer count |
|
Concurrent GC phases recorded, when reported. |
|
Timer total, seconds |
Same |
Concurrent GC phase duration. |
|
Gauge, seconds |
Same |
Rolling maximum concurrent phase duration. |
|
Gauge, ratio 0-1 |
|
Long-lived heap occupancy after garbage collection. |
|
Gauge, ratio 0-1 |
None |
Recent fraction of elapsed time spent in GC. |
|
Gauge, seconds |
None |
JVM uptime. |
|
Gauge, Unix seconds |
None |
JVM start time. |
|
Gauge, processors |
None |
Processors available to the JVM. |
|
Gauge, ratio 0-1 |
None |
Recent system CPU usage. |
|
Gauge, ratio 0-1 |
None |
Recent JVM process CPU usage. |
|
Counter, nanoseconds |
None |
Process CPU time. |
|
Gauge, load |
None |
One-minute system load average. |
|
Gauge, files |
None |
Open process file descriptors. |
|
Gauge, files |
None |
Maximum permitted file descriptors. |
HTTP requests
Request timers use method, uri, status, and outcome. Connection and traffic measurements identify the listener with server_port.
| Metric | Type and unit | Meaning |
|---|---|---|
|
Timer count |
Completed requests. |
|
Timer total, seconds |
Total processing time. |
|
Gauge, seconds |
Rolling maximum request duration. |
|
Gauge, requests |
Requests in progress. |
|
Gauge, connections |
Open HTTP server connections. |
|
Counter, exceptions |
Network exceptions, labelled by |
|
Summary count |
Read observations. |
|
Summary total, bytes |
Received traffic. |
|
Gauge, bytes |
Rolling largest read observation. |
|
Summary count |
Write observations. |
|
Summary total, bytes |
Sent traffic. |
|
Gauge, bytes |
Rolling largest write observation. |
Connections, messaging, and resource pools
These measurements describe the connections, clients, messaging addresses, and resource pools used by the service. In metric names, <poolType> identifies the resource-pool type. Active-connection timers measure connections that are still open.
| Metrics | Type / unit | Labels / activity | Meaning |
|---|---|---|---|
|
Long-task timer |
|
Open connection count and elapsed lifetimes. |
|
Long-task timer |
|
Active server WebSocket lifetimes. |
|
Counter, responses |
|
Server pushes. |
|
Timer |
|
Outbound request duration. |
|
Timer |
|
Client queue wait. |
|
Gauges, requests |
|
Queued requests and requests waiting for a response. |
|
Gauge, connections |
|
Open outbound WebSockets. |
|
Gauge, connections |
|
Open client TCP connections. |
|
Long-task timer |
|
Active client connection lifetimes. |
|
Summaries, observation count / bytes |
|
Outbound client’s received/sent bytes. |
|
Counter, exceptions |
|
Client transport errors. |
|
Gauges, connections |
When HTTP connection tracking initializes |
Current connections and admission limit. |
|
Counter, connections |
HTTP connection tracker |
Rejected incoming connections. |
|
Counters, messages |
|
Published and point-to-point messages. |
|
Counter, failures |
|
Failed replies. |
|
Gauge, handlers |
|
Registered handlers. |
|
Gauges containing accumulated message counts |
|
Delivered and discarded messages while the handler registration exists. |
|
Summaries, observation count / bytes |
|
Bus network payloads. |
|
Timers |
|
Wait time and resource-use duration. |
|
Gauges, items/resources |
Same; idle requires a positive configured maximum |
Pool queue, busy and idle resources. |
|
Gauge, ratio |
Same; positive configured maximum |
Fraction of pool resources in use. |
|
Counters, tasks |
Same |
Acquisitions and rejected submissions. |
|
Gauges, bytes |
|
Allocated and pinned Netty memory. |
|
Gauge, arenas |
|
Pooled allocation arenas. |
|
Gauge, entries |
|
Per-thread allocation-cache size. |
|
Gauge, caches |
|
Thread-local allocation caches. |
|
Gauge, bytes |
|
Allocation chunk size. |
|
Gauge, tasks |
|
Queued event-loop work, including |
Database connection pool
The datasource label identifies the database pool. Database duration gauges use milliseconds.
| Metric | Type and unit | Meaning |
|---|---|---|
|
Gauge, connections |
In use. |
|
Gauge, connections |
Idle and available. |
|
Gauge, connections |
Peak simultaneous usage. |
|
Gauge, threads |
Waiting for a connection. |
|
Counter, acquisitions |
Successful acquisitions. |
|
Counter, connections |
Created connections. |
|
Counter, detections |
Leak detections; one connection can be counted repeatedly. |
|
Counter, connections |
Destroyed connections. |
|
Counter, connections |
Flushed connections, excluding invalid/idle removal. |
|
Counter, connections |
Invalid connections removed. |
|
Counter, connections |
Idle connections removed. |
|
Gauge, ms |
Mean wait for acquisition. |
|
Gauge, ms |
Maximum acquisition wait. |
|
Gauge, cumulative ms |
Total acquisition wait. |
|
Gauge, ms |
Mean connection creation time. |
|
Gauge, ms |
Maximum connection creation time. |
|
Gauge, cumulative ms |
Total connection creation time. |
Cache and cluster
Cache metrics use a cache label. Cluster measurements use cluster and node; synchronous requests also identify target_node. Cache entries measure cache occupancy.
| Metric or exact members | Value and unit | Meaning |
|---|---|---|
|
Gauge, entries |
Local cache occupancy. |
|
Counter, lookups |
Local cache reads, with |
|
Cumulative count |
Local cache evictions. |
|
Gauge, entries |
Node entries including backup copies. |
|
Gauge, entries |
Node entries excluding backups. |
|
Timer count / seconds |
Cache writes. |
|
Timer count / seconds |
Successful reads. |
|
Timer count / seconds |
Unsuccessful reads. |
|
Timer count / seconds |
Removes finding an entry. |
|
Timer count / seconds |
Removes finding no entry. |
|
Cumulative count |
Eviction events. |
|
Gauge, locks |
Locks held by the node. |
|
Timer count / seconds |
Transaction prepare operations. |
|
Timer count / seconds |
Transaction rollback operations. |
|
Timer count / seconds |
Transaction commit operations. |
|
Gauge, segments |
Transactional state transfers in progress. |
|
Gauge, segments |
State transfers in progress. |
|
Cumulative count |
Successful replications. |
|
Cumulative count |
Failed replications. |
|
Gauge, ms |
Mean replication duration. |
| Metric or exact members | Value and unit | Meaning |
|---|---|---|
|
Gauge, nodes |
Cluster membership observed by this node. |
|
Timer count / seconds |
Synchronous requests to another node. |
|
Cumulative bytes |
Cluster network traffic. |
|
Gauge, threads |
Current transport thread pool. |
|
Gauge, threads |
Peak pool size. |
|
Cumulative count |
Flow-control blocking events. |
|
Gauge, ms |
Mean flow-control block duration. |
|
Cumulative count |
Retransmitted messages. |
|
Cumulative count |
Messages dropped by the sender. |
|
Gauge, percent |
Sender drop rate. |
|
Cumulative count |
Detected partitions subsequently merged. |
Authentication
| Metric | Type | Labels | Meaning |
|---|---|---|---|
|
Counter |
|
Password validations. Outcomes are |
|
Counter |
|
Authentication events when user-event metrics are enabled, including login, logout, registration, and token refresh. |
Additional connection measurements
| Metric group | Labels | Meaning |
|---|---|---|
|
|
Open TCP connections and their elapsed lifetimes. |
|
|
TCP traffic observations and byte totals. |
|
|
TCP transport errors. |
|
|
UDP traffic observations, byte totals, and transport errors. |
|
|
Queue delay and processing time for a named client. |
|
|
Client queue size, active work, completed work, and resets. |
A named client’s metric prefix identifies that client. Byte-summary _count samples count traffic observations; use HTTP request timers to count requests.