clusters.proto 7.6 KB

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