service-mesh-probe/service-mesh.proto (117 lines of code) (raw):

/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ syntax = "proto3"; package skywalking.v3; option java_multiple_files = true; option java_package = "org.apache.skywalking.apm.network.servicemesh.v3"; option csharp_namespace = "SkyWalking.NetworkProtocol.V3"; option go_package = "skywalking.apache.org/repo/goapi/collect/servicemesh/v3"; import "common/Common.proto"; // Define metrics report service. The metrics format is typically representing the data model collected in the service mesh case. service ServiceMeshMetricService { rpc collect(stream ServiceMeshMetrics) returns (MeshProbeDownstream) { } } message ServiceMeshMetrics { oneof metrics { HTTPServiceMeshMetrics httpMetrics = 1; TCPServiceMeshMetrics tcpMetrics = 2; } } message HTTPServiceMeshMetric { // Start timestamp in milliseconds of this RPC, // measured between the current time and midnight, January 1, 1970 UTC. int64 startTime = 1; // End timestamp in milliseconds of this RPC, // measured between the current time and midnight, January 1, 1970 UTC. int64 endTime = 2; string sourceServiceName = 3; string sourceServiceInstance = 4; string destServiceName = 5; string destServiceInstance = 6; string endpoint = 7; int32 latency = 8; int32 responseCode = 9; // Status represents the response status of this calling. bool status = 10; Protocol protocol = 11; DetectPoint detectPoint = 12; // NONE, mTLS, or TLS string tlsMode = 13; // The sidecar/proxy internal error code, the value bases on the implementation. // The envoy internal error codes are listed here, https://www.envoyproxy.io/docs/envoy/latest/api-v2/data/accesslog/v2/accesslog.proto#data-accesslog-v2-responseflags string internalErrorCode = 14; // Internal request(response) latency is the time cost inside the Envoy sidecar proxy. // For more details, check https://www.envoyproxy.io/docs/envoy/v1.22.0/api-v3/data/accesslog/v3/accesslog.proto.html#data-accesslog-v3-accesslogcommon. // internalRequestLatencyNanos is the interval between the first downstream byte received and the first upstream byte sent int64 internalRequestLatencyNanos = 15; // internalResponseLatencyNanos = time_to_first_downstream_tx_byte - time_to_first_upstream_rx_byte; // | ... request workflow ... | upstream | ----- response -----> | proxy | ------- response -------> | client | // | time_to_first_upstream_rx_byte | // | time_to_last_downstream_tx_byte | // | internalResponseLatencyNanos | int64 internalResponseLatencyNanos = 16; repeated KeyStringValuePair sourceInstanceProperties = 17; repeated KeyStringValuePair destInstanceProperties = 18; } message HTTPServiceMeshMetrics { repeated HTTPServiceMeshMetric metrics = 1; } message TCPServiceMeshMetric { // Start timestamp in milliseconds of this RPC, // measured between the current time and midnight, January 1, 1970 UTC. int64 startTime = 1; // End timestamp in milliseconds of this RPC, // measured between the current time and midnight, January 1, 1970 UTC. int64 endTime = 2; string sourceServiceName = 3; string sourceServiceInstance = 4; string destServiceName = 5; string destServiceInstance = 6; DetectPoint detectPoint = 7; // NONE, mTLS, or TLS string tlsMode = 8; // The sidecar/proxy internal error code, the value bases on the implementation. // The envoy internal error codes are listed here, https://www.envoyproxy.io/docs/envoy/latest/api-v2/data/accesslog/v2/accesslog.proto#data-accesslog-v2-responseflags string internalErrorCode = 9; // Internal request(response) latency is the time cost inside the Envoy sidecar proxy. // For more details, check https://www.envoyproxy.io/docs/envoy/v1.22.0/api-v3/data/accesslog/v3/accesslog.proto.html#data-accesslog-v3-accesslogcommon. // internalRequestLatencyNanos is the interval between the first downstream byte received and the first upstream byte sent int64 internalRequestLatencyNanos = 10; // internalResponseLatencyNanos = time_to_first_downstream_tx_byte - time_to_first_upstream_rx_byte; // | ... request workflow ... | upstream | ----- response -----> | proxy | ------- response -------> | client | // | time_to_first_upstream_rx_byte | // | time_to_last_downstream_tx_byte | // | internalResponseLatencyNanos | int64 internalResponseLatencyNanos = 11; repeated KeyStringValuePair sourceInstanceProperties = 12; repeated KeyStringValuePair destInstanceProperties = 13; // The received data in bytes int64 receivedBytes = 14; // The sent data in bytes int64 sentBytes = 15; } message TCPServiceMeshMetrics { repeated TCPServiceMeshMetric metrics = 1; } enum Protocol { HTTP = 0; gRPC = 1; } message MeshProbeDownstream { }