Project: Gloo (Orchestration & Management / API Gateway)
File: health_check.proto.sk.md

title: "health_check.proto" weight: 5 <!-- Code generated by solo-kit. DO NOT EDIT. --> - [#next-free-field: 24] ```yaml "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 "altPort": .google.protobuf.UInt32Value "reuseConnection": .google.protobuf.BoolValue "httpHealthCheck": .solo.io.envoy.config.core.v3.HealthCheck.HttpHealthCheck "tcpHealthCheck": .solo.io.envoy.config.core.v3.HealthCheck.TcpHealthCheck "grpcHealthCheck": .solo.io.envoy.config.core.v3.HealthCheck.GrpcHealthCheck "customHealthCheck": .solo.io.envoy.config.core.v3.HealthCheck.CustomHealthCheck "noTrafficInterval": .google.protobuf.Duration "unhealthyInterval": .google.protobuf.Duration "unhealthyEdgeInterval": .google.protobuf.Duration "healthyEdgeInterval": .google.protobuf.Duration "eventLogPath": string "eventService": .solo.io.envoy.config.core.v3.EventServiceConfig "alwaysLogHealthCheckFailures": bool "tlsOptions": .solo.io.envoy.config.core.v3.HealthCheck.TlsOptions "transportSocketMatchCriteria": .google.protobuf.Struct ``` | Field | Type | Description | | -- | - | -- | | `timeout` | | The time to wait for a health check response. If the timeout is reached the health check attempt will be considered a failure. | | `interval` | | The interval between health checks. | | `initialJitter` | | 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` | | 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 intervalms. If specified, during every interval Envoy will add intervalms * intervaljitterpercent / 100 to the wait time. If intervaljitterms and intervaljitterpercent are both set, both of them will be used to increase the wait time. | | `unhealthyThreshold` | | 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` | | 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. | | `altPort` | | [#not-implemented-hide:] Non-serving port for health checking. | | `reuseConnection` | | Reuse health check connection between health checks. Default is true. | | `httpHealthCheck` | | HTTP health check. Only one of `httpHealthCheck`, `tcpHealthCheck`, `grpcHealthCheck`, or `customHealthCheck` can be set. | | `tcpHealthCheck` | | TCP health check. Only one of `tcpHealthCheck`, `httpHealthCheck`, `grpcHealthCheck`, or `customHealthCheck` can be set. | | `grpcHealthCheck` | | gRPC health check. Only one of `grpcHealthCheck`, `httpHealthCheck`, `tcpHealthCheck`, or `customHealthCheck` can be set. | | `customHealthCheck` | | Custom health check. Only one of `customHealthCheck`, `httpHealthCheck`, `tcpHealthCheck`, or `grpcHealthCheck` can be set. | | `noTrafficInterval` | | 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

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` | | 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` | | 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` | | 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 :ref:`health check event log <archoverviewhealthchecklogging>`. If empty, no event log will be written. | | `eventService` | | [#not-implemented-hide:] The gRPC service for the health check event service. If empty, health check events won't be sent to a remote endpoint. | | `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. | | `tlsOptions` | | This allows overriding the cluster TLS settings, just for health check connections. | | `transportSocketMatchCriteria` | | Optional key/value pairs that will be used to match a transport socket from those specified in the cluster's :ref:`tranport socket matches <envoyapifieldconfig.cluster.v3.Cluster.transportsocketmatches>`. For example, the following match criteria .. code-block:: yaml transportsocketmatchcriteria: useMTLS: true Will match the following :ref:`cluster socket match <envoyapimsgconfig.cluster.v3.Cluster.TransportSocketMatch>` .. code-block:: yaml transportsocketmatches: - name: "useMTLS" match: useMTLS: true transportsocket: name: envoy.transportsockets.tls config: { ... } # tls socket configuration If this field is set, then for health checks it will supersede an entry of *envoy.transportsocket* in the :ref:`LbEndpoint.Metadata <envoyapifieldconfig.endpoint.v3.LbEndpoint.metadata>`. This allows using different transport socket capabilities for health checking versus proxying to the endpoint. If the key/values pairs specified do not match any :ref:`transport socket matches

the cluster's :ref:`transport socket <envoyapifieldconfig.cluster.v3.Cluster.transportsocket>` will be used for health check socket configuration. | Describes the encoding of the payload bytes in the payload. ```yaml "text": string "binary": bytes ``` | Field | Type | Description | | -- | - | -- | | `text` | `string` | Hex encoded payload. E.g., "000000FF". Only one of `text` or `binary` can be set. | | `binary` | `bytes` | [#not-implemented-hide:] Binary payload. Only one of `binary` or `text` can be set. | [#next-free-field: 13] ```yaml "host": string "path": string "send": .solo.io.envoy.config.core.v3.HealthCheck.Payload "receive": .solo.io.envoy.config.core.v3.HealthCheck.Payload "requestHeadersToAdd": []solo.io.envoy.config.core.v3.HeaderValueOption "requestHeadersToRemove": []string "expectedStatuses": []solo.io.envoy.type.v3.Int64Range "codecClientType": .solo.io.envoy.type.v3.CodecClientType "serviceNameMatcher": .solo.io.envoy.type.matcher.v3.StringMatcher "responseAssertions": .advancedhttp.options.gloo.solo.io.ResponseAssertions ``` | 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. The host header can be customized for a specific endpoint by setting the :ref:`hostname <envoyapifield_config.endpoint.v3.Endpoint.HealthCheckConfig.hostname>` field. | | `path` | `string` | Specifies the HTTP path that will be requested during health checking. For example /healthcheck. | | `send` | | [#not-implemented-hide:] HTTP specific payload. | | `receive` | | [#not-implemented-hide:] HTTP specific response. | | `requestHeadersToAdd` | | 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 :ref:`custom request headers <confighttpconnmanheaderscustomrequest_headers>`. | | `requestHeadersToRemove` | `[]string` | Specifies a list of HTTP headers that should be removed from each request that is sent to the health checked cluster. | | `expectedStatuses` | | 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 :ref:`Int64Range <envoyapimsg_type.v3.Int64Range>`. The start and end of each range are required. Only statuses in the range [100, 600) are allowed. | | `codecClientType` | | Use specified application protocol for health checks. | | `serviceNameMatcher` | | An optional service name parameter which is used to validate the identity of the health checked cluster using a :ref:`StringMatcher <envoyapimsgtype.matcher.v3.StringMatcher>`. See the :ref:`architecture overview <archoverviewhealthchecking_identity>` for more information. | | `responseAssertions` | | (Enterprise Only): If defined, the response health check rules take precedence over the http `expected_statuses`. | ```yaml "send": .solo.io.envoy.config.core.v3.HealthCheck.Payload "receive": []solo.io.envoy.config.core.v3.HealthCheck.Payload ``` | Field | Type | Description | | -- | - | -- | | `send` | | Empty payloads imply a connect-only health

| | `receive` | | 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. | ```yaml "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. | `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. ```yaml "serviceName": string "authority": string ``` | 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. The authority header can be customized for a specific endpoint by setting the :ref:`hostname <envoyapifield_config.endpoint.v3.Endpoint.HealthCheckConfig.hostname>` field. | Custom health check. ```yaml "name": string "typedConfig": .google.protobuf.Any ``` | Field | Type | Description | | -- | - | -- | | `name` | `string` | The registered name of the custom health checker. | | `typedConfig` | | | Health checks occur over the transport socket specified for the cluster. This implies that if a cluster is using a TLS-enabled transport socket, the health check will also occur over TLS. This allows overriding the cluster TLS settings, just for health check connections. ```yaml "alpnProtocols": []string ``` | Field | Type | Description | | -- | - | -- | | `alpnProtocols` | `[]string` | Specifies the ALPN protocols for health check connections. This is useful if the corresponding upstream is using ALPN-based :ref:`FilterChainMatch <envoyapimsg_config.listener.v3.FilterChainMatch>` along with different protocols for health checks versus data connections. If empty, no ALPN protocols will be set on health check connections. | 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. | <!-- Start of HubSpot Embed Code --> <script type="text/javascript" id="hs-script-loader" async defer src="//js.hs-scripts.com/5130874.js"></script> <!-- End of HubSpot Embed Code -->