UAA performance metrics

Page last updated:

Cloud Foundry User Accounts and Authentication (UAA) emits metrics constantly. These metrics help you to understand performance, troubleshoot problems, and assess the health of your installation in real time. These metrics are emitted through Loggregator.

This topic describes various metrics that UAA, virtual machines (VMs), and Java Virtual Machines (JVMs) emit.

About UAA performance

The following tables explain different types of UAA and UAA-related metrics you can view. There are three different types of metrics discussed in these tables:

Each table contains:

  • Name: The name of the metric.
  • Type: How the metric is displayed. For example, counters, gauges, or timers.
  • Description: An explanation of what values this metric displays.
  • Example: A code sample of this metric’s output.
  • Indicator: What changes in the metric’s value may indicate over time.
  • Status: Whether a metric is active or static. Active metrics may change between metrics emissions. Static metrics are fixed and do not change.

If consuming UAA metrics through the Firehose, incremental metrics, or metrics that capture an increment or decrement in a value because UAA’s last emission, are expressed as cumulative values. For more information, see the statsd-injector repository on GitHub.

Global performance metrics

The following table describes metrics that UAA emits:

Name Type Description Example Indicator Status
requests.global.completed.count Counter Number of HTTP requests the server has processed since last metric emission. This metric includes all requests sent to the server, including health checks. uaa.requests.global.completed.count:1|c Use this metric to calculate request load and throughput. Active
requests.global.completed.time Gauge Average time in milliseconds spent per HTTP request. This metric is calculated as an average across all completed requests, including health checks. uaa.requests.global.completed.time:60|g A rise may indicate problems with server or database. Active
server.inflight.count Gauge Number of requests the server is currently processing, also called in-flight requests. uaa.server.inflight.count:1|g If this number climbs continuously, it can indicate that servers are getting saturated and are unable to handle the incoming load. Active
requests.global.unhealthy.count Counter in UAA v4.8 and earlier; gauge in UAA v4.9.0 and later Number of completed requests that exceeded the tolerable response time since last metric emission. Each URL group can have a different tolerable completion time, which is preconfigured in each UAA release. These values are currently not configurable. uaa.requests.global.unhealthy.count:1|c If the number of requests not meeting tolerable completion time is growing, than either the tolerable request time must be configured to account for false negatives, or the server does not have enough capacity to handle the request load. The cause for this can be a need for an increase in server or database resources. In order to make a scaling decision, you need further metrics. Active
requests.global.unhealthy.time Gauge Average time in milliseconds per completed HTTP request that did not finish within the set tolerable time since startup. uaa.requests.global.unhealthy.time:250|g It can be useful to compare this metric to uaa.requests.global.completed.time. Active
requests.global.status_4xx.count Counter Number of HTTP requests that have returned 400 codes, or client errors, since UAA’s last metrics emission. These do not indicate server errors. A 400 code may indicate an invalid request to the server. uaa.requests.global.status_4xx.count:1|c This metric gives the client the ability to calculate error rates. It is often used to detect faulty apps that may be causing unnecessary processing on the server. Active
requests.global.status_5xx.count Counter Number of HTTP requests that have returned 500 codes, or server errors, since UAA’s last metrics emission. uaa.requests.global.status_5xx.count:1|c This metric gives the client the ability calculate error rates and determine if further investigation is needed. Active
server.up.time Timer Number of milliseconds that have elapsed since this server instance started. uaa.server.up.time:42346751|g This metric indicates the time since last startup. Active
server.idle.time Timer Number of milliseconds that the server has spent in an idle state, when no requests were being processed. This allows a client to calculate the amount of actual, rather than cumulative, time the server has spent processing requests with up.time-idle.time. uaa.server.idle.time:2346751|g This metric allows the client to calculate when the server is receiving load time. Active
database.global.completed.count Counter Number of database queries the server has processed since UAA’s last metrics emission. uaa.database.global.completed.count:1|c Use this metric to track the number of queries that have reached and been processed by the server over a period of time. Active
database.global.completed.time Gauge Average amount of time in milliseconds per database query. uaa.database.global.completed.time:248|g Use this metric to track the time to complete a database query on average. Active
database.global.unhealthy.count Counter Number of database queries that failed or did not meet the tolerated response time since UAA’s last metrics emission. The response time is not configurable during runtime. By default, it is set to three seconds. uaa.database.global.unhealthy.count:1|c Use this metric to monitor database query success and failure over time. Active
database.global.unhealthy.time Timer Average amount of time in milliseconds per database query that was not within the tolerated response time. uaa.database.global.unhealthy.time:4678623|g Use this metric to monitor database response time. Active

About UAA vital statistics

These sections describe metrics that the UAA VM and JVM emit.

Virtual Machine vital statistics

The following table describes metrics that the UAA VM emits:

Name Type Description Example Indicator Status
vitals.vm.cpu.count Gauge How many CPUs are on this VM as reported by the JVM. This metric is useful when you want to read system load average. The number reported by load average must be correlated to the number of CPUs. uaa.vitals.vm.cpu.count:4|g This metric is required for a proper CPU load calculation. Active
vitals.vm.cpu.load Gauge Average system CPU load as reported by the JVM. The value is reported as a whole number multiplied by .01. For example, a value of 163 is read as 1.63. uaa.vitals.vm.cpu.load:50|g If the value of `(cpu.load / 100.0 / cpu count) is more than 2.0, this indicates that the system may be overloaded and processing data slowly. Active
vitals.vm.memory.total Gauge Total OS memory, in bytes, as reported by the JVM. uaa.vitals.vm.memory.total:1073741824|g Use this metric in conjunction with other performance metrics to assess system health. Active
vitals.vm.memory.committed Gauge OS memory, in bytes, committed to UAA processes, as reported by the JVM. uaa.vitals.vm.memory.committed:1073741824|g Use this metric in conjunction with other performance metrics to assess system health. Active
vitals.vm.memory.free Gauge Free OS memory, in bytes, as reported by the JVM. uaa.vitals.vm.memory.free:1073741824|g Use this metric in conjunction with other performance metrics to assess system health. Active

Java Virtual Machine vital statistics

The following table describes metrics that the UAA JVM emits:

Name Type Description Example Indicator Status
vitals.jvm.cpu.load Gauge UAA process CPU load average as reported by the JVM. This value is multiplied by 100 and reported as a whole number representing the CPU load on the VM incurred by the UAA process, excluding any other processes on the VM. uaa.vitals.jvm.cpu.load:25|g Health and scaling. If CPU load is showing as high, this metric can be used to confirm that it is indeed the UAA using up the CPU and not other jobs on the same VM. Active
vitals.jvm.thread.count Gauge Number of threads running inside the UAA process, as reported by the JVM. uaa.vitals.jvm.thread.count:53|g Use this metric in conjunction with other performance metrics to assess system health. Active
vitals.jvm.heap.init Gauge Minimum amount of OS memory, in bytes, requested by the UAA JVM process to be used as part of the Java heap memory, as reported by the JVM. uaa.vitals.jvm.heap.init:1073741824|g Use this metric in conjunction with other performance metrics to assess system health. Static
vitals.jvm.heap.committed Gauge Guaranteed amount of Java heap memory, in bytes, committed to the UAA JVM process, as reported by the JVM. uaa.vitals.jvm.heap.committed:1073741824|g Use this metric in conjunction with other performance metrics to assess system health. Active
vitals.jvm.heap.used Gauge Java heap memory, in bytes, currently in use by the UAA process as reported by the JVM. uaa.vitals.jvm.heap.used:1073741824|g Use this metric in conjunction with other performance metrics to assess system health. Static
vitals.jvm.heap.max Gauge Java heap memory, in bytes, that is the upper limit for the UAA processes, as reported by the JVM. uaa.vitals.jvm.heap.max:1073741824|g Use this metric in conjunction with other performance metrics to assess system health. Static
vitals.jvm.non-heap.init Gauge Minimum non-Java memory, in bytes, acquired by the UAA process, as reported by the JVM. uaa.vitals.jvm.non-heap.init:1073741824|g Use this metric in conjunction with other performance metrics to assess system health. Active
vitals.jvm.non-heap.committed Gauge Guaranteed non-Java memory, in bytes, committed by the UAA process, as reported by the JVM. uaa.vitals.jvm.non-heap.committed:1073741824|g Use this metric in conjunction with other performance metrics to assess system health. Active
vitals.jvm.non-heap.used Gauge Current non-Java memory, in bytes, that the UAA process can use, as reported by the JVM. uaa.vitals.jvm.non-heap.used:1073741824|g Use this metric in conjunction with other performance metrics to assess system health. Active
vitals.jvm.non-heap.max Gauge Upper limit of non-Java memory, in bytes, that the UAA process can use, as reported by the JVM. uaa.vitals.jvm.non-heap.max:1073741824|g Use this metric in conjunction with other performance metrics to assess system health. Active

For more information about JVM memory, see the Oracle documentation.

Create a pull request or raise an issue on the source for this page in GitHub