mirror of
				https://github.com/traefik/traefik.git
				synced 2025-11-04 02:11:15 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			239 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			239 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
---
 | 
						|
title: "Traefik Prometheus Documentation"
 | 
						|
description: "Traefik supports several metrics backends, including Prometheus. Learn how to implement it for observability in Traefik Proxy. Read the technical documentation."
 | 
						|
---
 | 
						|
 | 
						|
# Prometheus
 | 
						|
 | 
						|
To enable the Prometheus:
 | 
						|
 | 
						|
```yaml tab="File (YAML)"
 | 
						|
metrics:
 | 
						|
  prometheus: {}
 | 
						|
```
 | 
						|
 | 
						|
```toml tab="File (TOML)"
 | 
						|
[metrics]
 | 
						|
  [metrics.prometheus]
 | 
						|
```
 | 
						|
 | 
						|
```bash tab="CLI"
 | 
						|
--metrics.prometheus=true
 | 
						|
```
 | 
						|
 | 
						|
#### `buckets`
 | 
						|
 | 
						|
_Optional, Default="0.100000, 0.300000, 1.200000, 5.000000"_
 | 
						|
 | 
						|
Buckets for latency metrics.
 | 
						|
 | 
						|
```yaml tab="File (YAML)"
 | 
						|
metrics:
 | 
						|
  prometheus:
 | 
						|
    buckets:
 | 
						|
      - 0.1
 | 
						|
      - 0.3
 | 
						|
      - 1.2
 | 
						|
      - 5.0
 | 
						|
```
 | 
						|
 | 
						|
```toml tab="File (TOML)"
 | 
						|
[metrics]
 | 
						|
  [metrics.prometheus]
 | 
						|
    buckets = [0.1,0.3,1.2,5.0]
 | 
						|
```
 | 
						|
 | 
						|
```bash tab="CLI"
 | 
						|
--metrics.prometheus.buckets=0.1,0.3,1.2,5.0
 | 
						|
```
 | 
						|
 | 
						|
#### `addEntryPointsLabels`
 | 
						|
 | 
						|
_Optional, Default=true_
 | 
						|
 | 
						|
Enable metrics on entry points.
 | 
						|
 | 
						|
```yaml tab="File (YAML)"
 | 
						|
metrics:
 | 
						|
  prometheus:
 | 
						|
    addEntryPointsLabels: true
 | 
						|
```
 | 
						|
 | 
						|
```toml tab="File (TOML)"
 | 
						|
[metrics]
 | 
						|
  [metrics.prometheus]
 | 
						|
    addEntryPointsLabels = true
 | 
						|
```
 | 
						|
 | 
						|
```bash tab="CLI"
 | 
						|
--metrics.prometheus.addEntryPointsLabels=true
 | 
						|
```
 | 
						|
 | 
						|
#### `addRoutersLabels`
 | 
						|
 | 
						|
_Optional, Default=false_
 | 
						|
 | 
						|
Enable metrics on routers.
 | 
						|
 | 
						|
```yaml tab="File (YAML)"
 | 
						|
metrics:
 | 
						|
  prometheus:
 | 
						|
    addRoutersLabels: true
 | 
						|
```
 | 
						|
 | 
						|
```toml tab="File (TOML)"
 | 
						|
[metrics]
 | 
						|
  [metrics.prometheus]
 | 
						|
    addRoutersLabels = true
 | 
						|
```
 | 
						|
 | 
						|
```bash tab="CLI"
 | 
						|
--metrics.prometheus.addrouterslabels=true
 | 
						|
```
 | 
						|
 | 
						|
#### `addServicesLabels`
 | 
						|
 | 
						|
_Optional, Default=true_
 | 
						|
 | 
						|
Enable metrics on services.
 | 
						|
 | 
						|
```yaml tab="File (YAML)"
 | 
						|
metrics:
 | 
						|
  prometheus:
 | 
						|
    addServicesLabels: true
 | 
						|
```
 | 
						|
 | 
						|
```toml tab="File (TOML)"
 | 
						|
[metrics]
 | 
						|
  [metrics.prometheus]
 | 
						|
    addServicesLabels = true
 | 
						|
```
 | 
						|
 | 
						|
```bash tab="CLI"
 | 
						|
--metrics.prometheus.addServicesLabels=true
 | 
						|
```
 | 
						|
 | 
						|
#### `entryPoint`
 | 
						|
 | 
						|
_Optional, Default=traefik_
 | 
						|
 | 
						|
Entry point used to expose metrics.
 | 
						|
 | 
						|
```yaml tab="File (YAML)"
 | 
						|
entryPoints:
 | 
						|
  metrics:
 | 
						|
    address: :8082
 | 
						|
 | 
						|
metrics:
 | 
						|
  prometheus:
 | 
						|
    entryPoint: metrics
 | 
						|
```
 | 
						|
 | 
						|
```toml tab="File (TOML)"
 | 
						|
[entryPoints]
 | 
						|
  [entryPoints.metrics]
 | 
						|
    address = ":8082"
 | 
						|
 | 
						|
[metrics]
 | 
						|
  [metrics.prometheus]
 | 
						|
    entryPoint = "metrics"
 | 
						|
```
 | 
						|
 | 
						|
```bash tab="CLI"
 | 
						|
--entryPoints.metrics.address=:8082
 | 
						|
--metrics.prometheus.entryPoint=metrics
 | 
						|
```
 | 
						|
 | 
						|
#### `manualRouting`
 | 
						|
 | 
						|
_Optional, Default=false_
 | 
						|
 | 
						|
If `manualRouting` is `true`, it disables the default internal router in order to allow one to create a custom router for the `prometheus@internal` service.
 | 
						|
 | 
						|
```yaml tab="File (YAML)"
 | 
						|
metrics:
 | 
						|
  prometheus:
 | 
						|
    manualRouting: true
 | 
						|
```
 | 
						|
 | 
						|
```toml tab="File (TOML)"
 | 
						|
[metrics]
 | 
						|
  [metrics.prometheus]
 | 
						|
    manualRouting = true
 | 
						|
```
 | 
						|
 | 
						|
```bash tab="CLI"
 | 
						|
--metrics.prometheus.manualrouting=true
 | 
						|
```
 | 
						|
 | 
						|
#### `headerLabels`
 | 
						|
 | 
						|
_Optional_
 | 
						|
 | 
						|
Defines the extra labels for the `requests_total` metrics, and for each of them, the request header containing the value for this label.
 | 
						|
Please note that if the header is not present in the request it will be added nonetheless with an empty value.
 | 
						|
In addition, the label should be a valid label name for Prometheus metrics, 
 | 
						|
otherwise, the Prometheus metrics provider will fail to serve any Traefik-related metric.
 | 
						|
 | 
						|
```yaml tab="File (YAML)"
 | 
						|
metrics:
 | 
						|
  prometheus:
 | 
						|
    headerLabels:
 | 
						|
      label: headerKey
 | 
						|
```
 | 
						|
 | 
						|
```toml tab="File (TOML)"
 | 
						|
[metrics]
 | 
						|
  [metrics.prometheus]
 | 
						|
    [metrics.prometheus.headerLabels]
 | 
						|
      label = "headerKey"
 | 
						|
```
 | 
						|
 | 
						|
```bash tab="CLI"
 | 
						|
--metrics.prometheus.headerlabels.label=headerKey
 | 
						|
```
 | 
						|
 | 
						|
##### Example
 | 
						|
 | 
						|
Here is an example of the entryPoint `requests_total` metric with an additional "useragent" label.
 | 
						|
 | 
						|
When configuring the label in Static Configuration:
 | 
						|
 | 
						|
```yaml tab="File (YAML)"
 | 
						|
metrics:
 | 
						|
  prometheus:
 | 
						|
    headerLabels:
 | 
						|
      useragent: User-Agent
 | 
						|
```
 | 
						|
 | 
						|
```toml tab="File (TOML)"
 | 
						|
[metrics]
 | 
						|
  [metrics.prometheus]
 | 
						|
    [metrics.prometheus.headerLabels]
 | 
						|
      useragent = "User-Agent"
 | 
						|
```
 | 
						|
 | 
						|
```bash tab="CLI"
 | 
						|
--metrics.prometheus.headerlabels.useragent=User-Agent
 | 
						|
```
 | 
						|
 | 
						|
And performing a request with a custom User-Agent:
 | 
						|
 | 
						|
```bash
 | 
						|
curl -H "User-Agent: foobar" http://localhost
 | 
						|
```
 | 
						|
 | 
						|
The following metric is produced :
 | 
						|
 | 
						|
```bash
 | 
						|
traefik_entrypoint_requests_total{code="200",entrypoint="web",method="GET",protocol="http",useragent="foobar"} 1
 | 
						|
```
 | 
						|
 | 
						|
!!! info "`Host` header value"
 | 
						|
 | 
						|
    The `Host` header is never present in the Header map of a request, as per go documentation says:
 | 
						|
    // For incoming requests, the Host header is promoted to the
 | 
						|
    // Request.Host field and removed from the Header map.
 | 
						|
 | 
						|
    As a workaround, to obtain the Host of a request as a label, one should use instead the `X-Forwarded-Host` header.
 |