github.com/outbrain/consul@v1.4.5/website/source/api/agent/check.html.md (about) 1 --- 2 layout: api 3 page_title: Check - Agent - HTTP API 4 sidebar_current: api-agent-check 5 description: |- 6 The /agent/check endpoints interact with checks on the local agent in Consul. 7 --- 8 9 # Check - Agent HTTP API 10 11 The `/agent/check` endpoints interact with checks on the local agent in Consul. 12 These should not be confused with checks in the catalog. 13 14 ## List Checks 15 16 This endpoint returns all checks that are registered with the local agent. These 17 checks were either provided through configuration files or added dynamically 18 using the HTTP API. 19 20 It is important to note that the checks known by the agent may be different from 21 those reported by the catalog. This is usually due to changes being made while 22 there is no leader elected. The agent performs active 23 [anti-entropy](/docs/internals/anti-entropy.html), so in most situations 24 everything will be in sync within a few seconds. 25 26 | Method | Path | Produces | 27 | ------ | ---------------------------- | -------------------------- | 28 | `GET` | `/agent/checks` | `application/json` | 29 30 The table below shows this endpoint's support for 31 [blocking queries](/api/index.html#blocking-queries), 32 [consistency modes](/api/index.html#consistency-modes), 33 [agent caching](/api/index.html#agent-caching), and 34 [required ACLs](/api/index.html#acls). 35 36 | Blocking Queries | Consistency Modes | Agent Caching | ACL Required | 37 | ---------------- | ----------------- | ------------- | ------------------------ | 38 | `NO` | `none` | `none` | `node:read,service:read` | 39 40 ### Sample Request 41 42 ```text 43 $ curl \ 44 http://127.0.0.1:8500/v1/agent/checks 45 ``` 46 47 ### Sample Response 48 49 ```json 50 { 51 "service:redis": { 52 "Node": "foobar", 53 "CheckID": "service:redis", 54 "Name": "Service 'redis' check", 55 "Status": "passing", 56 "Notes": "", 57 "Output": "", 58 "ServiceID": "redis", 59 "ServiceName": "redis", 60 "ServiceTags": ["primary"] 61 } 62 } 63 ``` 64 65 ## Register Check 66 67 This endpoint adds a new check to the local agent. Checks may be of script, 68 HTTP, TCP, or TTL type. The agent is responsible for managing the status of the 69 check and keeping the Catalog in sync. 70 71 | Method | Path | Produces | 72 | ------ | ---------------------------- | -------------------------- | 73 | `PUT` | `/agent/check/register` | `application/json` | 74 75 The table below shows this endpoint's support for 76 [blocking queries](/api/index.html#blocking-queries), 77 [consistency modes](/api/index.html#consistency-modes), 78 [agent caching](/api/index.html#agent-caching), and 79 [required ACLs](/api/index.html#acls). 80 81 | Blocking Queries | Consistency Modes | Agent Caching | ACL Required | 82 | ---------------- | ----------------- | ------------- | -------------------------- | 83 | `NO` | `none` | `none` | `node:write,service:write` | 84 85 ### Parameters 86 87 - `Name` `(string: <required>)` - Specifies the name of the check. 88 89 - `ID` `(string: "")` - Specifies a unique ID for this check on the node. 90 This defaults to the `"Name"` parameter, but it may be necessary to provide an 91 ID for uniqueness. 92 93 - `Interval` `(string: "")` - Specifies the frequency at which to run this 94 check. This is required for HTTP and TCP checks. 95 96 - `Notes` `(string: "")` - Specifies arbitrary information for humans. This is 97 not used by Consul internally. 98 99 - `DeregisterCriticalServiceAfter` `(string: "")` - Specifies that checks 100 associated with a service should deregister after this time. This is specified 101 as a time duration with suffix like "10m". If a check is in the critical state 102 for more than this configured value, then its associated service (and all of 103 its associated checks) will automatically be deregistered. The minimum timeout 104 is 1 minute, and the process that reaps critical services runs every 30 105 seconds, so it may take slightly longer than the configured timeout to trigger 106 the deregistration. This should generally be configured with a timeout that's 107 much, much longer than any expected recoverable outage for the given service. 108 109 - `Args` `(array<string>)` - Specifies command arguments to run to update the 110 status of the check. Prior to Consul 1.0, checks used a single `Script` field 111 to define the command to run, and would always run in a shell. In Consul 112 1.0, the `Args` array was added so that checks can be run without a shell. The 113 `Script` field is deprecated, and you should include the shell in the `Args` to 114 run under a shell, eg. `"args": ["sh", "-c", "..."]`. 115 116 -> **Note:** Consul 1.0 shipped with an issue where `Args` was erroneously named 117 `ScriptArgs` in this API. Please use `ScriptArgs` with Consul 1.0 (that will 118 continue to be accepted in future versions of Consul), and `Args` in Consul 119 1.0.1 and later. 120 121 - `AliasNode` `(string: "")` - Specifies the ID of the node for an alias check. 122 If no service is specified, the check will alias the health of the node. 123 If a service is specified, the check will alias the specified service on 124 this particular node. 125 126 - `AliasService` `(string: "")` - Specifies the ID of a service for an 127 alias check. If the service is not registered with the same agent, 128 `AliasNode` must also be specified. Note this is the service _ID_ and 129 not the service _name_ (though they are very often the same). 130 131 - `DockerContainerID` `(string: "")` - Specifies that the check is a Docker 132 check, and Consul will evaluate the script every `Interval` in the given 133 container using the specified `Shell`. Note that `Shell` is currently only 134 supported for Docker checks. 135 136 - `GRPC` `(string: "")` - Specifies a `gRPC` check's endpoint that supports the standard 137 [gRPC health checking protocol](https://github.com/grpc/grpc/blob/master/doc/health-checking.md). 138 The state of the check will be updated at the given `Interval` by probing the configured 139 endpoint. 140 141 - `GRPCUseTLS` `(bool: false)` - Specifies whether to use TLS for this `gRPC` health check. 142 If TLS is enabled, then by default, a valid TLS certificate is expected. Certificate 143 verification can be turned off by setting `TLSSkipVerify` to `true`. 144 145 - `HTTP` `(string: "")` - Specifies an `HTTP` check to perform a `GET` request 146 against the value of `HTTP` (expected to be a URL) every `Interval`. If the 147 response is any `2xx` code, the check is `passing`. If the response is `429 148 Too Many Requests`, the check is `warning`. Otherwise, the check is 149 `critical`. HTTP checks also support SSL. By default, a valid SSL certificate 150 is expected. Certificate verification can be controlled using the 151 `TLSSkipVerify`. 152 153 - `Method` `(string: "")` - Specifies a different HTTP method to be used 154 for an `HTTP` check. When no value is specified, `GET` is used. 155 156 - `Header` `(map[string][]string: {})` - Specifies a set of headers that should 157 be set for `HTTP` checks. Each header can have multiple values. 158 159 - `Timeout` `(duration: 10s)` - Specifies a timeout for outgoing connections in the 160 case of a Script, HTTP, TCP, or gRPC check. Can be specified in the form of "10s" 161 or "5m" (i.e., 10 seconds or 5 minutes, respectively). 162 163 - `TLSSkipVerify` `(bool: false)` - Specifies if the certificate for an HTTPS 164 check should not be verified. 165 166 - `TCP` `(string: "")` - Specifies a `TCP` to connect against the value of `TCP` 167 (expected to be an IP or hostname plus port combination) every `Interval`. If 168 the connection attempt is successful, the check is `passing`. If the 169 connection attempt is unsuccessful, the check is `critical`. In the case of a 170 hostname that resolves to both IPv4 and IPv6 addresses, an attempt will be 171 made to both addresses, and the first successful connection attempt will 172 result in a successful check. 173 174 - `TTL` `(string: "")` - Specifies this is a TTL check, and the TTL endpoint 175 must be used periodically to update the state of the check. 176 177 - `ServiceID` `(string: "")` - Specifies the ID of a service to associate the 178 registered check with an existing service provided by the agent. 179 180 - `Status` `(string: "")` - Specifies the initial status of the health check. 181 182 ### Sample Payload 183 184 ```json 185 { 186 "ID": "mem", 187 "Name": "Memory utilization", 188 "Notes": "Ensure we don't oversubscribe memory", 189 "DeregisterCriticalServiceAfter": "90m", 190 "Args": ["/usr/local/bin/check_mem.py"], 191 "DockerContainerID": "f972c95ebf0e", 192 "Shell": "/bin/bash", 193 "HTTP": "https://example.com", 194 "Method": "POST", 195 "Header": {"x-foo":["bar", "baz"]}, 196 "TCP": "example.com:22", 197 "Interval": "10s", 198 "TTL": "15s", 199 "TLSSkipVerify": true 200 } 201 ``` 202 203 ### Sample Request 204 205 ```text 206 $ curl \ 207 --request PUT \ 208 --data @payload.json \ 209 http://127.0.0.1:8500/v1/agent/check/register 210 ``` 211 212 ## Deregister Check 213 214 This endpoint remove a check from the local agent. The agent will take care of 215 deregistering the check from the catalog. If the check with the provided ID does 216 not exist, no action is taken. 217 218 | Method | Path | Produces | 219 | ------ | ----------------------------------- | -------------------------- | 220 | `PUT` | `/agent/check/deregister/:check_id` | `application/json` | 221 222 The table below shows this endpoint's support for 223 [blocking queries](/api/index.html#blocking-queries), 224 [consistency modes](/api/index.html#consistency-modes), 225 [agent caching](/api/index.html#agent-caching), and 226 [required ACLs](/api/index.html#acls). 227 228 | Blocking Queries | Consistency Modes | Agent Caching | ACL Required | 229 | ---------------- | ----------------- | ------------- | -------------------------- | 230 | `NO` | `none` | `none` | `node:write,service:write` | 231 232 ### Parameters 233 234 - `check_id` `(string: "")` - Specifies the unique ID of the check to 235 deregister. This is specified as part of the URL. 236 237 ### Sample Request 238 239 ```text 240 $ curl \ 241 --request PUT \ 242 http://127.0.0.1:8500/v1/agent/check/deregister/my-check-id 243 ``` 244 245 ## TTL Check Pass 246 247 This endpoint is used with a TTL type check to set the status of the check to 248 `passing` and to reset the TTL clock. 249 250 | Method | Path | Produces | 251 | ------ | ----------------------------- | -------------------------- | 252 | `PUT` | `/agent/check/pass/:check_id` | `application/json` | 253 254 The table below shows this endpoint's support for 255 [blocking queries](/api/index.html#blocking-queries), 256 [consistency modes](/api/index.html#consistency-modes), 257 [agent caching](/api/index.html#agent-caching), and 258 [required ACLs](/api/index.html#acls). 259 260 | Blocking Queries | Consistency Modes | Agent Caching | ACL Required | 261 | ---------------- | ----------------- | ------------- | -------------------------- | 262 | `NO` | `none` | `none` | `node:write,service:write` | 263 264 ### Parameters 265 266 - `check_id` `(string: "")` - Specifies the unique ID of the check to 267 use. This is specified as part of the URL. 268 269 - `note` `(string: "")` - Specifies a human-readable message. This will be 270 passed through to the check's `Output` field. 271 272 ### Sample Request 273 274 ```text 275 $ curl \ 276 http://127.0.0.1:8500/v1/agent/check/pass/my-check-id 277 ``` 278 279 ## TTL Check Warn 280 281 This endpoint is used with a TTL type check to set the status of the check to 282 `warning` and to reset the TTL clock. 283 284 | Method | Path | Produces | 285 | ------ | ----------------------------- | -------------------------- | 286 | `PUT` | `/agent/check/warn/:check_id` | `application/json` | 287 288 The table below shows this endpoint's support for 289 [blocking queries](/api/index.html#blocking-queries), 290 [consistency modes](/api/index.html#consistency-modes), 291 [agent caching](/api/index.html#agent-caching), and 292 [required ACLs](/api/index.html#acls). 293 294 | Blocking Queries | Consistency Modes | Agent Caching | ACL Required | 295 | ---------------- | ----------------- | ------------- | -------------------------- | 296 | `NO` | `none` | `none` | `node:write,service:write` | 297 298 ### Parameters 299 300 - `check_id` `(string: "")` - Specifies the unique ID of the check to 301 use. This is specified as part of the URL. 302 303 - `note` `(string: "")` - Specifies a human-readable message. This will be 304 passed through to the check's `Output` field. 305 306 ### Sample Request 307 308 ```text 309 $ curl \ 310 http://127.0.0.1:8500/v1/agent/check/warn/my-check-id 311 ``` 312 313 ## TTL Check Fail 314 315 This endpoint is used with a TTL type check to set the status of the check to 316 `critical` and to reset the TTL clock. 317 318 | Method | Path | Produces | 319 | ------ | ----------------------------- | -------------------------- | 320 | `PUT` | `/agent/check/fail/:check_id` | `application/json` | 321 322 The table below shows this endpoint's support for 323 [blocking queries](/api/index.html#blocking-queries), 324 [consistency modes](/api/index.html#consistency-modes), 325 [agent caching](/api/index.html#agent-caching), and 326 [required ACLs](/api/index.html#acls). 327 328 | Blocking Queries | Consistency Modes | Agent Caching | ACL Required | 329 | ---------------- | ----------------- | ------------- | -------------------------- | 330 | `NO` | `none` | `none` | `node:write,service:write` | 331 332 ### Parameters 333 334 - `check_id` `(string: "")` - Specifies the unique ID of the check to 335 use. This is specified as part of the URL. 336 337 - `note` `(string: "")` - Specifies a human-readable message. This will be 338 passed through to the check's `Output` field. 339 340 ### Sample Request 341 342 ```text 343 $ curl \ 344 http://127.0.0.1:8500/v1/agent/check/fail/my-check-id 345 ``` 346 347 ## TTL Check Update 348 349 This endpoint is used with a TTL type check to set the status of the check and 350 to reset the TTL clock. 351 352 | Method | Path | Produces | 353 | ------ | ------------------------------- | -------------------------- | 354 | `PUT` | `/agent/check/update/:check_id` | `application/json` | 355 356 The table below shows this endpoint's support for 357 [blocking queries](/api/index.html#blocking-queries), 358 [consistency modes](/api/index.html#consistency-modes), 359 [agent caching](/api/index.html#agent-caching), and 360 [required ACLs](/api/index.html#acls). 361 362 | Blocking Queries | Consistency Modes | Agent Caching | ACL Required | 363 | ---------------- | ----------------- | ------------- | -------------------------- | 364 | `NO` | `none` | `none` | `node:write,service:write` | 365 366 ### Parameters 367 368 - `check_id` `(string: "")` - Specifies the unique ID of the check to 369 use. This is specified as part of the URL. 370 371 - `Status` `(string: "")` - Specifies the status of the check. Valid values are 372 `"passing"`, `"warning"`, and `"critical"`. 373 374 - `Output` `(string: "")` - Specifies a human-readable message. This will be 375 passed through to the check's `Output` field. 376 377 ### Sample Payload 378 379 ```json 380 { 381 "Status": "passing", 382 "Output": "curl reported a failure:\n\n..." 383 } 384 ``` 385 386 ### Sample Request 387 388 ```text 389 $ curl \ 390 --request PUT \ 391 --data @payload.json \ 392 http://127.0.0.1:8500/v1/agent/check/update/my-check-id 393 ```