.. _envoy_v3_api_file_envoy/config/overload/v3/overload.proto:

Overload Manager (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] <api/envoy/config/overload/v3/overload.proto#L26>`


.. code-block:: json
  :force:

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

.. _envoy_v3_api_field_config.overload.v3.ResourceMonitor.name:

name
  (`string <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_, *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 <extension_category_envoy.resource_monitors>` for the default list of available resource monitor.
  
  
.. _envoy_v3_api_field_config.overload.v3.ResourceMonitor.typed_config:

typed_config
  (`Any <https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#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 <extension_envoy.resource_monitors.fixed_heap>`
  
    - :ref:`envoy.resource_monitors.injected_resource <extension_envoy.resource_monitors.injected_resource>`
  
  
  
  
  


.. _envoy_v3_api_msg_config.overload.v3.ThresholdTrigger:

config.overload.v3.ThresholdTrigger
-----------------------------------

:repo:`[config.overload.v3.ThresholdTrigger proto] <api/envoy/config/overload/v3/overload.proto#L46>`


.. code-block:: json
  :force:

  {
    "value": ...
  }

.. _envoy_v3_api_field_config.overload.v3.ThresholdTrigger.value:

value
  (`double <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_) 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] <api/envoy/config/overload/v3/overload.proto#L55>`


.. code-block:: json
  :force:

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

.. _envoy_v3_api_field_config.overload.v3.ScaledTrigger.scaling_threshold:

scaling_threshold
  (`double <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_) If the resource pressure is greater than this value, the trigger will be in the
  :ref:`scaling <arch_overview_overload_manager-triggers-state>` state with value
  ``(pressure - scaling_threshold) / (saturation_threshold - scaling_threshold)``.
  
  
.. _envoy_v3_api_field_config.overload.v3.ScaledTrigger.saturation_threshold:

saturation_threshold
  (`double <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_) 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] <api/envoy/config/overload/v3/overload.proto#L65>`


.. code-block:: json
  :force:

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

.. _envoy_v3_api_field_config.overload.v3.Trigger.name:

name
  (`string <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_, *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 <envoy_v3_api_msg_config.overload.v3.ThresholdTrigger>`) 
  
  
  Precisely one of :ref:`threshold <envoy_v3_api_field_config.overload.v3.Trigger.threshold>`, :ref:`scaled <envoy_v3_api_field_config.overload.v3.Trigger.scaled>` must be set.
  
.. _envoy_v3_api_field_config.overload.v3.Trigger.scaled:

scaled
  (:ref:`config.overload.v3.ScaledTrigger <envoy_v3_api_msg_config.overload.v3.ScaledTrigger>`) 
  
  
  Precisely one of :ref:`threshold <envoy_v3_api_field_config.overload.v3.Trigger.threshold>`, :ref:`scaled <envoy_v3_api_field_config.overload.v3.Trigger.scaled>` must be set.
  


.. _envoy_v3_api_msg_config.overload.v3.ScaleTimersOverloadActionConfig:

config.overload.v3.ScaleTimersOverloadActionConfig
--------------------------------------------------

:repo:`[config.overload.v3.ScaleTimersOverloadActionConfig proto] <api/envoy/config/overload/v3/overload.proto#L84>`

Typed configuration for the "envoy.overload_actions.reduce_timeouts" action. See
:ref:`the docs <config_overload_manager_reducing_timeouts>` for an example of how to configure
the action with different timeouts and minimum values.

.. code-block:: json
  :force:

  {
    "timer_scale_factors": []
  }

.. _envoy_v3_api_field_config.overload.v3.ScaleTimersOverloadActionConfig.timer_scale_factors:

timer_scale_factors
  (**repeated** :ref:`config.overload.v3.ScaleTimersOverloadActionConfig.ScaleTimer <envoy_v3_api_msg_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] <api/envoy/config/overload/v3/overload.proto#L107>`


.. code-block:: json
  :force:

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

.. _envoy_v3_api_field_config.overload.v3.ScaleTimersOverloadActionConfig.ScaleTimer.timer:

timer
  (:ref:`config.overload.v3.ScaleTimersOverloadActionConfig.TimerType <envoy_v3_api_enum_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 <https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration>`_) Sets the minimum duration as an absolute value.
  
  
  
  Precisely one of :ref:`min_timeout <envoy_v3_api_field_config.overload.v3.ScaleTimersOverloadActionConfig.ScaleTimer.min_timeout>`, :ref:`min_scale <envoy_v3_api_field_config.overload.v3.ScaleTimersOverloadActionConfig.ScaleTimer.min_scale>` must be set.
  
.. _envoy_v3_api_field_config.overload.v3.ScaleTimersOverloadActionConfig.ScaleTimer.min_scale:

min_scale
  (:ref:`type.v3.Percent <envoy_v3_api_msg_type.v3.Percent>`) Sets the minimum duration as a percentage of the maximum value.
  
  
  
  Precisely one of :ref:`min_timeout <envoy_v3_api_field_config.overload.v3.ScaleTimersOverloadActionConfig.ScaleTimer.min_timeout>`, :ref:`min_scale <envoy_v3_api_field_config.overload.v3.ScaleTimersOverloadActionConfig.ScaleTimer.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] <api/envoy/config/overload/v3/overload.proto#L85>`


.. _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_field_config.core.v3.HttpProtocolOptions.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 <envoy_v3_api_field_config.route.v3.RouteAction.idle_timeout>` and
  :ref:`HttpConnectionManager.stream_idle_timeout
  <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.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_field_config.listener.v3.FilterChain.transport_socket_connect_timeout>`.
  
  

.. _envoy_v3_api_msg_config.overload.v3.OverloadAction:

config.overload.v3.OverloadAction
---------------------------------

:repo:`[config.overload.v3.OverloadAction proto] <api/envoy/config/overload/v3/overload.proto#L126>`


.. code-block:: json
  :force:

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

.. _envoy_v3_api_field_config.overload.v3.OverloadAction.name:

name
  (`string <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_, *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 <envoy_v3_api_msg_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 <https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#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] <api/envoy/config/overload/v3/overload.proto#L146>`

Configuration for which accounts the WatermarkBuffer Factories should
track.

.. code-block:: json
  :force:

  {
    "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 <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_) 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] <api/envoy/config/overload/v3/overload.proto#L164>`


.. code-block:: json
  :force:

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

.. _envoy_v3_api_field_config.overload.v3.OverloadManager.refresh_interval:

refresh_interval
  (`Duration <https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#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 <envoy_v3_api_msg_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 <envoy_v3_api_msg_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 <envoy_v3_api_msg_config.overload.v3.BufferFactoryConfig>`) Configuration for buffer factory.