Load Reporting service (LRS)

Load Reporting Service is an Envoy API to emit load reports. Envoy will initiate a bi-directional stream with a management server. Upon connecting, the management server can send a LoadStatsResponse to a node it is interested in getting the load reports for. Envoy in this node will start sending LoadStatsRequest. This is done periodically based on the load reporting interval For details, take a look at the Load Reporting Service sandbox example.

service.load_stats.v3.LoadStatsRequest

[service.load_stats.v3.LoadStatsRequest proto]

A load report Envoy sends to the management server.

  1. {
  2. "node": "{...}",
  3. "cluster_stats": []
  4. }

node

(config.core.v3.Node) Node identifier for Envoy instance.

cluster_stats

(config.endpoint.v3.ClusterStats) A list of load stats to report.

service.load_stats.v3.LoadStatsResponse

[service.load_stats.v3.LoadStatsResponse proto]

The management server sends envoy a LoadStatsResponse with all clusters it is interested in learning load stats about.

  1. {
  2. "clusters": [],
  3. "send_all_clusters": "...",
  4. "load_reporting_interval": "{...}",
  5. "report_endpoint_granularity": "..."
  6. }

clusters

(string) Clusters to report stats for. Not populated if send_all_clusters is true.

send_all_clusters

(bool) If true, the client should send all clusters it knows about. Only clients that advertise the “envoy.lrs.supports_send_all_clusters” capability in their client_features field will honor this field.

load_reporting_interval

(Duration) The minimum interval of time to collect stats over. This is only a minimum for two reasons:

  1. There may be some delay from when the timer fires until stats sampling occurs.

  2. For clusters that were already feature in the previous LoadStatsResponse, any traffic that is observed in between the corresponding previous LoadStatsRequest and this LoadStatsResponse will also be accumulated and billed to the cluster. This avoids a period of inobservability that might otherwise exists between the messages. New clusters are not subject to this consideration.

report_endpoint_granularity

(bool) Set to true if the management server supports endpoint granularity report.