health_check.proto

Package: solo.io.envoy.api.v2.core

Types:

Enums:
- [HealthStatus](#healthstatus)
Source File: github.com/solo-io/gloo/projects/gloo/api/external/envoy/api/v2/core/health_check.proto

HealthCheck

"timeout": .google.protobuf.Duration
"interval": .google.protobuf.Duration
"initialJitter": .google.protobuf.Duration
"intervalJitter": .google.protobuf.Duration
"intervalJitterPercent": int
"unhealthyThreshold": .google.protobuf.UInt32Value
"healthyThreshold": .google.protobuf.UInt32Value
"reuseConnection": .google.protobuf.BoolValue
"httpHealthCheck": .solo.io.envoy.api.v2.core.HealthCheck.HttpHealthCheck
"tcpHealthCheck": .solo.io.envoy.api.v2.core.HealthCheck.TcpHealthCheck
"grpcHealthCheck": .solo.io.envoy.api.v2.core.HealthCheck.GrpcHealthCheck
"customHealthCheck": .solo.io.envoy.api.v2.core.HealthCheck.CustomHealthCheck
"noTrafficInterval": .google.protobuf.Duration
"unhealthyInterval": .google.protobuf.Duration
"unhealthyEdgeInterval": .google.protobuf.Duration
"healthyEdgeInterval": .google.protobuf.Duration
"eventLogPath": string
"alwaysLogHealthCheckFailures": bool

Field Type Description
timeout .google.protobuf.Duration The time to wait for a health check response. If the timeout is reached the health check attempt will be considered a failure.
interval .google.protobuf.Duration The interval between health checks.
initialJitter .google.protobuf.Duration An optional jitter amount in milliseconds. If specified, Envoy will start health checking after for a random time in ms between 0 and initial_jitter. This only applies to the first health check.
intervalJitter .google.protobuf.Duration An optional jitter amount in milliseconds. If specified, during every interval Envoy will add interval_jitter to the wait time.
intervalJitterPercent int An optional jitter amount as a percentage of interval_ms. If specified, during every interval Envoy will add interval_ms * interval_jitter_percent / 100 to the wait time. If interval_jitter_ms and interval_jitter_percent are both set, both of them will be used to increase the wait time.
unhealthyThreshold .google.protobuf.UInt32Value The number of unhealthy health checks required before a host is marked unhealthy. Note that for http health checking if a host responds with 503 this threshold is ignored and the host is considered unhealthy immediately.
healthyThreshold .google.protobuf.UInt32Value The number of healthy health checks required before a host is marked healthy. Note that during startup, only a single successful health check is required to mark a host healthy.
reuseConnection .google.protobuf.BoolValue Reuse health check connection between health checks. Default is true.
httpHealthCheck .solo.io.envoy.api.v2.core.HealthCheck.HttpHealthCheck HTTP health check. Only one of httpHealthCheck, tcpHealthCheck, grpcHealthCheck, or customHealthCheck can be set.
tcpHealthCheck .solo.io.envoy.api.v2.core.HealthCheck.TcpHealthCheck TCP health check. Only one of tcpHealthCheck, httpHealthCheck, grpcHealthCheck, or customHealthCheck can be set.
grpcHealthCheck .solo.io.envoy.api.v2.core.HealthCheck.GrpcHealthCheck gRPC health check. Only one of grpcHealthCheck, httpHealthCheck, tcpHealthCheck, or customHealthCheck can be set.
customHealthCheck .solo.io.envoy.api.v2.core.HealthCheck.CustomHealthCheck Custom health check. Only one of customHealthCheck, httpHealthCheck, tcpHealthCheck, or grpcHealthCheck can be set.
noTrafficInterval .google.protobuf.Duration The “no traffic interval” is a special health check interval that is used when a cluster has never had traffic routed to it. This lower interval allows cluster information to be kept up to date, without sending a potentially large amount of active health checking traffic for no reason. Once a cluster has been used for traffic routing, Envoy will shift back to using the standard health check interval that is defined. Note that this interval takes precedence over any other. The default value for “no traffic interval” is 60 seconds.
unhealthyInterval .google.protobuf.Duration The “unhealthy interval” is a health check interval that is used for hosts that are marked as unhealthy. As soon as the host is marked as healthy, Envoy will shift back to using the standard health check interval that is defined. The default value for “unhealthy interval” is the same as “interval”.
unhealthyEdgeInterval .google.protobuf.Duration The “unhealthy edge interval” is a special health check interval that is used for the first health check right after a host is marked as unhealthy. For subsequent health checks Envoy will shift back to using either “unhealthy interval” if present or the standard health check interval that is defined. The default value for “unhealthy edge interval” is the same as “unhealthy interval”.
healthyEdgeInterval .google.protobuf.Duration The “healthy edge interval” is a special health check interval that is used for the first health check right after a host is marked as healthy. For subsequent health checks Envoy will shift back to using the standard health check interval that is defined. The default value for “healthy edge interval” is the same as the default interval.
eventLogPath string Specifies the path to the health check event log (arch_overview_health_check_logging). If empty, no event log will be written.
alwaysLogHealthCheckFailures bool If set to true, health check failure events will always be logged. If set to false, only the initial health check failure event will be logged. The default value is false.

Payload

Describes the encoding of the payload bytes in the payload.

"text": string

Field Type Description
text string Hex encoded payload. E.g., “000000FF”.

HttpHealthCheck

[#comment:next free field: 11]

"host": string
"path": string
"serviceName": string
"requestHeadersToAdd": []solo.io.envoy.api.v2.core.HeaderValueOption
"requestHeadersToRemove": []string
"useHttp2": bool
"expectedStatuses": []solo.io.envoy.type.Int64Range
"responseAssertions": .advancedhttp.options.gloo.solo.io.ResponseAssertions
"method": .solo.io.envoy.config.core.v3.RequestMethod

Field Type Description
host string The value of the host header in the HTTP health check request. If left empty (default value), the name of the cluster this health check is associated with will be used.
path string Specifies the HTTP path that will be requested during health checking. For example /healthcheck.
serviceName string An optional service name parameter which is used to validate the identity of the health checked cluster. See the architecture overview (arch_overview_health_checking_identity) for more information.
requestHeadersToAdd []solo.io.envoy.api.v2.core.HeaderValueOption Specifies a list of HTTP headers that should be added to each request that is sent to the health checked cluster. For more information, including details on header value syntax, see the documentation on custom request headers (config_http_conn_man_headers_custom_request_headers).
requestHeadersToRemove []string Specifies a list of HTTP headers that should be removed from each request that is sent to the health checked cluster.
useHttp2 bool If set, health checks will be made using http/2.
expectedStatuses []solo.io.envoy.type.Int64Range Specifies a list of HTTP response statuses considered healthy. If provided, replaces default 200-only policy - 200 must be included explicitly as needed. Ranges follow half-open semantics of Int64Range (envoy_api_msg_type.Int64Range).
responseAssertions .advancedhttp.options.gloo.solo.io.ResponseAssertions (Enterprise Only): If defined, the response health check rules take precedence over the http expected_statuses.
method .solo.io.envoy.config.core.v3.RequestMethod HTTP Method that will be used for health checking, default is “GET”. GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE, PATCH methods are supported, but making request body is not supported. CONNECT method is disallowed because it is not appropriate for health check request. If a non-200 response is expected by the method, it needs to be set in :ref:expected_statuses <envoy_v3_api_field_config.core.v3.HealthCheck.HttpHealthCheck.expected_statuses>.

TcpHealthCheck

"send": .solo.io.envoy.api.v2.core.HealthCheck.Payload
"receive": []solo.io.envoy.api.v2.core.HealthCheck.Payload

Field Type Description
send .solo.io.envoy.api.v2.core.HealthCheck.Payload Empty payloads imply a connect-only health check.
receive []solo.io.envoy.api.v2.core.HealthCheck.Payload When checking the response, “fuzzy” matching is performed such that each binary block must be found, and in the order specified, but not necessarily contiguous.

RedisHealthCheck

"key": string

Field Type Description
key string If set, optionally perform EXISTS <key> instead of PING. A return value from Redis of 0 (does not exist) is considered a passing healthcheck. A return value other than 0 is considered a failure. This allows the user to mark a Redis instance for maintenance by setting the specified key to any value and waiting for traffic to drain.

GrpcHealthCheck

grpc.health.v1.Health <https://github.com/grpc/grpc/blob/master/src/proto/grpc/health/v1/health.proto>-based healthcheck. See gRPC doc <https://github.com/grpc/grpc/blob/master/doc/health-checking.md> for details.

"serviceName": string
"authority": string
"initialMetadata": []solo.io.envoy.api.v2.core.HeaderValueOption

Field Type Description
serviceName string An optional service name parameter which will be sent to gRPC service in grpc.health.v1.HealthCheckRequest <https://github.com/grpc/grpc/blob/master/src/proto/grpc/health/v1/health.proto#L20>. message. See gRPC health-checking overview <https://github.com/grpc/grpc/blob/master/doc/health-checking.md> for more information.
authority string The value of the :authority header in the gRPC health check request. If left empty (default value), the name of the cluster this health check is associated with will be used.
initialMetadata []solo.io.envoy.api.v2.core.HeaderValueOption Specifies a list of key-value pairs that should be added to the metadata of each GRPC call that is sent to the health checked cluster.

CustomHealthCheck

Custom health check.

"name": string
"config": .google.protobuf.Struct
"typedConfig": .google.protobuf.Any

Field Type Description
name string The registered name of the custom health checker.
config .google.protobuf.Struct Only one of config or typedConfig can be set.
typedConfig .google.protobuf.Any Only one of typedConfig or config can be set.

HealthStatus

Description: Endpoint health status.

Name Description
UNKNOWN The health status is not known. This is interpreted by Envoy as HEALTHY.
HEALTHY Healthy.
UNHEALTHY Unhealthy.
DRAINING Connection draining in progress. E.g., <https://aws.amazon.com/blogs/aws/elb-connection-draining-remove-instances-from-service-with-care/>_ or <https://cloud.google.com/compute/docs/load-balancing/enabling-connection-draining>_. This is interpreted by Envoy as *UNHEALTHY*.
TIMEOUT Health check timed out. This is part of HDS and is interpreted by Envoy as UNHEALTHY.
DEGRADED Degraded.