Metrics
Traefik provides metrics in the OpenTelemetry format as well as the following vendor specific backends:
Traefik Proxy hosts an official Grafana dashboard for both on-premises and Kubernetes deployments.
Common Options
addInternals
Optional, Default=”false”
Enables metrics for internal resources (e.g.: ping@internals
).
File (YAML)
metrics:
addInternals: true
File (TOML)
[metrics]
addInternals = true
CLI
--metrics.addinternals
Global Metrics
Metric | Type | Labels | Description |
---|---|---|---|
Config reload total | Count | The total count of configuration reloads. | |
Config reload last success | Gauge | The timestamp of the last configuration reload success. | |
Open connections | Gauge | entrypoint , protocol | The current count of open connections, by entrypoint and protocol. |
TLS certificates not after | Gauge | The expiration date of certificates. |
OpenTelemetry
traefik_config_reloads_total
traefik_config_last_reload_success
traefik_open_connections
traefik_tls_certs_not_after
Prometheus
traefik_config_reloads_total
traefik_config_last_reload_success
traefik_open_connections
traefik_tls_certs_not_after
Datadog
config.reload.total
config.reload.lastSuccessTimestamp
open.connections
tls.certs.notAfterTimestamp
InfluxDB2
traefik.config.reload.total
traefik.config.reload.lastSuccessTimestamp
traefik.open.connections
traefik.tls.certs.notAfterTimestamp
StatsD
# Default prefix: "traefik"
{prefix}.config.reload.total
{prefix}.config.reload.lastSuccessTimestamp
{prefix}.open.connections
{prefix}.tls.certs.notAfterTimestamp
Labels
Here is a comprehensive list of labels that are provided by the global metrics:
Label | Description | example |
---|---|---|
entrypoint | Entrypoint that handled the connection | “example_entrypoint” |
protocol | Connection protocol | “TCP” |
OpenTelemetry Semantic Conventions
Traefik Proxy follows official OpenTelemetry semantic conventions v1.23.1.
HTTP Server
Metric | Type | Labels | Description |
---|---|---|---|
http.server.request.duration | Histogram | error.type , http.request.method , http.response.status_code , network.protocol.name , server.address , server.port , url.scheme | Duration of HTTP server requests |
Labels
Here is a comprehensive list of labels that are provided by the metrics:
Label | Description | example |
---|---|---|
error.type | Describes a class of error the operation ended with | “500” |
http.request.method | HTTP request method | “GET” |
http.response.status_code | HTTP response status code | “200” |
network.protocol.name | OSI application layer or non-OSI equivalent | “http/1.1” |
network.protocol.version | Version of the protocol specified in network.protocol.name | “1.1” |
server.address | Name of the local HTTP server that received the request | “example.com” |
server.port | Port of the local HTTP server that received the request | “80” |
url.scheme | The URI scheme component identifying the used protocol | “http” |
HTTP Client
Metric | Type | Labels | Description |
---|---|---|---|
http.client.request.duration | Histogram | error.type , http.request.method , http.response.status_code , network.protocol.name , server.address , server.port , url.scheme | Duration of HTTP client requests |
Labels
Here is a comprehensive list of labels that are provided by the metrics:
Label | Description | example |
---|---|---|
error.type | Describes a class of error the operation ended with | “500” |
http.request.method | HTTP request method | “GET” |
http.response.status_code | HTTP response status code | “200” |
network.protocol.name | OSI application layer or non-OSI equivalent | “http/1.1” |
network.protocol.version | Version of the protocol specified in network.protocol.name | “1.1” |
server.address | Name of the local HTTP server that received the request | “example.com” |
server.port | Port of the local HTTP server that received the request | “80” |
url.scheme | The URI scheme component identifying the used protocol | “http” |
HTTP Metrics
On top of the official OpenTelemetry semantic conventions, Traefik provides its own metrics to monitor the incoming traffic.
EntryPoint Metrics
Metric | Type | Labels | Description |
---|---|---|---|
Requests total | Count | code , method , protocol , entrypoint | The total count of HTTP requests received by an entrypoint. |
Requests TLS total | Count | tls_version , tls_cipher , entrypoint | The total count of HTTPS requests received by an entrypoint. |
Request duration | Histogram | code , method , protocol , entrypoint | Request processing duration histogram on an entrypoint. |
Requests bytes total | Count | code , method , protocol , entrypoint | The total size of HTTP requests in bytes handled by an entrypoint. |
Responses bytes total | Count | code , method , protocol , entrypoint | The total size of HTTP responses in bytes handled by an entrypoint. |
OpenTelemetry
traefik_entrypoint_requests_total
traefik_entrypoint_requests_tls_total
traefik_entrypoint_request_duration_seconds
traefik_entrypoint_requests_bytes_total
traefik_entrypoint_responses_bytes_total
Prometheus
traefik_entrypoint_requests_total
traefik_entrypoint_requests_tls_total
traefik_entrypoint_request_duration_seconds
traefik_entrypoint_requests_bytes_total
traefik_entrypoint_responses_bytes_total
Datadog
entrypoint.request.total
entrypoint.request.tls.total
entrypoint.request.duration
entrypoint.requests.bytes.total
entrypoint.responses.bytes.total
InfluxDB2
traefik.entrypoint.requests.total
traefik.entrypoint.requests.tls.total
traefik.entrypoint.request.duration
traefik.entrypoint.requests.bytes.total
traefik.entrypoint.responses.bytes.total
StatsD
# Default prefix: "traefik"
{prefix}.entrypoint.request.total
{prefix}.entrypoint.request.tls.total
{prefix}.entrypoint.request.duration
{prefix}.entrypoint.requests.bytes.total
{prefix}.entrypoint.responses.bytes.total
Router Metrics
Metric | Type | Labels | Description |
---|---|---|---|
Requests total | Count | code , method , protocol , router , service | The total count of HTTP requests handled by a router. |
Requests TLS total | Count | tls_version , tls_cipher , router , service | The total count of HTTPS requests handled by a router. |
Request duration | Histogram | code , method , protocol , router , service | Request processing duration histogram on a router. |
Requests bytes total | Count | code , method , protocol , router , service | The total size of HTTP requests in bytes handled by a router. |
Responses bytes total | Count | code , method , protocol , router , service | The total size of HTTP responses in bytes handled by a router. |
OpenTelemetry
traefik_router_requests_total
traefik_router_requests_tls_total
traefik_router_request_duration_seconds
traefik_router_requests_bytes_total
traefik_router_responses_bytes_total
Prometheus
traefik_router_requests_total
traefik_router_requests_tls_total
traefik_router_request_duration_seconds
traefik_router_requests_bytes_total
traefik_router_responses_bytes_total
Datadog
router.request.total
router.request.tls.total
router.request.duration
router.requests.bytes.total
router.responses.bytes.total
InfluxDB2
traefik.router.requests.total
traefik.router.requests.tls.total
traefik.router.request.duration
traefik.router.requests.bytes.total
traefik.router.responses.bytes.total
StatsD
# Default prefix: "traefik"
{prefix}.router.request.total
{prefix}.router.request.tls.total
{prefix}.router.request.duration
{prefix}.router.requests.bytes.total
{prefix}.router.responses.bytes.total
Service Metrics
Metric | Type | Labels | Description |
---|---|---|---|
Requests total | Count | code , method , protocol , service | The total count of HTTP requests processed on a service. |
Requests TLS total | Count | tls_version , tls_cipher , service | The total count of HTTPS requests processed on a service. |
Request duration | Histogram | code , method , protocol , service | Request processing duration histogram on a service. |
Retries total | Count | service | The count of requests retries on a service. |
Server UP | Gauge | service , url | Current service’s server status, 0 for a down or 1 for up. |
Requests bytes total | Count | code , method , protocol , service | The total size of requests in bytes received by a service. |
Responses bytes total | Count | code , method , protocol , service | The total size of responses in bytes returned by a service. |
OpenTelemetry
traefik_service_requests_total
traefik_service_requests_tls_total
traefik_service_request_duration_seconds
traefik_service_retries_total
traefik_service_server_up
traefik_service_requests_bytes_total
traefik_service_responses_bytes_total
Prometheus
traefik_service_requests_total
traefik_service_requests_tls_total
traefik_service_request_duration_seconds
traefik_service_retries_total
traefik_service_server_up
traefik_service_requests_bytes_total
traefik_service_responses_bytes_total
Datadog
service.request.total
router.service.tls.total
service.request.duration
service.retries.total
service.server.up
service.requests.bytes.total
service.responses.bytes.total
InfluxDB2
traefik.service.requests.total
traefik.service.requests.tls.total
traefik.service.request.duration
traefik.service.retries.total
traefik.service.server.up
traefik.service.requests.bytes.total
traefik.service.responses.bytes.total
StatsD
# Default prefix: "traefik"
{prefix}.service.request.total
{prefix}.service.request.tls.total
{prefix}.service.request.duration
{prefix}.service.retries.total
{prefix}.service.server.up
{prefix}.service.requests.bytes.total
{prefix}.service.responses.bytes.total
Labels
Here is a comprehensive list of labels that are provided by the metrics:
Label | Description | example |
---|---|---|
cn | Certificate Common Name | “example.com” |
code | Request code | “200” |
entrypoint | Entrypoint that handled the request | “example_entrypoint” |
method | Request Method | “GET” |
protocol | Request protocol | “http” |
router | Router that handled the request | “example_router” |
sans | Certificate Subject Alternative NameS | “example.com” |
serial | Certificate Serial Number | “123…” |
service | Service that handled the request | “example_service@provider” |
tls_cipher | TLS cipher used for the request | “TLS_FALLBACK_SCSV” |
tls_version | TLS version used for the request | “1.0” |
url | Service server url | “http://example.com“ |
method
label value
If the HTTP method verb on a request is not one defined in the set of common methods for HTTP/1.1 or the PRI verb (for HTTP/2
), then the value for the method label becomes EXTENSION_METHOD
.