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