.. _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.downstream_connections <extension_envoy.resource_monitors.downstream_connections>` - :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 scalar values between 0 and 1 or saturated. Listeners are notified when the overload action changes state. An overload manager action can only have one trigger for a given resource e.g. :ref:`Trigger.name <envoy_v3_api_field_config.overload.v3.Trigger.name>` must be unique in this list. .. _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.LoadShedPoint: config.overload.v3.LoadShedPoint -------------------------------- :repo:`[config.overload.v3.LoadShedPoint proto] <api/envoy/config/overload/v3/overload.proto#L151>` A point within the connection or request lifecycle that provides context on whether to shed load at that given stage for the current entity at the point. .. code-block:: json :force: { "name": ..., "triggers": [] } .. _envoy_v3_api_field_config.overload.v3.LoadShedPoint.name: name (`string <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_, *REQUIRED*) This is just a well-known string for the LoadShedPoint. Deployment specific LoadShedPoints e.g. within a custom extension should be prefixed by the company / deployment name to avoid colliding with any open source LoadShedPoints. .. _envoy_v3_api_field_config.overload.v3.LoadShedPoint.triggers: triggers (**repeated** :ref:`config.overload.v3.Trigger <envoy_v3_api_msg_config.overload.v3.Trigger>`, *REQUIRED*) A set of triggers for this LoadShedPoint. The LoadShedPoint will use the the maximum state of all triggers, which can be scalar values between 0 and 1 or saturated. A LoadShedPoint can only have one trigger for a given resource e.g. :ref:`Trigger.name <envoy_v3_api_field_config.overload.v3.Trigger.name>` must be unique in this list. .. _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#L169>` 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#L188>` .. code-block:: json :force: { "refresh_interval": {...}, "resource_monitors": [], "actions": [], "loadshed_points": [], "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.loadshed_points: loadshed_points (**repeated** :ref:`config.overload.v3.LoadShedPoint <envoy_v3_api_msg_config.overload.v3.LoadShedPoint>`) The set of load shed points. .. _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.