...
1syntax = "proto3";
2
3package envoy.admin.v4alpha;
4
5import "envoy/admin/v4alpha/metrics.proto";
6import "envoy/config/cluster/v4alpha/circuit_breaker.proto";
7import "envoy/config/core/v4alpha/address.proto";
8import "envoy/config/core/v4alpha/base.proto";
9import "envoy/config/core/v4alpha/health_check.proto";
10import "envoy/type/v3/percent.proto";
11
12import "udpa/annotations/status.proto";
13import "udpa/annotations/versioning.proto";
14
15option java_package = "io.envoyproxy.envoy.admin.v4alpha";
16option java_outer_classname = "ClustersProto";
17option java_multiple_files = true;
18option (udpa.annotations.file_status).package_version_status = NEXT_MAJOR_VERSION_CANDIDATE;
19
20// [#protodoc-title: Clusters]
21
22// Admin endpoint uses this wrapper for `/clusters` to display cluster status information.
23// See :ref:`/clusters <operations_admin_interface_clusters>` for more information.
24message Clusters {
25 option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v3.Clusters";
26
27 // Mapping from cluster name to each cluster's status.
28 repeated ClusterStatus cluster_statuses = 1;
29}
30
31// Details an individual cluster's current status.
32// [#next-free-field: 7]
33message ClusterStatus {
34 option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v3.ClusterStatus";
35
36 // Name of the cluster.
37 string name = 1;
38
39 // Denotes whether this cluster was added via API or configured statically.
40 bool added_via_api = 2;
41
42 // The success rate threshold used in the last interval.
43 // If
44 // :ref:`outlier_detection.split_external_local_origin_errors<envoy_api_field_config.cluster.v4alpha.OutlierDetection.split_external_local_origin_errors>`
45 // is *false*, all errors: externally and locally generated were used to calculate the threshold.
46 // If
47 // :ref:`outlier_detection.split_external_local_origin_errors<envoy_api_field_config.cluster.v4alpha.OutlierDetection.split_external_local_origin_errors>`
48 // is *true*, only externally generated errors were used to calculate the threshold.
49 // The threshold is used to eject hosts based on their success rate. See
50 // :ref:`Cluster outlier detection <arch_overview_outlier_detection>` documentation for details.
51 //
52 // Note: this field may be omitted in any of the three following cases:
53 //
54 // 1. There were not enough hosts with enough request volume to proceed with success rate based
55 // outlier ejection.
56 // 2. The threshold is computed to be < 0 because a negative value implies that there was no
57 // threshold for that interval.
58 // 3. Outlier detection is not enabled for this cluster.
59 type.v3.Percent success_rate_ejection_threshold = 3;
60
61 // Mapping from host address to the host's current status.
62 repeated HostStatus host_statuses = 4;
63
64 // The success rate threshold used in the last interval when only locally originated failures were
65 // taken into account and externally originated errors were treated as success.
66 // This field should be interpreted only when
67 // :ref:`outlier_detection.split_external_local_origin_errors<envoy_api_field_config.cluster.v4alpha.OutlierDetection.split_external_local_origin_errors>`
68 // is *true*. The threshold is used to eject hosts based on their success rate.
69 // See :ref:`Cluster outlier detection <arch_overview_outlier_detection>` documentation for
70 // details.
71 //
72 // Note: this field may be omitted in any of the three following cases:
73 //
74 // 1. There were not enough hosts with enough request volume to proceed with success rate based
75 // outlier ejection.
76 // 2. The threshold is computed to be < 0 because a negative value implies that there was no
77 // threshold for that interval.
78 // 3. Outlier detection is not enabled for this cluster.
79 type.v3.Percent local_origin_success_rate_ejection_threshold = 5;
80
81 // :ref:`Circuit breaking <arch_overview_circuit_break>` settings of the cluster.
82 config.cluster.v4alpha.CircuitBreakers circuit_breakers = 6;
83}
84
85// Current state of a particular host.
86// [#next-free-field: 10]
87message HostStatus {
88 option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v3.HostStatus";
89
90 // Address of this host.
91 config.core.v4alpha.Address address = 1;
92
93 // List of stats specific to this host.
94 repeated SimpleMetric stats = 2;
95
96 // The host's current health status.
97 HostHealthStatus health_status = 3;
98
99 // Request success rate for this host over the last calculated interval.
100 // If
101 // :ref:`outlier_detection.split_external_local_origin_errors<envoy_api_field_config.cluster.v4alpha.OutlierDetection.split_external_local_origin_errors>`
102 // is *false*, all errors: externally and locally generated were used in success rate
103 // calculation. If
104 // :ref:`outlier_detection.split_external_local_origin_errors<envoy_api_field_config.cluster.v4alpha.OutlierDetection.split_external_local_origin_errors>`
105 // is *true*, only externally generated errors were used in success rate calculation.
106 // See :ref:`Cluster outlier detection <arch_overview_outlier_detection>` documentation for
107 // details.
108 //
109 // Note: the message will not be present if host did not have enough request volume to calculate
110 // success rate or the cluster did not have enough hosts to run through success rate outlier
111 // ejection.
112 type.v3.Percent success_rate = 4;
113
114 // The host's weight. If not configured, the value defaults to 1.
115 uint32 weight = 5;
116
117 // The hostname of the host, if applicable.
118 string hostname = 6;
119
120 // The host's priority. If not configured, the value defaults to 0 (highest priority).
121 uint32 priority = 7;
122
123 // Request success rate for this host over the last calculated
124 // interval when only locally originated errors are taken into account and externally originated
125 // errors were treated as success.
126 // This field should be interpreted only when
127 // :ref:`outlier_detection.split_external_local_origin_errors<envoy_api_field_config.cluster.v4alpha.OutlierDetection.split_external_local_origin_errors>`
128 // is *true*.
129 // See :ref:`Cluster outlier detection <arch_overview_outlier_detection>` documentation for
130 // details.
131 //
132 // Note: the message will not be present if host did not have enough request volume to calculate
133 // success rate or the cluster did not have enough hosts to run through success rate outlier
134 // ejection.
135 type.v3.Percent local_origin_success_rate = 8;
136
137 // locality of the host.
138 config.core.v4alpha.Locality locality = 9;
139}
140
141// Health status for a host.
142// [#next-free-field: 7]
143message HostHealthStatus {
144 option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v3.HostHealthStatus";
145
146 // The host is currently failing active health checks.
147 bool failed_active_health_check = 1;
148
149 // The host is currently considered an outlier and has been ejected.
150 bool failed_outlier_check = 2;
151
152 // The host is currently being marked as degraded through active health checking.
153 bool failed_active_degraded_check = 4;
154
155 // The host has been removed from service discovery, but is being stabilized due to active
156 // health checking.
157 bool pending_dynamic_removal = 5;
158
159 // The host has not yet been health checked.
160 bool pending_active_hc = 6;
161
162 // Health status as reported by EDS. Note: only HEALTHY and UNHEALTHY are currently supported
163 // here.
164 // [#comment:TODO(mrice32): pipe through remaining EDS health status possibilities.]
165 config.core.v4alpha.HealthStatus eds_health_status = 3;
166}
View as plain text