You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
148 lines
5.8 KiB
148 lines
5.8 KiB
syntax = "proto3"; |
|
|
|
package envoy.api.v2.endpoint; |
|
|
|
import "envoy/api/v2/core/address.proto"; |
|
import "envoy/api/v2/core/base.proto"; |
|
|
|
import "google/protobuf/duration.proto"; |
|
|
|
import "validate/validate.proto"; |
|
import "gogoproto/gogo.proto"; |
|
|
|
// These are stats Envoy reports to GLB every so often. Report frequency is |
|
// defined by |
|
// :ref:`LoadStatsResponse.load_reporting_interval<envoy_api_field_load_stats.LoadStatsResponse.load_reporting_interval>`. |
|
// Stats per upstream region/zone and optionally per subzone. |
|
// [#not-implemented-hide:] Not configuration. TBD how to doc proto APIs. |
|
message UpstreamLocalityStats { |
|
// Name of zone, region and optionally endpoint group these metrics were |
|
// collected from. Zone and region names could be empty if unknown. |
|
core.Locality locality = 1; |
|
|
|
// The total number of requests sent by this Envoy since the last report. This |
|
// information is aggregated over all the upstream Endpoints. total_requests |
|
// can be inferred from: |
|
// |
|
// .. code-block:: none |
|
// |
|
// total_requests = total_successful_requests + total_requests_in_progress + |
|
// total_error_requests |
|
// |
|
// The total number of requests successfully completed by the endpoints in the |
|
// locality. |
|
uint64 total_successful_requests = 2; |
|
|
|
// The total number of unfinished requests |
|
uint64 total_requests_in_progress = 3; |
|
|
|
// The total number of requests that failed due to errors at the endpoint, |
|
// aggregated over all endpoints in the locality. |
|
uint64 total_error_requests = 4; |
|
|
|
// Stats for multi-dimensional load balancing. |
|
repeated EndpointLoadMetricStats load_metric_stats = 5; |
|
|
|
// Endpoint granularity stats information for this locality. This information |
|
// is populated if the Server requests it by setting |
|
// :ref:`LoadStatsResponse.report_endpoint_granularity<envoy_api_field_load_stats.LoadStatsResponse.report_endpoint_granularity>`. |
|
repeated UpstreamEndpointStats upstream_endpoint_stats = 7; |
|
|
|
// [#not-implemented-hide:] The priority of the endpoint group these metrics |
|
// were collected from. |
|
uint32 priority = 6; |
|
} |
|
|
|
message UpstreamEndpointStats { |
|
// Upstream host address. |
|
core.Address address = 1; |
|
|
|
// The total number of requests successfully completed by the endpoint. A |
|
// single HTTP or gRPC request or stream is counted as one request. A TCP |
|
// connection is also treated as one request. There is no explicit |
|
// total_requests field below for an endpoint, but it may be inferred from: |
|
// |
|
// .. code-block:: none |
|
// |
|
// total_requests = total_successful_requests + total_requests_in_progress + |
|
// total_error_requests |
|
// |
|
// The total number of requests successfully completed by the endpoints in the |
|
// locality. These include non-5xx responses for HTTP, where errors |
|
// originate at the client and the endpoint responded successfully. For gRPC, |
|
// the grpc-status values are those not covered by total_error_requests below. |
|
uint64 total_successful_requests = 2; |
|
|
|
// The total number of unfinished requests for this endpoint. |
|
uint64 total_requests_in_progress = 3; |
|
|
|
// The total number of requests that failed due to errors at the endpoint. |
|
// For HTTP these are responses with 5xx status codes and for gRPC the |
|
// grpc-status values: |
|
// |
|
// - DeadlineExceeded |
|
// - Unimplemented |
|
// - Internal |
|
// - Unavailable |
|
// - Unknown |
|
// - DataLoss |
|
uint64 total_error_requests = 4; |
|
|
|
// Stats for multi-dimensional load balancing. |
|
repeated EndpointLoadMetricStats load_metric_stats = 5; |
|
} |
|
|
|
// [#not-implemented-hide:] Not configuration. TBD how to doc proto APIs. |
|
message EndpointLoadMetricStats { |
|
// Name of the metric; may be empty. |
|
string metric_name = 1; |
|
|
|
// Number of calls that finished and included this metric. |
|
uint64 num_requests_finished_with_metric = 2; |
|
|
|
// Sum of metric values across all calls that finished with this metric for |
|
// load_reporting_interval. |
|
double total_metric_value = 3; |
|
} |
|
|
|
// Per cluster load stats. Envoy reports these stats a management server in a |
|
// :ref:`LoadStatsRequest<envoy_api_msg_load_stats.LoadStatsRequest>` |
|
// [#not-implemented-hide:] Not configuration. TBD how to doc proto APIs. |
|
message ClusterStats { |
|
// The name of the cluster. |
|
string cluster_name = 1 [(validate.rules).string.min_bytes = 1]; |
|
|
|
// Need at least one. |
|
repeated UpstreamLocalityStats upstream_locality_stats = 2 |
|
[(validate.rules).repeated .min_items = 1]; |
|
|
|
// Cluster-level stats such as total_successful_requests may be computed by |
|
// summing upstream_locality_stats. In addition, below there are additional |
|
// cluster-wide stats. The following total_requests equality holds at the |
|
// cluster-level: |
|
// |
|
// .. code-block:: none |
|
// |
|
// sum_locality(total_successful_requests) + sum_locality(total_requests_in_progress) + |
|
// sum_locality(total_error_requests) + total_dropped_requests` |
|
// |
|
// The total number of dropped requests. This covers requests |
|
// deliberately dropped by the drop_overload policy and circuit breaking. |
|
uint64 total_dropped_requests = 3; |
|
|
|
message DroppedRequests { |
|
// Identifier for the policy specifying the drop. |
|
string category = 1 [(validate.rules).string.min_bytes = 1]; |
|
// Total number of deliberately dropped requests for the category. |
|
uint64 dropped_count = 2; |
|
} |
|
// Information about deliberately dropped requests for each category specified |
|
// in the DropOverload policy. |
|
repeated DroppedRequests dropped_requests = 5; |
|
|
|
// Period over which the actual load report occurred. This will be guaranteed to include every |
|
// request reported. Due to system load and delays between the *LoadStatsRequest* sent from Envoy |
|
// and the *LoadStatsResponse* message sent from the management server, this may be longer than |
|
// the requested load reporting interval in the *LoadStatsResponse*. |
|
google.protobuf.Duration load_report_interval = 4; |
|
}
|
|
|