syntax = "proto3"; package envoy.config.overload.v2alpha; option go_package = "v2alpha"; import "google/protobuf/duration.proto"; import "google/protobuf/struct.proto"; import "validate/validate.proto"; // [#protodoc-title: Overload Manager] // 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. message ResourceMonitor { // The name of the resource monitor to instantiate. Must match a registered // resource monitor type. The built-in resource monitors are: // // * :ref:`envoy.resource_monitors.fixed_heap // ` // * :ref:`envoy.resource_monitors.injected_resource // ` string name = 1 [(validate.rules).string.min_bytes = 1]; // Configuration for the resource monitor being instantiated. google.protobuf.Struct config = 2; } message ThresholdTrigger { // If the resource pressure is greater than or equal to this value, the trigger // will fire. double value = 1 [(validate.rules).double = {gte: 0, lte: 1}]; } message Trigger { // The name of the resource this is a trigger for. string name = 1 [(validate.rules).string.min_bytes = 1]; oneof trigger_oneof { option (validate.required) = true; ThresholdTrigger threshold = 2; } } message OverloadAction { // 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. string name = 1 [(validate.rules).string.min_bytes = 1]; // A set of triggers for this action. If any of these triggers fire the overload action // is activated. Listeners are notified when the overload action transitions from // inactivated to activated, or vice versa. repeated Trigger triggers = 2 [(validate.rules).repeated .min_items = 1]; } message OverloadManager { // The interval for refreshing resource usage. google.protobuf.Duration refresh_interval = 1; // The set of resources to monitor. repeated ResourceMonitor resource_monitors = 2 [(validate.rules).repeated .min_items = 1]; // The set of overload actions. repeated OverloadAction actions = 3; }