mirror of https://github.com/linkerd/linkerd2.git
138 lines
2.4 KiB
Protocol Buffer
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) {}
|
|
}
|