...
1syntax = "proto3";
2
3package envoy.config.endpoint.v3;
4
5import "envoy/config/core/v3/address.proto";
6import "envoy/config/core/v3/base.proto";
7
8import "google/protobuf/duration.proto";
9import "google/protobuf/struct.proto";
10
11import "udpa/annotations/status.proto";
12import "udpa/annotations/versioning.proto";
13import "validate/validate.proto";
14
15option java_package = "io.envoyproxy.envoy.config.endpoint.v3";
16option java_outer_classname = "LoadReportProto";
17option java_multiple_files = true;
18option (udpa.annotations.file_status).package_version_status = ACTIVE;
19
20// [#protodoc-title: Load Report]
21
22// These are stats Envoy reports to the management server at a frequency defined by
23// :ref:`LoadStatsResponse.load_reporting_interval<envoy_api_field_service.load_stats.v3.LoadStatsResponse.load_reporting_interval>`.
24// Stats per upstream region/zone and optionally per subzone.
25// [#next-free-field: 9]
26message UpstreamLocalityStats {
27 option (udpa.annotations.versioning).previous_message_type =
28 "envoy.api.v2.endpoint.UpstreamLocalityStats";
29
30 // Name of zone, region and optionally endpoint group these metrics were
31 // collected from. Zone and region names could be empty if unknown.
32 core.v3.Locality locality = 1;
33
34 // The total number of requests successfully completed by the endpoints in the
35 // locality.
36 uint64 total_successful_requests = 2;
37
38 // The total number of unfinished requests
39 uint64 total_requests_in_progress = 3;
40
41 // The total number of requests that failed due to errors at the endpoint,
42 // aggregated over all endpoints in the locality.
43 uint64 total_error_requests = 4;
44
45 // The total number of requests that were issued by this Envoy since
46 // the last report. This information is aggregated over all the
47 // upstream endpoints in the locality.
48 uint64 total_issued_requests = 8;
49
50 // Stats for multi-dimensional load balancing.
51 repeated EndpointLoadMetricStats load_metric_stats = 5;
52
53 // Endpoint granularity stats information for this locality. This information
54 // is populated if the Server requests it by setting
55 // :ref:`LoadStatsResponse.report_endpoint_granularity<envoy_api_field_service.load_stats.v3.LoadStatsResponse.report_endpoint_granularity>`.
56 repeated UpstreamEndpointStats upstream_endpoint_stats = 7;
57
58 // [#not-implemented-hide:] The priority of the endpoint group these metrics
59 // were collected from.
60 uint32 priority = 6;
61}
62
63// [#next-free-field: 8]
64message UpstreamEndpointStats {
65 option (udpa.annotations.versioning).previous_message_type =
66 "envoy.api.v2.endpoint.UpstreamEndpointStats";
67
68 // Upstream host address.
69 core.v3.Address address = 1;
70
71 // Opaque and implementation dependent metadata of the
72 // endpoint. Envoy will pass this directly to the management server.
73 google.protobuf.Struct metadata = 6;
74
75 // The total number of requests successfully completed by the endpoints in the
76 // locality. These include non-5xx responses for HTTP, where errors
77 // originate at the client and the endpoint responded successfully. For gRPC,
78 // the grpc-status values are those not covered by total_error_requests below.
79 uint64 total_successful_requests = 2;
80
81 // The total number of unfinished requests for this endpoint.
82 uint64 total_requests_in_progress = 3;
83
84 // The total number of requests that failed due to errors at the endpoint.
85 // For HTTP these are responses with 5xx status codes and for gRPC the
86 // grpc-status values:
87 //
88 // - DeadlineExceeded
89 // - Unimplemented
90 // - Internal
91 // - Unavailable
92 // - Unknown
93 // - DataLoss
94 uint64 total_error_requests = 4;
95
96 // The total number of requests that were issued to this endpoint
97 // since the last report. A single TCP connection, HTTP or gRPC
98 // request or stream is counted as one request.
99 uint64 total_issued_requests = 7;
100
101 // Stats for multi-dimensional load balancing.
102 repeated EndpointLoadMetricStats load_metric_stats = 5;
103}
104
105message EndpointLoadMetricStats {
106 option (udpa.annotations.versioning).previous_message_type =
107 "envoy.api.v2.endpoint.EndpointLoadMetricStats";
108
109 // Name of the metric; may be empty.
110 string metric_name = 1;
111
112 // Number of calls that finished and included this metric.
113 uint64 num_requests_finished_with_metric = 2;
114
115 // Sum of metric values across all calls that finished with this metric for
116 // load_reporting_interval.
117 double total_metric_value = 3;
118}
119
120// Per cluster load stats. Envoy reports these stats a management server in a
121// :ref:`LoadStatsRequest<envoy_api_msg_service.load_stats.v3.LoadStatsRequest>`
122// Next ID: 7
123// [#next-free-field: 7]
124message ClusterStats {
125 option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.endpoint.ClusterStats";
126
127 message DroppedRequests {
128 option (udpa.annotations.versioning).previous_message_type =
129 "envoy.api.v2.endpoint.ClusterStats.DroppedRequests";
130
131 // Identifier for the policy specifying the drop.
132 string category = 1 [(validate.rules).string = {min_len: 1}];
133
134 // Total number of deliberately dropped requests for the category.
135 uint64 dropped_count = 2;
136 }
137
138 // The name of the cluster.
139 string cluster_name = 1 [(validate.rules).string = {min_len: 1}];
140
141 // The eds_cluster_config service_name of the cluster.
142 // It's possible that two clusters send the same service_name to EDS,
143 // in that case, the management server is supposed to do aggregation on the load reports.
144 string cluster_service_name = 6;
145
146 // Need at least one.
147 repeated UpstreamLocalityStats upstream_locality_stats = 2
148 [(validate.rules).repeated = {min_items: 1}];
149
150 // Cluster-level stats such as total_successful_requests may be computed by
151 // summing upstream_locality_stats. In addition, below there are additional
152 // cluster-wide stats.
153 //
154 // The total number of dropped requests. This covers requests
155 // deliberately dropped by the drop_overload policy and circuit breaking.
156 uint64 total_dropped_requests = 3;
157
158 // Information about deliberately dropped requests for each category specified
159 // in the DropOverload policy.
160 repeated DroppedRequests dropped_requests = 5;
161
162 // Period over which the actual load report occurred. This will be guaranteed to include every
163 // request reported. Due to system load and delays between the *LoadStatsRequest* sent from Envoy
164 // and the *LoadStatsResponse* message sent from the management server, this may be longer than
165 // the requested load reporting interval in the *LoadStatsResponse*.
166 google.protobuf.Duration load_report_interval = 4;
167}
View as plain text