# `proxy-server` Metrics

In the table, `<type>` is the proxy-server controller responsible for the request and will be one of `account`, `container`, or `object`.

Metric Name | Description
`proxy-server.errors` | Count of errors encountered while serving requests before the controller type is determined. Includes invalid Content-Length, errors finding the internal controller to handle the request, invalid utf8, and bad URLs.
`proxy-server.<type>.handoff_count` | Count of node hand-offs; only tracked if log_handoffs is set in the proxy-server config.
`proxy-server.<type>.handoff_all_count` | Count of times only hand-off locations were utilized; only tracked if log_handoffs is set in the proxy-server config.
`proxy-server.<type>.client_timeouts` | Count of client timeouts (client did not read within `client_timeout` seconds during a GET or did not supply data within `client_timeout` seconds during a PUT).
`proxy-server.<type>.client_disconnects` | Count of detected client disconnects during PUT operations (does NOT include caught Exceptions in the proxy-server which caused a client disconnect).

Additionally, middleware often emit their own metrics

## `proxy-logging` Middleware

In the table, `<type>` is either the proxy-server controller responsible for the request: `account`, `container`, `object`, or the string `SOS` if the request came from the Swift Origin Server middleware. The `<verb>` portion will be one of `GET`, `HEAD`, `POST`, `PUT`, `DELETE`, `COPY`, `OPTIONS`, or `BAD_METHOD`. The list of valid HTTP methods is configurable via the `log_statsd_valid_http_methods` config variable and the default setting yields the above behavior.

Metric Name | Description
`proxy-server.<type>.<verb>.<status>.timing` | Timing data for requests, start to finish. The <status> portion is the numeric HTTP status code for the request (e.g. “200” or “404”).
`proxy-server.<type>.GET.<status>.first-byte.timing` | Timing data up to completion of sending the response headers (only for GET requests). <status> and <type> are as for the main timing metric.
`proxy-server.<type>.<verb>.<status>.xfer` | This counter metric is the sum of bytes transferred in (from clients) and out (to clients) for requests. The <type>, <verb>, and <status> portions of the metric are just like the main timing metric.

The `proxy-logging` middleware also groups these metrics by policy. The `<policy-index>` portion represents a policy index:

Metric Name | Description
`proxy-server.object.policy.<policy-index>.<verb>.<status>.timing` | Timing data for requests, aggregated by policy index.
`proxy-server.object.policy.<policy-index>.GET.<status>.first-byte.timing` | Timing data up to completion of sending the response headers, aggregated by policy index.
`proxy-server.object.policy.<policy-index>.<verb>.<status>.xfer` | Sum of bytes transferred in and out, aggregated by policy index.

## `tempauth` Middleware

In the table, `<reseller_prefix>` represents the actual configured reseller_prefix or `NONE` if the reseller_prefix is the empty string:

Metric Name | Description
`tempauth.<reseller_prefix>.unauthorized` | Count of regular requests which were denied with HTTPUnauthorized.
`tempauth.<reseller_prefix>.forbidden` | Count of regular requests which were denied with HTTPForbidden.
`tempauth.<reseller_prefix>.token_denied` | Count of token requests which were denied.
`tempauth.<reseller_prefix>.errors` | Count of errors.

## `tempurl` Middleware

Metric Name | Description
`proxy-server.tempurl.digests.<digest>` | Count of requests authorized using the specified `<digest>`; may be one of `sha1`, `sha256`, or `sha512`.

## `formpost` Middleware

Metric Name | Description
`proxy-server.formpost.digests.<digest>` | Count of requests authorized using the specified `<digest>`; may be one of `sha1`, `sha256`, or `sha512`.

this page last updated: 2026-04-08 16:47:21

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.

found an error? report a bug