未验证 提交 e3283101 编写于 作者: wu-sheng's avatar wu-sheng 提交者: GitHub

V3 trace protocol (#22)

* New v3 protocol
上级 9abe8e1a
......@@ -18,8 +18,6 @@
syntax = "proto3";
package skywalking.network.protocol.browser;
option java_multiple_files = true;
option java_package = "org.apache.skywalking.apm.network.language.agent";
......@@ -29,56 +27,54 @@ import "common/common.proto";
service BrowserPerfService {
// report once per page
rpc collectPerfData (BrowserPerfData) returns (skywalking.network.protocol.common.Commands) {
rpc collectPerfData (BrowserPerfData) returns (Commands) {
}
// report one or more error logs for pages, could report multiple times.
rpc collectErrorLogs (stream BrowserErrorLog) returns (skywalking.network.protocol.common.Commands) {
rpc collectErrorLogs (stream BrowserErrorLog) returns (Commands) {
}
}
message BrowserPerfData {
int32 serviceId = 1;
string service = 1;
// Service version in browser is the Instance concept in the backend.
int32 serviceVersionId = 2;
string serviceVersion = 2;
// Perf data time
int64 time = 3;
// Page path in browser is the endpoint concept in the backend
// Page path in the browser, mostly it is URI, without parameter
string pagePath = 4;
int32 pagePathId = 5;
// Unit of all time related field should be `ms`.
int32 redirectTime = 6;
int32 dnsTime = 7;
int32 reqTime = 8;
int32 redirectTime = 5;
int32 dnsTime = 6;
int32 reqTime = 7;
// analysis dom tree time
int32 domAnalysisTime = 9;
int32 domReadyTime = 10;
int32 domAnalysisTime = 8;
int32 domReadyTime = 9;
// page blank time
int32 blankTime = 11;
int32 blankTime = 10;
}
message BrowserErrorLog {
// UUID
string uniqueId = 1;
int32 serviceId = 2;
string service = 2;
// Service version in browser is the Instance concept in the backend.
int32 serviceVersionId = 3;
string serviceVersion = 3;
// Error log time
int64 time = 4;
// Page path in browser is the endpoint concept in the backend
// Page path in the browser, mostly it is URI, without parameter
string pagePath = 5;
int32 pagePathId = 6;
ErrorCategory category = 7;
string grade = 8;
string message = 9;
int32 line = 10;
int32 col = 11;
string stack = 12;
string errorUrl = 13;
ErrorCategory category = 6;
string grade = 7;
string message = 8;
int32 line = 9;
int32 col = 10;
string stack = 11;
string errorUrl = 12;
// Then the PV with error is only calculated when firstReportedError is true.
bool firstReportedError = 14;
bool firstReportedError = 13;
}
enum ErrorCategory {
......
......@@ -18,8 +18,6 @@
syntax = "proto3";
package skywalking.network.protocol.common;
option java_multiple_files = true;
option java_package = "org.apache.skywalking.apm.network.common";
option csharp_namespace = "SkyWalking.NetworkProtocol";
......@@ -29,11 +27,6 @@ message KeyStringValuePair {
string value = 2;
}
message KeyIntValuePair {
string key = 1;
int32 value = 2;
}
message CPU {
double usagePercent = 2;
}
......
/*
* 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.network.protocol.agent.v2;
option java_multiple_files = true;
option java_package = "org.apache.skywalking.apm.network.language.agent.v2";
option csharp_namespace = "SkyWalking.NetworkProtocol";
import "common/common.proto";
import "common/CLR.proto";
service CLRMetricReportService {
rpc collect (CLRMetricCollection) returns (skywalking.network.protocol.common.Commands) {
}
}
message CLRMetricCollection {
repeated skywalking.network.protocol.common.CLRMetric metrics = 1;
int32 serviceInstanceId = 2;
}
\ No newline at end of file
/*
* 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.network.protocol.agent.v2;
option java_multiple_files = true;
option java_package = "org.apache.skywalking.apm.network.language.agent.v2";
option csharp_namespace = "SkyWalking.NetworkProtocol";
import "common/common.proto";
import "common/JVM.proto";
service JVMMetricReportService {
rpc collect (JVMMetricCollection) returns (skywalking.network.protocol.common.Commands) {
}
}
message JVMMetricCollection {
repeated skywalking.network.protocol.common.JVMMetric metrics = 1;
int32 serviceInstanceId = 2;
}
/*
* 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.network.protocol.agent.v2;
option java_multiple_files = true;
option java_package = "org.apache.skywalking.apm.network.language.agent.v2";
option csharp_namespace = "SkyWalking.NetworkProtocol";
import "common/common.proto";
import "common/trace-common.proto";
service TraceSegmentReportService {
rpc collect (stream skywalking.network.protocol.common.UpstreamSegment) returns (skywalking.network.protocol.common.Commands) {
}
}
message SegmentObject {
skywalking.network.protocol.common.UniqueId traceSegmentId = 1;
repeated SpanObjectV2 spans = 2;
int32 serviceId = 3;
int32 serviceInstanceId = 4;
bool isSizeLimited = 5;
}
message SegmentReference {
skywalking.network.protocol.common.RefType refType = 1;
skywalking.network.protocol.common.UniqueId parentTraceSegmentId = 2;
int32 parentSpanId = 3;
int32 parentServiceInstanceId = 4;
string networkAddress = 5;
int32 networkAddressId = 6;
int32 entryServiceInstanceId = 7;
string entryEndpoint = 8;
int32 entryEndpointId = 9;
string parentEndpoint = 10;
int32 parentEndpointId = 11;
}
message SpanObjectV2 {
int32 spanId = 1;
int32 parentSpanId = 2;
int64 startTime = 3;
int64 endTime = 4;
repeated SegmentReference refs = 5;
int32 operationNameId = 6;
string operationName = 7;
int32 peerId = 8;
string peer = 9;
skywalking.network.protocol.common.SpanType spanType = 10;
skywalking.network.protocol.common.SpanLayer spanLayer = 11;
int32 componentId = 12;
string component = 13;
bool isError = 14;
repeated skywalking.network.protocol.common.KeyStringValuePair tags = 15;
repeated Log logs = 16;
}
message Log {
int64 time = 1;
repeated skywalking.network.protocol.common.KeyStringValuePair data = 2;
}
......@@ -18,17 +18,25 @@
syntax = "proto3";
package skywalking.network.protocol.common;
option java_multiple_files = true;
option java_package = "org.apache.skywalking.apm.network.language.agent";
option java_package = "org.apache.skywalking.apm.network.language.agent.v3";
option csharp_namespace = "SkyWalking.NetworkProtocol";
import "common/common.proto";
import "common/Common.proto";
service CLRMetricReportService {
rpc collect (CLRMetricCollection) returns (Commands) {
}
}
message CLRMetricCollection {
repeated CLRMetric metrics = 1;
int32 serviceInstanceId = 2;
}
message CLRMetric {
int64 time = 1;
skywalking.network.protocol.common.CPU cpu = 2;
CPU cpu = 2;
ClrGC gc = 3;
ClrThread thread = 4;
}
......
......@@ -18,17 +18,26 @@
syntax = "proto3";
package skywalking.network.protocol.common;
option java_multiple_files = true;
option java_package = "org.apache.skywalking.apm.network.language.agent";
option java_package = "org.apache.skywalking.apm.network.language.agent.v3";
option csharp_namespace = "SkyWalking.NetworkProtocol";
import "common/common.proto";
import "common/Common.proto";
service JVMMetricReportService {
rpc collect (JVMMetricCollection) returns (Commands) {
}
}
message JVMMetricCollection {
repeated JVMMetric metrics = 1;
string service = 2;
string serviceInstance = 3;
}
message JVMMetric {
int64 time = 1;
skywalking.network.protocol.common.CPU cpu = 2;
CPU cpu = 2;
repeated Memory memory = 3;
repeated MemoryPool memoryPool = 4;
repeated GC gc = 5;
......@@ -47,7 +56,7 @@ message MemoryPool {
int64 init = 2;
int64 max = 3;
int64 used = 4;
int64 commited = 5;
int64 committed = 5;
}
enum PoolType {
......@@ -69,3 +78,4 @@ enum GCPhrase {
NEW = 0;
OLD = 1;
}
......@@ -18,15 +18,57 @@
syntax = "proto3";
package skywalking.network.protocol.common;
option java_multiple_files = true;
option java_package = "org.apache.skywalking.apm.network.language.agent";
option java_package = "org.apache.skywalking.apm.network.language.agent.v3";
option csharp_namespace = "SkyWalking.NetworkProtocol";
message UpstreamSegment {
repeated UniqueId globalTraceIds = 1;
bytes segment = 2; // the byte array of TraceSegmentObject
import "common/Common.proto";
service TraceSegmentReportService {
rpc collect (stream SegmentObject) returns (Commands) {
}
}
message SegmentObject {
string traceId = 1;
string traceSegmentId = 2;
repeated SpanObject spans = 3;
string service = 4;
string serviceInstance = 5;
bool isSizeLimited = 6;
}
message SegmentReference {
RefType refType = 1;
string traceId = 2;
string parentTraceSegmentId = 3;
int32 parentSpanId = 4;
string parentService = 5;
string parentServiceInstance = 6;
string parentEndpoint = 7;
string networkAddressUsedAtPeer = 8;
}
message SpanObject {
int32 spanId = 1;
int32 parentSpanId = 2;
int64 startTime = 3;
int64 endTime = 4;
repeated SegmentReference refs = 5;
string operationName = 6;
string peer = 7;
SpanType spanType = 8;
SpanLayer spanLayer = 9;
int32 componentId = 10;
string component = 11;
bool isError = 12;
repeated KeyStringValuePair tags = 13;
repeated Log logs = 14;
}
message Log {
int64 time = 1;
repeated KeyStringValuePair data = 2;
}
enum SpanType {
......@@ -35,8 +77,8 @@ enum SpanType {
Local = 2;
}
message UniqueId {
repeated int64 idParts = 1;
message ID {
repeated string id = 1;
}
enum RefType {
......@@ -51,4 +93,4 @@ enum SpanLayer {
Http = 3;
MQ = 4;
Cache = 5;
}
}
\ No newline at end of file
......@@ -18,21 +18,28 @@
syntax = "proto3";
package skywalking.network.protocol.agent.register.v2;
option java_multiple_files = true;
option java_package = "org.apache.skywalking.apm.network.register.v2";
option java_package = "org.apache.skywalking.apm.network.management.v3";
option csharp_namespace = "SkyWalking.NetworkProtocol";
import "common/common.proto";
import "common/Common.proto";
service ManagementService {
rpc reportInstanceProperties (InstanceProperties) returns (Commands) {
}
rpc keepAlive (InstancePingPkg) returns (Commands) {
service ServiceInstancePing {
rpc doPing (ServiceInstancePingPkg) returns (skywalking.network.protocol.common.Commands) {
}
}
message ServiceInstancePingPkg {
int32 serviceInstanceId = 1;
int64 time = 2;
string serviceInstanceUUID = 3;
message InstanceProperties {
string service = 1;
string serviceInstance = 2;
repeated KeyStringValuePair properties = 3;
}
message InstancePingPkg {
string service = 1;
string serviceInstance = 2;
}
\ No newline at end of file
......@@ -18,27 +18,24 @@
syntax = "proto3";
package skywalking.network.protocol.agent.profile;
option java_multiple_files = true;
option java_package = "org.apache.skywalking.apm.network.language.profile";
option csharp_namespace = "SkyWalking.NetworkProtocol";
import "common/common.proto";
import "common/trace-common.proto";
import "common/Common.proto";
service ProfileTask {
// query all sniffer need to execute profile task commands
rpc getProfileTaskCommands (ProfileTaskCommandQuery) returns (skywalking.network.protocol.common.Commands) {
rpc getProfileTaskCommands (ProfileTaskCommandQuery) returns (Commands) {
}
// collect dumped thread snapshot
rpc collectSnapshot (stream ThreadSnapshot) returns (skywalking.network.protocol.common.Commands) {
rpc collectSnapshot (stream ThreadSnapshot) returns (Commands) {
}
// report profiling task finished
rpc reportTaskFinish (ProfileTaskFinishReport) returns (skywalking.network.protocol.common.Commands) {
rpc reportTaskFinish (ProfileTaskFinishReport) returns (Commands) {
}
}
......@@ -57,7 +54,7 @@ message ThreadSnapshot {
// profile task id
string taskId = 1;
// dumped segment id
skywalking.network.protocol.common.UniqueId traceSegmentId = 2;
string traceSegmentId = 2;
// dump timestamp
int64 time = 3;
// snapshot dump sequence, start with zero
......
/*
* 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.network.protocol.agent.register.v2;
option java_multiple_files = true;
option java_package = "org.apache.skywalking.apm.network.register.v2";
option csharp_namespace = "SkyWalking.NetworkProtocol";
import "common/common.proto";
//register service for ApplicationCode, this service is called when service starts.
service Register {
rpc doServiceRegister (Services) returns (ServiceRegisterMapping) {
}
rpc doServiceInstanceRegister (ServiceInstances) returns (ServiceInstanceRegisterMapping) {
}
rpc doEndpointRegister (Endpoints) returns (EndpointMapping) {
}
rpc doNetworkAddressRegister (NetAddresses) returns (NetAddressMapping) {
}
rpc doServiceAndNetworkAddressMappingRegister (ServiceAndNetworkAddressMappings) returns(skywalking.network.protocol.common.Commands) {
}
}
// Service register
message Services {
repeated Service services = 1;
}
message Service {
string serviceName = 1;
repeated skywalking.network.protocol.common.KeyStringValuePair tags = 3;
repeated skywalking.network.protocol.common.KeyStringValuePair properties = 4;
// Type of this register service.
// NULL means type=normal, such as all services before the 7.0.0.
skywalking.network.protocol.common.ServiceType type = 5;
}
message ServiceRegisterMapping {
repeated skywalking.network.protocol.common.KeyIntValuePair services = 1;
}
// Service Instance register
message ServiceInstances {
repeated ServiceInstance instances = 1;
}
message ServiceInstance {
int32 serviceId = 1;
string instanceUUID = 2;
int64 time = 3;
repeated skywalking.network.protocol.common.KeyStringValuePair tags = 4;
repeated skywalking.network.protocol.common.KeyStringValuePair properties = 5;
}
message ServiceInstanceRegisterMapping {
repeated skywalking.network.protocol.common.KeyIntValuePair serviceInstances = 1;
}
// Network address register
// Only known use case is the language agent.
// Network address represents the ip/hostname:port, which is usually used at client side of RPC.
message NetAddresses {
repeated string addresses = 1;
}
message NetAddressMapping {
repeated skywalking.network.protocol.common.KeyIntValuePair addressIds = 1;
}
// Endpoints register
message Endpoints {
repeated Endpoint endpoints = 1;
}
message Endpoint {
int32 serviceId = 1;
string endpointName = 2;
repeated skywalking.network.protocol.common.KeyStringValuePair tags = 3;
repeated skywalking.network.protocol.common.KeyStringValuePair properties = 4;
// For endpoint
// from DetectPoint is either `client` or `server`. No chance to be `proxy`.
skywalking.network.protocol.common.DetectPoint from = 5;
}
message EndpointMapping {
repeated EndpointMappingElement elements = 1;
}
message EndpointMappingElement {
int32 serviceId = 1;
string endpointName = 2;
int32 endpointId = 3;
skywalking.network.protocol.common.DetectPoint from = 4;
}
message ServiceAndNetworkAddressMappings {
repeated ServiceAndNetworkAddressMapping mappings = 1;
}
message ServiceAndNetworkAddressMapping {
int32 serviceId = 1;
int32 serviceInstanceId = 2;
string networkAddress = 3;
int32 networkAddressId = 4;
}
---
title: Apache SkyWalking
description: Adapter to deliver metrics to Apache SkyWalking.
location: https://istio.io/docs/reference/config/policy-and-telemetry/adapters/apache-skywalking.html
layout: protoc-gen-docs
generator: protoc-gen-docs
provider: Apache SkyWalking
contact_email: dev@skywalking.apache.org
support_link:
source_link: https://github.com/apache/skywalking
latest_release_link: https://skywalking.apache.org/downloads/
helm_chart_link:
istio_versions: "1.0.3, 1.0.4, 1.1.0, 1.1.1"
supported_templates: metric
logo_link: https://github.com/apache/skywalking-website/raw/master/docs/.vuepress/public/assets/logo.svg
number_of_entries: 1
---
<!-- 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. -->
<p>The SkyWalking adapter uses the <code>Istio bypass</code> adapter to collect metrics and make them available to
<a href="https://skywalking.apache.org/">Apache SkyWalking</a>. SkyWalking provides a topology map and metrics graph
to visualize the whole mesh.</p>
<p>This adapter supports the <a href="https://istio.io/docs/reference/config/policy-and-telemetry/templates/metric/">metric template</a>.</p>
<p>Follow the <a href="https://github.com/apache/skywalking/blob/master/docs/README.md">official Apache SkyWalking documentation</a>
and <a href="https://github.com/apache/skywalking-kubernetes">SkyWalking k8s documentation</a> for details on configuring SkyWalking and the Istio bypass adapter.</p>
......@@ -18,12 +18,10 @@
syntax = "proto3";
package skywalking.network.protocol.servicemesh;
option java_multiple_files = true;
option java_package = "org.apache.skywalking.apm.network.servicemesh";
import "common/common.proto";
import "common/Common.proto";
service ServiceMeshMetricService {
rpc collect(stream ServiceMeshMetric) returns (MeshProbeDownstream) {
......@@ -34,19 +32,15 @@ message ServiceMeshMetric {
int64 startTime = 1;
int64 endTime = 2;
string sourceServiceName = 3;
int32 sourceServiceId = 4;
string sourceServiceInstance = 5;
int32 sourceServiceInstanceId = 6;
string destServiceName = 7;
int32 destServiceId = 8;
string destServiceInstance = 9;
int32 destServiceInstanceId = 10;
string endpoint = 11;
int32 latency = 12;
int32 responseCode = 13;
bool status = 14;
Protocol protocol = 15;
skywalking.network.protocol.common.DetectPoint detectPoint = 16;
string sourceServiceInstance = 4;
string destServiceName = 5;
string destServiceInstance = 6;
string endpoint = 7;
int32 latency = 8;
int32 responseCode = 9;
bool status = 10;
Protocol protocol = 11;
DetectPoint detectPoint = 12;
}
enum Protocol {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册