mirror of
				https://github.com/traefik/traefik.git
				synced 2025-10-31 16:31:16 +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.
 |