The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#) https://grpc.io/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Eugene Ostroukhov d9e4d1302e
[examples] Implement custom metrics reporting from server (#35218)
1 year ago
..
BUILD [examples] Implement custom metrics reporting from server (#35218) 1 year ago
README.md [examples] Implement custom metrics reporting from server (#35218) 1 year ago
orca_server.cc [examples] Implement custom metrics reporting from server (#35218) 1 year ago

README.md

gRPC Custom Metrics Example

You can find a complete set of instructions for building gRPC and running the examples in the C++ Quick Start.

This example shows how to implement a server that provides custom metrics usable by custom load balancing policies.

Server needs to be setup with metrics recorder and Orca service for sending these metrics to a client:

GreeterServiceImpl service;
// Setup custom metrics recording
auto server_metric_recorder =
    grpc::experimental::ServerMetricRecorder::Create();
grpc::experimental::OrcaService orca_service(
    server_metric_recorder.get(),
    grpc::experimental::OrcaService::Options().set_min_report_duration(
        absl::Seconds(0.1)));
builder.RegisterService(&orca_service);
grpc::ServerBuilder::experimental_type(&builder).EnableCallMetricRecording(
    nullptr);

Afterwards per-request metrics can be reported from the gRPC service implementation using the metric recorder from the request context:

auto recorder = context->ExperimentalGetCallMetricRecorder();
if (recorder == nullptr) {
  return Status(grpc::StatusCode::INTERNAL,
                "Unable to access metrics recorder. Make sure "
                "EnableCallMetricRecording had been called.");
}
recorder->RecordCpuUtilizationMetric(0.5);

Out of band metrics can be reported using the server_metric_recorder directly:

server_metric_recorder->SetCpuUtilization(0.75);