syntax = "proto3"; // [#proto-status: draft] package envoy.service.metrics.v2; option go_package = "v2"; import "envoy/api/v2/core/base.proto"; import "metrics.proto"; import "validate/validate.proto"; // Service for streaming metrics to server that consumes the metrics data. It uses Prometheus metric // data model as a standard to represent metrics information. service MetricsService { // Envoy will connect and send StreamMetricsMessage messages forever. It does not expect any // response to be sent as nothing would be done in the case of failure. rpc StreamMetrics(stream StreamMetricsMessage) returns (StreamMetricsResponse) { } } message StreamMetricsResponse { } message StreamMetricsMessage { message Identifier { // The node sending metrics over the stream. envoy.api.v2.core.Node node = 1 [(validate.rules).message.required = true]; } // Identifier data effectively is a structured metadata. As a performance optimization this will // only be sent in the first message on the stream. Identifier identifier = 1; // A list of metric entries repeated io.prometheus.client.MetricFamily envoy_metrics = 2; }