|
|
|
@ -22,6 +22,7 @@ |
|
|
|
|
#include <vector> |
|
|
|
|
|
|
|
|
|
#include "absl/cleanup/cleanup.h" |
|
|
|
|
#include "absl/functional/function_ref.h" |
|
|
|
|
#include "absl/log/check.h" |
|
|
|
|
#include "absl/log/log.h" |
|
|
|
|
#include "absl/strings/string_view.h" |
|
|
|
@ -1095,21 +1096,19 @@ std::string LrsClient::CreateLrsInitialRequest() { |
|
|
|
|
|
|
|
|
|
namespace { |
|
|
|
|
|
|
|
|
|
void MaybeAddLoadMetric( |
|
|
|
|
void MaybeAddUnnamedMetric( |
|
|
|
|
const LrsApiContext& context, |
|
|
|
|
envoy_config_endpoint_v3_UpstreamLocalityStats* output, |
|
|
|
|
absl::string_view metric_name, |
|
|
|
|
const LrsClient::ClusterLocalityStats::BackendMetric& backend_metric) { |
|
|
|
|
const LrsClient::ClusterLocalityStats::BackendMetric& backend_metric, |
|
|
|
|
absl::FunctionRef<envoy_config_endpoint_v3_UnnamedEndpointLoadMetricStats*( |
|
|
|
|
envoy_config_endpoint_v3_UpstreamLocalityStats*, upb_Arena*)> |
|
|
|
|
add_field, |
|
|
|
|
envoy_config_endpoint_v3_UpstreamLocalityStats* output) { |
|
|
|
|
if (backend_metric.IsZero()) return; |
|
|
|
|
envoy_config_endpoint_v3_EndpointLoadMetricStats* load_metric = |
|
|
|
|
envoy_config_endpoint_v3_UpstreamLocalityStats_add_load_metric_stats( |
|
|
|
|
output, context.arena); |
|
|
|
|
envoy_config_endpoint_v3_EndpointLoadMetricStats_set_metric_name( |
|
|
|
|
load_metric, StdStringToUpbString(metric_name)); |
|
|
|
|
envoy_config_endpoint_v3_EndpointLoadMetricStats_set_num_requests_finished_with_metric( |
|
|
|
|
load_metric, backend_metric.num_requests_finished_with_metric); |
|
|
|
|
envoy_config_endpoint_v3_EndpointLoadMetricStats_set_total_metric_value( |
|
|
|
|
load_metric, backend_metric.total_metric_value); |
|
|
|
|
auto* metric_proto = add_field(output, context.arena); |
|
|
|
|
envoy_config_endpoint_v3_UnnamedEndpointLoadMetricStats_set_num_requests_finished_with_metric( |
|
|
|
|
metric_proto, backend_metric.num_requests_finished_with_metric); |
|
|
|
|
envoy_config_endpoint_v3_UnnamedEndpointLoadMetricStats_set_total_metric_value( |
|
|
|
|
metric_proto, backend_metric.total_metric_value); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void LocalityStatsPopulate( |
|
|
|
@ -1143,17 +1142,31 @@ void LocalityStatsPopulate( |
|
|
|
|
envoy_config_endpoint_v3_UpstreamLocalityStats_set_total_issued_requests( |
|
|
|
|
output, snapshot.total_issued_requests); |
|
|
|
|
// Add backend metrics.
|
|
|
|
|
MaybeAddLoadMetric(context, output, "cpu_utilization", |
|
|
|
|
snapshot.cpu_utilization); |
|
|
|
|
MaybeAddLoadMetric(context, output, "mem_utilization", |
|
|
|
|
snapshot.mem_utilization); |
|
|
|
|
MaybeAddLoadMetric(context, output, "application_utilization", |
|
|
|
|
snapshot.application_utilization); |
|
|
|
|
MaybeAddUnnamedMetric( |
|
|
|
|
context, snapshot.cpu_utilization, |
|
|
|
|
envoy_config_endpoint_v3_UpstreamLocalityStats_mutable_cpu_utilization, |
|
|
|
|
output); |
|
|
|
|
MaybeAddUnnamedMetric( |
|
|
|
|
context, snapshot.mem_utilization, |
|
|
|
|
envoy_config_endpoint_v3_UpstreamLocalityStats_mutable_mem_utilization, |
|
|
|
|
output); |
|
|
|
|
MaybeAddUnnamedMetric( |
|
|
|
|
context, snapshot.application_utilization, |
|
|
|
|
envoy_config_endpoint_v3_UpstreamLocalityStats_mutable_application_utilization, |
|
|
|
|
output); |
|
|
|
|
for (const auto& p : snapshot.backend_metrics) { |
|
|
|
|
const std::string& metric_name = p.first; |
|
|
|
|
const LrsClient::ClusterLocalityStats::BackendMetric& metric_value = |
|
|
|
|
p.second; |
|
|
|
|
MaybeAddLoadMetric(context, output, metric_name, metric_value); |
|
|
|
|
envoy_config_endpoint_v3_EndpointLoadMetricStats* load_metric = |
|
|
|
|
envoy_config_endpoint_v3_UpstreamLocalityStats_add_load_metric_stats( |
|
|
|
|
output, context.arena); |
|
|
|
|
envoy_config_endpoint_v3_EndpointLoadMetricStats_set_metric_name( |
|
|
|
|
load_metric, StdStringToUpbString(metric_name)); |
|
|
|
|
envoy_config_endpoint_v3_EndpointLoadMetricStats_set_num_requests_finished_with_metric( |
|
|
|
|
load_metric, metric_value.num_requests_finished_with_metric); |
|
|
|
|
envoy_config_endpoint_v3_EndpointLoadMetricStats_set_total_metric_value( |
|
|
|
|
load_metric, metric_value.total_metric_value); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|