| 
									
										
										
										
											2016-04-06 09:21:46 +01:00
										 |  |  | # health
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-04 12:53:07 +00:00
										 |  |  | ## Name
 | 
					
						
							| 
									
										
										
										
											2017-10-20 09:47:43 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-04 12:53:07 +00:00
										 |  |  | *health* - enables a health check endpoint. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## Description
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-04 21:06:04 +01:00
										 |  |  | Enabled process wide health endpoint. When CoreDNS is up and running this returns a 200 OK HTTP | 
					
						
							| 
									
										
										
										
											2019-12-29 13:35:17 +01:00
										 |  |  | status code. The health is exported, by default, on port 8080/health. | 
					
						
							| 
									
										
										
										
											2016-04-06 09:21:46 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | ## Syntax
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ~~~ | 
					
						
							| 
									
										
										
										
											2016-10-10 20:13:22 +01:00
										 |  |  | health [ADDRESS] | 
					
						
							| 
									
										
										
										
											2016-04-06 09:21:46 +01:00
										 |  |  | ~~~ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-27 21:33:38 +01:00
										 |  |  | Optionally takes an address; the default is `:8080`. The health path is fixed to `/health`. The | 
					
						
							| 
									
										
										
										
											2019-03-07 22:13:47 +00:00
										 |  |  | health endpoint returns a 200 response code and the word "OK" when this server is healthy. | 
					
						
							| 
									
										
										
										
											2016-04-06 09:21:46 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-03-07 22:13:47 +00:00
										 |  |  | An extra option can be set with this extended syntax: | 
					
						
							| 
									
										
										
										
											2018-01-18 10:40:09 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | ~~~ | 
					
						
							|  |  |  | health [ADDRESS] { | 
					
						
							|  |  |  |     lameduck DURATION | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ~~~ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-01 11:03:34 -04:00
										 |  |  | * Where `lameduck` will delay shutdown for **DURATION**. /health will still answer 200 OK. | 
					
						
							| 
									
										
										
										
											2021-03-19 11:40:38 +01:00
										 |  |  |   Note: The *ready* plugin will not answer OK while CoreDNS is in lame duck mode prior to shutdown. | 
					
						
							| 
									
										
										
										
											2018-01-18 10:40:09 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-18 17:21:02 +01:00
										 |  |  | If you have multiple Server Blocks, *health* can only be enabled in one of them (as it is process | 
					
						
							| 
									
										
										
										
											2019-03-07 22:13:47 +00:00
										 |  |  | wide). If you really need multiple endpoints, you must run health endpoints on different ports: | 
					
						
							| 
									
										
										
										
											2018-03-02 21:40:14 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | ~~~ corefile | 
					
						
							|  |  |  | com { | 
					
						
							|  |  |  |     whoami | 
					
						
							|  |  |  |     health :8080 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | net { | 
					
						
							|  |  |  |     erratic | 
					
						
							|  |  |  |     health :8081 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ~~~ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-21 16:08:55 -04:00
										 |  |  | Doing this is supported but both endpoints ":8080" and ":8081" will export the exact same health. | 
					
						
							| 
									
										
										
										
											2019-04-18 17:21:02 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-10 11:41:22 +00:00
										 |  |  | ## Metrics
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-06-17 15:49:53 -04:00
										 |  |  | If monitoring is enabled (via the *prometheus* plugin) then the following metrics are exported: | 
					
						
							| 
									
										
										
										
											2018-01-10 11:41:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-06-17 15:49:53 -04:00
										 |  |  |  * `coredns_health_request_duration_seconds{}` - The *health* plugin performs a self health check | 
					
						
							|  |  |  |     once per second on the `/health` endpoint. This metric is the duration to process that request. | 
					
						
							|  |  |  |     As this is a local operation it should be fast. A (large) increase in this | 
					
						
							| 
									
										
										
										
											2019-04-18 17:21:02 +01:00
										 |  |  |     duration indicates the CoreDNS process is having trouble keeping up with its query load. | 
					
						
							| 
									
										
										
										
											2022-06-17 15:49:53 -04:00
										 |  |  |  * `coredns_health_request_failures_total{}` - The number of times the self health check failed. | 
					
						
							| 
									
										
										
										
											2018-01-10 11:41:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-27 15:16:38 +02:00
										 |  |  | Note that these metrics *do not* have a `server` label, because being overloaded is a symptom of | 
					
						
							| 
									
										
										
										
											2018-04-20 15:03:59 +01:00
										 |  |  | the running process, *not* a specific server. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-06 09:21:46 +01:00
										 |  |  | ## Examples
 | 
					
						
							| 
									
										
										
										
											2016-04-28 10:26:58 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-27 21:33:38 +01:00
										 |  |  | Run another health endpoint on http://localhost:8091. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-10 09:39:35 +02:00
										 |  |  | ~~~ corefile | 
					
						
							|  |  |  | . { | 
					
						
							|  |  |  |     health localhost:8091 | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2016-04-28 10:26:58 +01:00
										 |  |  | ~~~ | 
					
						
							| 
									
										
										
										
											2018-01-18 10:40:09 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-19 11:40:38 +01:00
										 |  |  | Set a lame duck duration of 1 second: | 
					
						
							| 
									
										
										
										
											2018-01-18 10:40:09 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | ~~~ corefile | 
					
						
							|  |  |  | . { | 
					
						
							| 
									
										
										
										
											2018-03-02 21:40:14 -08:00
										 |  |  |     health localhost:8092 { | 
					
						
							| 
									
										
										
										
											2018-01-18 10:40:09 +00:00
										 |  |  |         lameduck 1s | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ~~~ |