You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
5.4 KiB
130 lines
5.4 KiB
syntax = "proto3"; |
|
|
|
package envoy.data.cluster.v2alpha; |
|
|
|
option java_outer_classname = "OutlierDetectionEventProto"; |
|
option java_multiple_files = true; |
|
option java_package = "io.envoyproxy.envoy.data.cluster.v2alpha"; |
|
|
|
import "google/protobuf/timestamp.proto"; |
|
import "google/protobuf/wrappers.proto"; |
|
|
|
import "validate/validate.proto"; |
|
|
|
// [#protodoc-title: Outlier detection logging events] |
|
// :ref:`Outlier detection logging <arch_overview_outlier_detection_logging>`. |
|
|
|
// Type of ejection that took place |
|
enum OutlierEjectionType { |
|
// In case upstream host returns certain number of consecutive 5xx. |
|
// If |
|
// :ref:`outlier_detection.split_external_local_origin_errors<envoy_api_field_cluster.OutlierDetection.split_external_local_origin_errors>` |
|
// is *false*, all type of errors are treated as HTTP 5xx errors. |
|
// See :ref:`Cluster outlier detection <arch_overview_outlier_detection>` documentation for |
|
// details. |
|
CONSECUTIVE_5XX = 0; |
|
|
|
// In case upstream host returns certain number of consecutive gateway errors |
|
CONSECUTIVE_GATEWAY_FAILURE = 1; |
|
|
|
// Runs over aggregated success rate statistics from every host in cluster |
|
// and selects hosts for which ratio of successful replies deviates from other hosts |
|
// in the cluster. |
|
// If |
|
// :ref:`outlier_detection.split_external_local_origin_errors<envoy_api_field_cluster.OutlierDetection.split_external_local_origin_errors>` |
|
// is *false*, all errors (externally and locally generated) are used to calculate success rate |
|
// statistics. See :ref:`Cluster outlier detection <arch_overview_outlier_detection>` |
|
// documentation for details. |
|
SUCCESS_RATE = 2; |
|
|
|
// Consecutive local origin failures: Connection failures, resets, timeouts, etc |
|
// This type of ejection happens only when |
|
// :ref:`outlier_detection.split_external_local_origin_errors<envoy_api_field_cluster.OutlierDetection.split_external_local_origin_errors>` |
|
// is set to *true*. |
|
// See :ref:`Cluster outlier detection <arch_overview_outlier_detection>` documentation for |
|
CONSECUTIVE_LOCAL_ORIGIN_FAILURE = 3; |
|
|
|
// Runs over aggregated success rate statistics for local origin failures |
|
// for all hosts in the cluster and selects hosts for which success rate deviates from other |
|
// hosts in the cluster. This type of ejection happens only when |
|
// :ref:`outlier_detection.split_external_local_origin_errors<envoy_api_field_cluster.OutlierDetection.split_external_local_origin_errors>` |
|
// is set to *true*. |
|
// See :ref:`Cluster outlier detection <arch_overview_outlier_detection>` documentation for |
|
SUCCESS_RATE_LOCAL_ORIGIN = 4; |
|
|
|
// Runs over aggregated success rate statistics from every host in cluster and selects hosts for |
|
// which ratio of failed replies is above configured value. |
|
FAILURE_PERCENTAGE = 5; |
|
|
|
// Runs over aggregated success rate statistics for local origin failures from every host in |
|
// cluster and selects hosts for which ratio of failed replies is above configured value. |
|
FAILURE_PERCENTAGE_LOCAL_ORIGIN = 6; |
|
} |
|
|
|
// Represents possible action applied to upstream host |
|
enum Action { |
|
// In case host was excluded from service |
|
EJECT = 0; |
|
|
|
// In case host was brought back into service |
|
UNEJECT = 1; |
|
} |
|
|
|
message OutlierDetectionEvent { |
|
// In case of eject represents type of ejection that took place. |
|
OutlierEjectionType type = 1 [(validate.rules).enum = {defined_only: true}]; |
|
|
|
// Timestamp for event. |
|
google.protobuf.Timestamp timestamp = 2; |
|
|
|
// The time in seconds since the last action (either an ejection or unejection) took place. |
|
google.protobuf.UInt64Value secs_since_last_action = 3; |
|
|
|
// The :ref:`cluster <envoy_api_msg_Cluster>` that owns the ejected host. |
|
string cluster_name = 4 [(validate.rules).string = {min_bytes: 1}]; |
|
|
|
// The URL of the ejected host. E.g., ``tcp://1.2.3.4:80``. |
|
string upstream_url = 5 [(validate.rules).string = {min_bytes: 1}]; |
|
|
|
// The action that took place. |
|
Action action = 6 [(validate.rules).enum = {defined_only: true}]; |
|
|
|
// If ``action`` is ``eject``, specifies the number of times the host has been ejected (local to |
|
// that Envoy and gets reset if the host gets removed from the upstream cluster for any reason and |
|
// then re-added). |
|
uint32 num_ejections = 7; |
|
|
|
// If ``action`` is ``eject``, specifies if the ejection was enforced. ``true`` means the host was |
|
// ejected. ``false`` means the event was logged but the host was not actually ejected. |
|
bool enforced = 8; |
|
|
|
oneof event { |
|
option (validate.required) = true; |
|
|
|
OutlierEjectSuccessRate eject_success_rate_event = 9; |
|
|
|
OutlierEjectConsecutive eject_consecutive_event = 10; |
|
|
|
OutlierEjectFailurePercentage eject_failure_percentage_event = 11; |
|
} |
|
} |
|
|
|
message OutlierEjectSuccessRate { |
|
// Host’s success rate at the time of the ejection event on a 0-100 range. |
|
uint32 host_success_rate = 1 [(validate.rules).uint32 = {lte: 100}]; |
|
|
|
// Average success rate of the hosts in the cluster at the time of the ejection event on a 0-100 |
|
// range. |
|
uint32 cluster_average_success_rate = 2 [(validate.rules).uint32 = {lte: 100}]; |
|
|
|
// Success rate ejection threshold at the time of the ejection event. |
|
uint32 cluster_success_rate_ejection_threshold = 3 [(validate.rules).uint32 = {lte: 100}]; |
|
} |
|
|
|
message OutlierEjectConsecutive { |
|
} |
|
|
|
message OutlierEjectFailurePercentage { |
|
// Host's success rate at the time of the ejection event on a 0-100 range. |
|
uint32 host_success_rate = 1 [(validate.rules).uint32 = {lte: 100}]; |
|
}
|
|
|