.. _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] ` .. code-block:: json :force: { "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 :force: { "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 :force: { "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 :force: { "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 :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 `, *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 :force: { "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 :force: { "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 :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 `_) 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 :force: { "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.