| 
									
										
										
										
											2016-04-03 09:15:55 +01:00
										 |  |  | # prometheus
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-15 22:27:55 +01:00
										 |  |  | *prometheus* enables [Prometheus](https://prometheus.io/) metrics for CoreDNS. | 
					
						
							| 
									
										
										
										
											2016-04-03 09:15:55 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-24 08:24:53 -07:00
										 |  |  | The default location for the metrics is `localhost:9153`. The metrics path is fixed to `/metrics`. | 
					
						
							| 
									
										
										
										
											2016-04-03 09:15:55 +01:00
										 |  |  | The following metrics are exported: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-10 09:39:35 +02:00
										 |  |  | * `coredns_dns_request_count_total{zone, proto, family}` - total query count. | 
					
						
							|  |  |  | * `coredns_dns_request_duration_milliseconds{zone}` - duration to process each query. | 
					
						
							|  |  |  | * `coredns_dns_request_size_bytes{zone, proto}` - size of the request in bytes. | 
					
						
							|  |  |  | * `coredns_dns_request_do_count_total{zone}` -  queries that have the DO bit set | 
					
						
							|  |  |  | * `coredns_dns_request_type_count_total{zone, type}` - counter of queries per zone and type. | 
					
						
							|  |  |  | * `coredns_dns_response_size_bytes{zone, proto}` - response size in bytes. | 
					
						
							|  |  |  | * `coredns_dns_response_rcode_count_total{zone, rcode}` - response per zone and rcode. | 
					
						
							| 
									
										
										
										
											2016-07-04 06:08:45 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | Each counter has a label `zone` which is the zonename used for the request/response. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Extra labels used are: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * `proto` which holds the transport of the response ("udp" or "tcp") | 
					
						
							|  |  |  | * The address family (`family`) of the transport (1 = IP (IP version 4), 2 = IP6 (IP version 6)). | 
					
						
							| 
									
										
										
										
											2016-08-22 14:29:50 -07:00
										 |  |  | * `type` which holds the query type. It holds most common types (A, AAAA, MX, SOA, CNAME, PTR, TXT, | 
					
						
							| 
									
										
										
										
											2016-07-04 06:08:45 -04:00
										 |  |  |   NS, SRV, DS, DNSKEY, RRSIG, NSEC, NSEC3, IXFR, AXFR and ANY) and "other" which lumps together all | 
					
						
							|  |  |  |   other types. | 
					
						
							|  |  |  | * The `response_rcode_count_total` has an extra label `rcode` which holds the rcode of the response. | 
					
						
							| 
									
										
										
										
											2016-04-03 09:15:55 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-14 09:36:06 +01:00
										 |  |  | If monitoring is enabled, queries that do not enter the plugin chain are exported under the fake | 
					
						
							| 
									
										
										
										
											2016-10-26 10:01:52 +01:00
										 |  |  | name "dropped" (without a closing dot - this is never a valid domain name). | 
					
						
							| 
									
										
										
										
											2016-04-03 09:15:55 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | ## Syntax
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ~~~ | 
					
						
							| 
									
										
										
										
											2016-10-10 20:13:22 +01:00
										 |  |  | prometheus [ADDRESS] | 
					
						
							| 
									
										
										
										
											2016-04-03 09:15:55 +01:00
										 |  |  | ~~~ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | For each zone that you want to see metrics for. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-22 14:29:50 -07:00
										 |  |  | It optionally takes an address to which the metrics are exported; the default | 
					
						
							| 
									
										
										
										
											2016-04-28 10:44:47 +00:00
										 |  |  | is `localhost:9153`. The metrics path is fixed to `/metrics`. | 
					
						
							| 
									
										
										
										
											2016-04-03 09:15:55 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | ## Examples
 | 
					
						
							| 
									
										
										
										
											2016-10-26 10:01:52 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | Use an alternative address: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-15 09:56:05 +01:00
										 |  |  | ~~~ corefile | 
					
						
							|  |  |  | . { | 
					
						
							|  |  |  |     prometheus localhost:9253 | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2016-10-26 10:01:52 +01:00
										 |  |  | ~~~ | 
					
						
							| 
									
										
										
										
											2017-02-21 19:34:40 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-18 17:20:27 +01:00
										 |  |  | Or via an enviroment variable (this is supported throughout the Corefile): `export PORT=9253`, and | 
					
						
							|  |  |  | then: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ~~~ corefile | 
					
						
							|  |  |  | . { | 
					
						
							|  |  |  |     prometheus localhost:{$PORT} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ~~~ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-21 19:34:40 +00:00
										 |  |  | # Bugs
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-12 10:10:57 +00:00
										 |  |  | When reloading, we keep the handler running, meaning that any changes to the handler's address | 
					
						
							|  |  |  | aren't picked up. You'll need to restart CoreDNS for that to happen. |