Overload Manager

This documentation is for the Envoy v3 API.

As of Envoy v1.18 the v2 API has been removed and is no longer supported.

If you are upgrading from v2 API config you may wish to view the v2 API documentation:

The Overload Manager provides an extensible framework to protect Envoy instances from overload of various resources (memory, cpu, file descriptors, etc). It monitors a configurable set of resources and notifies registered listeners when triggers related to those resources fire.

config.overload.v3.ResourceMonitor

[config.overload.v3.ResourceMonitor proto]

{
  "name": "...",
  "typed_config": "{...}"
}
name

(string, REQUIRED) The name of the resource monitor to instantiate. Must match a registered resource monitor type. See the extensions listed in typed_config below for the default list of available resource monitor.

typed_config

(Any) Configuration for the resource monitor being instantiated.

Tip

This extension category has the following known extensions:

config.overload.v3.ThresholdTrigger

[config.overload.v3.ThresholdTrigger proto]

{
  "value": "..."
}
value

(double) If the resource pressure is greater than or equal to this value, the trigger will enter saturation.

config.overload.v3.ScaledTrigger

[config.overload.v3.ScaledTrigger proto]

{
  "scaling_threshold": "...",
  "saturation_threshold": "..."
}
scaling_threshold

(double) If the resource pressure is greater than this value, the trigger will be in the scaling state with value (pressure - scaling_threshold) / (saturation_threshold - scaling_threshold).

saturation_threshold

(double) If the resource pressure is greater than this value, the trigger will enter saturation.

config.overload.v3.Trigger

[config.overload.v3.Trigger proto]

{
  "name": "...",
  "threshold": "{...}",
  "scaled": "{...}"
}
name

(string, REQUIRED) The name of the resource this is a trigger for.

threshold

(config.overload.v3.ThresholdTrigger)

Precisely one of threshold, scaled must be set.

scaled

(config.overload.v3.ScaledTrigger)

Precisely one of threshold, scaled must be set.

config.overload.v3.ScaleTimersOverloadActionConfig

[config.overload.v3.ScaleTimersOverloadActionConfig proto]

Typed configuration for the “envoy.overload_actions.reduce_timeouts” action. See the docs for an example of how to configure the action with different timeouts and minimum values.

{
  "timer_scale_factors": []
}
timer_scale_factors

(repeated config.overload.v3.ScaleTimersOverloadActionConfig.ScaleTimer, REQUIRED) A set of timer scaling rules to be applied.

config.overload.v3.ScaleTimersOverloadActionConfig.ScaleTimer

[config.overload.v3.ScaleTimersOverloadActionConfig.ScaleTimer proto]

{
  "timer": "...",
  "min_timeout": "{...}",
  "min_scale": "{...}"
}
timer

(config.overload.v3.ScaleTimersOverloadActionConfig.TimerType) The type of timer this minimum applies to.

min_timeout

(Duration) Sets the minimum duration as an absolute value.

Precisely one of min_timeout, min_scale must be set.

min_scale

(type.v3.Percent) Sets the minimum duration as a percentage of the maximum value.

Precisely one of min_timeout, min_scale must be set.

Enum config.overload.v3.ScaleTimersOverloadActionConfig.TimerType

[config.overload.v3.ScaleTimersOverloadActionConfig.TimerType proto]

UNSPECIFIED

(DEFAULT) ⁣Unsupported value; users must explicitly specify the timer they want scaled.

HTTP_DOWNSTREAM_CONNECTION_IDLE

⁣Adjusts the idle timer for downstream HTTP connections that takes effect when there are no active streams. This affects the value of HttpConnectionManager.common_http_protocol_options.idle_timeout

HTTP_DOWNSTREAM_STREAM_IDLE

⁣Adjusts the idle timer for HTTP streams initiated by downstream clients. This affects the value of RouteAction.idle_timeout and HttpConnectionManager.stream_idle_timeout

TRANSPORT_SOCKET_CONNECT

⁣Adjusts the timer for how long downstream clients have to finish transport-level negotiations before the connection is closed. This affects the value of FilterChain.transport_socket_connect_timeout.

config.overload.v3.OverloadAction

[config.overload.v3.OverloadAction proto]

{
  "name": "...",
  "triggers": [],
  "typed_config": "{...}"
}
name

(string, REQUIRED) The name of the overload action. This is just a well-known string that listeners can use for registering callbacks. Custom overload actions should be named using reverse DNS to ensure uniqueness.

triggers

(repeated config.overload.v3.Trigger, REQUIRED) A set of triggers for this action. The state of the action is the maximum state of all triggers, which can be scaling between 0 and 1 or saturated. Listeners are notified when the overload action changes state.

typed_config

(Any) Configuration for the action being instantiated.

config.overload.v3.BufferFactoryConfig

[config.overload.v3.BufferFactoryConfig proto]

Configuration for which accounts the WatermarkBuffer Factories should track.

{
  "minimum_account_to_track_power_of_two": "..."
}
minimum_account_to_track_power_of_two

(uint32) The minimum power of two at which Envoy starts tracking an account.

Envoy has 8 power of two buckets starting with the provided exponent below. Concretely the 1st bucket contains accounts for streams that use [2^minimum_account_to_track_power_of_two, 2^(minimum_account_to_track_power_of_two + 1)) bytes. With the 8th bucket tracking accounts >= 128 * 2^minimum_account_to_track_power_of_two.

The maximum value is 56, since we’re using uint64_t for bytes counting, and that’s the last value that would use the 8 buckets. In practice, we don’t expect the proxy to be holding 2^56 bytes.

If omitted, Envoy should not do any tracking.

config.overload.v3.OverloadManager

[config.overload.v3.OverloadManager proto]

{
  "refresh_interval": "{...}",
  "resource_monitors": [],
  "actions": [],
  "buffer_factory_config": "{...}"
}
refresh_interval

(Duration) The interval for refreshing resource usage.

resource_monitors

(repeated config.overload.v3.ResourceMonitor, REQUIRED) The set of resources to monitor.

actions

(repeated config.overload.v3.OverloadAction) The set of overload actions.

buffer_factory_config

(config.overload.v3.BufferFactoryConfig) Configuration for buffer factory.