| 
									
										
										
										
											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
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-01 18:32:15 -08:00
										 |  |  | By enabling *health* any plugin that implements | 
					
						
							|  |  |  | [healt.Healther interface](https://godoc.org/github.com/coredns/coredns/plugin/health#Healther) | 
					
						
							| 
									
										
										
										
											2018-03-02 21:40:14 -08:00
										 |  |  | will be queried for it's health. The combined 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 | 
					
						
							|  |  |  | health endpoint returns a 200 response code and the word "OK" when CoreDNS is healthy. It returns | 
					
						
							| 
									
										
										
										
											2017-09-14 09:36:06 +01:00
										 |  |  | a 503. *health* periodically (1s) polls plugin that exports health information. If any of the | 
					
						
							| 
									
										
										
										
											2018-03-02 21:40:14 -08:00
										 |  |  | plugin signals that it is unhealthy, the server will go unhealthy too. Each plugin that supports | 
					
						
							|  |  |  | health checks has a section "Health" in their README. | 
					
						
							| 
									
										
										
										
											2016-04-06 09:21:46 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-18 10:40:09 +00:00
										 |  |  | More options can be set with this extended syntax: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ~~~ | 
					
						
							|  |  |  | health [ADDRESS] { | 
					
						
							|  |  |  |     lameduck DURATION | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ~~~ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * Where `lameduck` will make the process unhealthy then *wait* for **DURATION** before the process | 
					
						
							|  |  |  |   shuts down. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-02 21:40:14 -08:00
										 |  |  | If you have multiple Server Block and need to export health for each of the plugins, you must run | 
					
						
							|  |  |  | health endpoints on different ports: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ~~~ corefile | 
					
						
							|  |  |  | com { | 
					
						
							|  |  |  |     whoami | 
					
						
							|  |  |  |     health :8080 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | net { | 
					
						
							|  |  |  |     erratic | 
					
						
							|  |  |  |     health :8081 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ~~~ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-13 09:52:40 +00:00
										 |  |  | ## Plugins
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-12 15:40:30 -05:00
										 |  |  | Any plugin that implements the Healther interface will be used to report health. | 
					
						
							| 
									
										
										
										
											2017-11-13 09:52:40 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-10 11:41:22 +00:00
										 |  |  | ## Metrics
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If monitoring is enabled (via the *prometheus* directive) then the following metric is exported: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * `coredns_health_request_duration_seconds{}` - duration to process a /health query. As this should | 
					
						
							|  |  |  |   be a local operation it should be fast. A (large) increases in this duration indicates the | 
					
						
							| 
									
										
										
										
											2018-03-01 18:32:15 -08:00
										 |  |  |   CoreDNS process is having trouble keeping up with its query load. | 
					
						
							| 
									
										
										
										
											2018-01-10 11:41:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											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
										 |  |  | 
 | 
					
						
							|  |  |  | Set a lameduck duration of 1 second: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ~~~ corefile | 
					
						
							|  |  |  | . { | 
					
						
							| 
									
										
										
										
											2018-03-02 21:40:14 -08:00
										 |  |  |     health localhost:8092 { | 
					
						
							| 
									
										
										
										
											2018-01-18 10:40:09 +00:00
										 |  |  |         lameduck 1s | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ~~~ |