.. _envoy_v3_api_file_envoy/config/overload/v3/overload.proto: 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: :ref:`config/overload/v2alpha/overload.proto ` 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. .. _envoy_v3_api_msg_config.overload.v3.ResourceMonitor: config.overload.v3.ResourceMonitor ---------------------------------- :repo:`[config.overload.v3.ResourceMonitor proto] ` .. code-block:: json { "name": "...", "typed_config": "{...}" } .. _envoy_v3_api_field_config.overload.v3.ResourceMonitor.name: name (`string `_, *REQUIRED*) The name of the resource monitor to instantiate. Must match a registered resource monitor type. See the :ref:`extensions listed in typed_config below ` for the default list of available resource monitor. .. _envoy_v3_api_field_config.overload.v3.ResourceMonitor.typed_config: typed_config (`Any `_) Configuration for the resource monitor being instantiated. .. _extension_category_envoy.resource_monitors: .. tip:: This extension category has the following known extensions: - :ref:`envoy.resource_monitors.fixed_heap ` - :ref:`envoy.resource_monitors.injected_resource ` .. _envoy_v3_api_msg_config.overload.v3.ThresholdTrigger: config.overload.v3.ThresholdTrigger ----------------------------------- :repo:`[config.overload.v3.ThresholdTrigger proto] ` .. code-block:: json { "value": "..." } .. _envoy_v3_api_field_config.overload.v3.ThresholdTrigger.value: value (`double `_) If the resource pressure is greater than or equal to this value, the trigger will enter saturation. .. _envoy_v3_api_msg_config.overload.v3.ScaledTrigger: config.overload.v3.ScaledTrigger -------------------------------- :repo:`[config.overload.v3.ScaledTrigger proto] ` .. code-block:: json { "scaling_threshold": "...", "saturation_threshold": "..." } .. _envoy_v3_api_field_config.overload.v3.ScaledTrigger.scaling_threshold: scaling_threshold (`double `_) If the resource pressure is greater than this value, the trigger will be in the :ref:`scaling ` state with value `(pressure - scaling_threshold) / (saturation_threshold - scaling_threshold)`. .. _envoy_v3_api_field_config.overload.v3.ScaledTrigger.saturation_threshold: saturation_threshold (`double `_) If the resource pressure is greater than this value, the trigger will enter saturation. .. _envoy_v3_api_msg_config.overload.v3.Trigger: config.overload.v3.Trigger -------------------------- :repo:`[config.overload.v3.Trigger proto] ` .. code-block:: json { "name": "...", "threshold": "{...}", "scaled": "{...}" } .. _envoy_v3_api_field_config.overload.v3.Trigger.name: name (`string `_, *REQUIRED*) The name of the resource this is a trigger for. .. _envoy_v3_api_field_config.overload.v3.Trigger.threshold: threshold (:ref:`config.overload.v3.ThresholdTrigger `) Precisely one of :ref:`threshold `, :ref:`scaled ` must be set. .. _envoy_v3_api_field_config.overload.v3.Trigger.scaled: scaled (:ref:`config.overload.v3.ScaledTrigger `) Precisely one of :ref:`threshold `, :ref:`scaled ` must be set. .. _envoy_v3_api_msg_config.overload.v3.ScaleTimersOverloadActionConfig: config.overload.v3.ScaleTimersOverloadActionConfig -------------------------------------------------- :repo:`[config.overload.v3.ScaleTimersOverloadActionConfig proto] ` Typed configuration for the "envoy.overload_actions.reduce_timeouts" action. See :ref:`the docs ` for an example of how to configure the action with different timeouts and minimum values. .. code-block:: json { "timer_scale_factors": [] } .. _envoy_v3_api_field_config.overload.v3.ScaleTimersOverloadActionConfig.timer_scale_factors: timer_scale_factors (**repeated** :ref:`config.overload.v3.ScaleTimersOverloadActionConfig.ScaleTimer `, *REQUIRED*) A set of timer scaling rules to be applied. .. _envoy_v3_api_msg_config.overload.v3.ScaleTimersOverloadActionConfig.ScaleTimer: config.overload.v3.ScaleTimersOverloadActionConfig.ScaleTimer ------------------------------------------------------------- :repo:`[config.overload.v3.ScaleTimersOverloadActionConfig.ScaleTimer proto] ` .. code-block:: json { "timer": "...", "min_timeout": "{...}", "min_scale": "{...}" } .. _envoy_v3_api_field_config.overload.v3.ScaleTimersOverloadActionConfig.ScaleTimer.timer: timer (:ref:`config.overload.v3.ScaleTimersOverloadActionConfig.TimerType `) The type of timer this minimum applies to. .. _envoy_v3_api_field_config.overload.v3.ScaleTimersOverloadActionConfig.ScaleTimer.min_timeout: min_timeout (`Duration `_) Sets the minimum duration as an absolute value. Precisely one of :ref:`min_timeout `, :ref:`min_scale ` must be set. .. _envoy_v3_api_field_config.overload.v3.ScaleTimersOverloadActionConfig.ScaleTimer.min_scale: min_scale (:ref:`type.v3.Percent `) Sets the minimum duration as a percentage of the maximum value. Precisely one of :ref:`min_timeout `, :ref:`min_scale ` must be set. .. _envoy_v3_api_enum_config.overload.v3.ScaleTimersOverloadActionConfig.TimerType: Enum config.overload.v3.ScaleTimersOverloadActionConfig.TimerType ----------------------------------------------------------------- :repo:`[config.overload.v3.ScaleTimersOverloadActionConfig.TimerType proto] ` .. _envoy_v3_api_enum_value_config.overload.v3.ScaleTimersOverloadActionConfig.TimerType.UNSPECIFIED: UNSPECIFIED *(DEFAULT)* ⁣Unsupported value; users must explicitly specify the timer they want scaled. .. _envoy_v3_api_enum_value_config.overload.v3.ScaleTimersOverloadActionConfig.TimerType.HTTP_DOWNSTREAM_CONNECTION_IDLE: 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 :ref:`HttpConnectionManager.common_http_protocol_options.idle_timeout ` .. _envoy_v3_api_enum_value_config.overload.v3.ScaleTimersOverloadActionConfig.TimerType.HTTP_DOWNSTREAM_STREAM_IDLE: HTTP_DOWNSTREAM_STREAM_IDLE ⁣Adjusts the idle timer for HTTP streams initiated by downstream clients. This affects the value of :ref:`RouteAction.idle_timeout ` and :ref:`HttpConnectionManager.stream_idle_timeout ` .. _envoy_v3_api_enum_value_config.overload.v3.ScaleTimersOverloadActionConfig.TimerType.TRANSPORT_SOCKET_CONNECT: 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 :ref:`FilterChain.transport_socket_connect_timeout `. .. _envoy_v3_api_msg_config.overload.v3.OverloadAction: config.overload.v3.OverloadAction --------------------------------- :repo:`[config.overload.v3.OverloadAction proto] ` .. code-block:: json { "name": "...", "triggers": [], "typed_config": "{...}" } .. _envoy_v3_api_field_config.overload.v3.OverloadAction.name: 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. .. _envoy_v3_api_field_config.overload.v3.OverloadAction.triggers: triggers (**repeated** :ref:`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. .. _envoy_v3_api_field_config.overload.v3.OverloadAction.typed_config: typed_config (`Any `_) Configuration for the action being instantiated. .. _envoy_v3_api_msg_config.overload.v3.BufferFactoryConfig: config.overload.v3.BufferFactoryConfig -------------------------------------- :repo:`[config.overload.v3.BufferFactoryConfig proto] ` Configuration for which accounts the WatermarkBuffer Factories should track. .. code-block:: json { "minimum_account_to_track_power_of_two": "..." } .. _envoy_v3_api_field_config.overload.v3.BufferFactoryConfig.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. .. _envoy_v3_api_msg_config.overload.v3.OverloadManager: config.overload.v3.OverloadManager ---------------------------------- :repo:`[config.overload.v3.OverloadManager proto] ` .. code-block:: json { "refresh_interval": "{...}", "resource_monitors": [], "actions": [], "buffer_factory_config": "{...}" } .. _envoy_v3_api_field_config.overload.v3.OverloadManager.refresh_interval: refresh_interval (`Duration `_) The interval for refreshing resource usage. .. _envoy_v3_api_field_config.overload.v3.OverloadManager.resource_monitors: resource_monitors (**repeated** :ref:`config.overload.v3.ResourceMonitor `, *REQUIRED*) The set of resources to monitor. .. _envoy_v3_api_field_config.overload.v3.OverloadManager.actions: actions (**repeated** :ref:`config.overload.v3.OverloadAction `) The set of overload actions. .. _envoy_v3_api_field_config.overload.v3.OverloadManager.buffer_factory_config: buffer_factory_config (:ref:`config.overload.v3.BufferFactoryConfig `) Configuration for buffer factory.