异常值检测 (proto)

config.cluster.v3.OutlierDetection

[config.cluster.v3.OutlierDetection proto]

有关异常值检测的更多信息,请参见 架构概述

{
  "consecutive_5xx": {...},
  "interval": {...},
  "base_ejection_time": {...},
  "max_ejection_percent": {...},
  "enforcing_consecutive_5xx": {...},
  "enforcing_success_rate": {...},
  "success_rate_minimum_hosts": {...},
  "success_rate_request_volume": {...},
  "success_rate_stdev_factor": {...},
  "consecutive_gateway_failure": {...},
  "enforcing_consecutive_gateway_failure": {...},
  "split_external_local_origin_errors": ...,
  "consecutive_local_origin_failure": {...},
  "enforcing_consecutive_local_origin_failure": {...},
  "enforcing_local_origin_success_rate": {...},
  "failure_percentage_threshold": {...},
  "enforcing_failure_percentage": {...},
  "enforcing_failure_percentage_local_origin": {...},
  "failure_percentage_minimum_hosts": {...},
  "failure_percentage_request_volume": {...},
  "max_ejection_time": {...},
  "max_ejection_time_jitter": {...},
  "successful_active_health_check_uneject_host": {...},
  "always_eject_one_host": {...}
}
consecutive_5xx

(UInt32Value) 发生连续 5xx 驱逐之前,连续出现的服务器端错误响应(对于 HTTP 流量,5xx 响应;对于 TCP 流量,连接失败;对于 Redis,无法响应 PONG;等等)的次数。默认为 5。

interval

(Duration) 驱逐分析扫描之间的时间间隔。这可能导致新的驱逐以及主机被返回到服务。默认为 10000ms 或 10 秒。

base_ejection_time

(Duration) 主机被驱逐的基本时间。实际时间等于基本时间乘以主机被驱逐的次数,并以 max_ejection_time 为上限。默认为 30000ms 或 30 秒。

max_ejection_percent

(UInt32Value) 由于异常值检测,可以从上游集群中驱逐的最大百分比。默认为 10%。如果启用了 always_eject_one_host,无论该值如何,至少驱逐一台主机。

enforcing_consecutive_5xx

(UInt32Value) 当通过连续 5xx 检测到异常值状态时,主机实际被驱逐的百分比。此设置可用于禁用驱逐或缓慢地将其提升。默认为 100。

enforcing_success_rate

(UInt32Value) 当通过成功率统计信息检测到异常值状态时,主机实际被驱逐的百分比。此设置可用于禁用驱逐或缓慢地将其提升。默认为 100。

success_rate_minimum_hosts

(UInt32Value) 集群中必须拥有足够请求量的主机数量,以检测成功率异常值。如果主机数量少于此设置,则不会对集群中的任何主机执行基于成功率统计信息的异常值检测。默认为 5。

success_rate_request_volume

(UInt32Value) 在一个间隔(如上所述由间隔持续时间定义)内必须收集的总请求数的最小值,以将此主机包含在基于成功率的异常值检测中。如果数量低于此设置,则不会对该主机执行基于成功率统计信息的异常值检测。默认为 100。

success_rate_stdev_factor

(UInt32Value) 此因子用于确定成功率异常值驱逐的驱逐阈值。驱逐阈值是平均成功率与该因子和平均成功率的标准差的乘积之间的差:mean - (stdev * success_rate_stdev_factor)。此因子除以一千以获得双精度值。也就是说,如果所需的因子是 1.9,则运行时值为 1900。默认为 1900。

consecutive_gateway_failure

(UInt32Value) 发生连续网关故障驱逐之前,连续出现的网关故障(502、503、504 状态码)的次数。默认为 5。

enforcing_consecutive_gateway_failure

(UInt32Value) 当通过连续网关故障检测到异常值状态时,主机实际被驱逐的百分比。此设置可用于禁用驱逐或缓慢地将其提升。默认为 0。

split_external_local_origin_errors

(bool) 确定是否区分本地来源故障与外部错误。如果设置为 true,则会考虑以下配置参数:consecutive_local_origin_failureenforcing_consecutive_local_origin_failureenforcing_local_origin_success_rate。默认为 false。

consecutive_local_origin_failure

(UInt32Value) 发生驱逐之前,连续出现的本地来源故障的次数。默认为 5。仅当 split_external_local_origin_errors 设置为 true 时,参数才会生效。

enforcing_consecutive_local_origin_failure

(UInt32Value) 当通过连续本地来源故障检测到异常值状态时,主机实际被驱逐的百分比。此设置可用于禁用驱逐或缓慢地将其提升。默认为 100。仅当 split_external_local_origin_errors 设置为 true 时,参数才会生效。

enforcing_local_origin_success_rate

(UInt32Value) 当通过本地来源错误的成功率统计信息检测到异常值状态时,主机实际被驱逐的百分比。此设置可用于禁用驱逐或缓慢地将其提升。默认为 100。仅当 split_external_local_origin_errors 设置为 true 时,参数才会生效。

failure_percentage_threshold

(UInt32Value) 用于确定基于故障百分比的异常值检测的故障百分比。如果给定主机的故障百分比大于或等于此值,则会将其驱逐。默认为 85。

enforcing_failure_percentage

(UInt32Value) 当通过故障百分比统计信息检测到异常值状态时,主机实际被驱逐的百分比。此设置可用于禁用驱逐或缓慢地将其提升。默认为 0。

enforcing_failure_percentage_local_origin

(UInt32Value) 当通过本地来源故障百分比统计信息检测到异常值状态时,主机实际被驱逐的百分比。此设置可用于禁用驱逐或缓慢地将其提升。默认为 0。

failure_percentage_minimum_hosts

(UInt32Value) 为了执行基于故障百分比的驱逐,集群中主机的最小数量。如果集群中主机的总数少于此值,则不会执行基于故障百分比的驱逐。默认为 5。

failure_percentage_request_volume

(UInt32Value) 在一个间隔(如上所述由间隔持续时间定义)内必须收集的总请求数的最小值,以对该主机执行基于故障百分比的驱逐。如果数量低于此设置,则不会对该主机执行基于故障百分比的驱逐。默认为 50。

max_ejection_time

(Duration) 主机被驱逐的最大时间。有关更多信息,请参见 base_ejection_time。如果未指定,则应用默认值 (300000ms 或 300 秒) 或 base_ejection_time 值,以较大者为准。

max_ejection_time_jitter

(Duration) 添加到驱逐时间的最大抖动量,以防止“雷鸣般的羊群”效应,即所有代理都尝试在同一时间重新连接到主机。有关更多信息,请参见 max_ejection_time_jitter 默认为 0 秒。

successful_active_health_check_uneject_host

(BoolValue) 如果启用了活动健康检查,并且主机被异常值检测驱逐,则默认情况下,成功的活动健康检查会驱逐主机,并将其视为健康状态。驱逐还会清除所有异常值检测计数器。要更改此默认行为,请将此配置设置为 false,其中活动健康检查不会驱逐主机。默认为 true。

always_eject_one_host

(BoolValue) 如果启用,则至少驱逐一台主机,而不管 max_ejection_percent 的值如何。默认为 false。