linkerd2/proto/public/api.proto

138 lines
2.4 KiB
Protocol Buffer

syntax = "proto3";
package conduit.public;
import "google/protobuf/duration.proto";
import "common/common.proto";
enum MetricName {
REQUEST_RATE = 0;
LATENCY = 1;
SUCCESS_RATE = 2;
}
enum TimeWindow {
TEN_SEC = 0;
ONE_MIN = 1;
TEN_MIN = 2;
ONE_HOUR = 3;
}
enum AggregationType {
TARGET_POD = 0;
TARGET_DEPLOY = 1;
SOURCE_POD = 2;
SOURCE_DEPLOY = 3;
MESH = 4;
PATH = 5;
}
enum HistogramLabel {
MIN = 0;
P50 = 1;
P95 = 2;
P99 = 3;
MAX = 4;
}
message HistogramValue {
HistogramLabel label = 1;
int64 value = 2;
}
message Histogram {
repeated HistogramValue values = 1;
}
message MetricValue {
oneof value {
int64 counter = 1;
double gauge = 2;
Histogram histogram = 3;
}
}
message MetricDatapoint {
MetricValue value = 1;
int64 timestamp_ms = 2;
}
message MetricSeries {
MetricName name = 1;
MetricMetadata metadata = 2;
repeated MetricDatapoint datapoints = 3;
}
message MetricMetadata {
string targetPod = 1;
string targetDeploy = 2;
string sourcePod = 3;
string sourceDeploy = 4;
string component = 5;
string path = 6;
}
message MetricResponse {
repeated MetricSeries metrics = 1;
}
message MetricRequest {
repeated MetricName metrics = 1;
TimeWindow window = 2;
AggregationType groupBy = 3;
MetricMetadata filterBy = 4;
bool summarize = 5;
}
message Empty {}
message VersionInfo {
string goVersion = 1;
string buildDate = 2;
string releaseVersion = 3;
}
message ListPodsResponse {
repeated Pod pods = 1;
}
message Pod {
string name = 1;
string podIP = 2;
string deployment = 3;
string status = 4;
bool added = 5; // true if this pod has a proxy sidecar (data plane)
google.protobuf.Duration sinceLastReport = 6;
string controllerNamespace = 7; // namespace of contoller this pod reports to
bool controlPlane = 8; // true if this pod is part of the control plane
}
message TapRequest {
oneof target {
string pod = 1;
string deployment = 2;
}
// validation of these fields happens on the server
float maxRps = 3;
uint32 toPort = 4;
string toIP = 5;
uint32 fromPort = 6;
string fromIP = 7;
string scheme = 8;
string method = 9;
string authority = 10;
string path = 11;
}
message ApiError {
string error = 1;
}
service Api {
rpc Stat(MetricRequest) returns (MetricResponse) {}
rpc Version(Empty) returns (VersionInfo) {}
rpc ListPods(Empty) returns (ListPodsResponse) {}
rpc Tap(TapRequest) returns (stream common.TapEvent) {}
}