diff --git a/LICENSE b/LICENSE
index 8ae4ae55aae98ed8d7fe95b6b4a440abf2b85876..a434cdecb2dab9ba203b222957359ace4e425712 100644
--- a/LICENSE
+++ b/LICENSE
@@ -209,3 +209,6 @@
licenses.
iconfont(from antd): https://github.com/ant-design/antd-init/tree/master/examples/local-iconfont MIT
+ proto files from istio/istio: https://github.com/istio/istio Apache 2.0
+ proto files from istio/api: https://github.com/istio/api Apache 2.0
+ proto files from gogo/protobuf: https://github.com/gogo/protobuf BSD-3
\ No newline at end of file
diff --git a/NOTICE b/NOTICE
index a442344d690190bbc745c6cd9d61f15048ac01b2..a502335e77b0bdf1d54c2904ee13d00fde256227 100644
--- a/NOTICE
+++ b/NOTICE
@@ -8,4 +8,21 @@ This product bundles icons/fonts in skywalking-ui/public/font/iconfont folder
from the ant-design project,
https://github.com/ant-design/antd-init/tree/master/examples/local-iconfont
Licensed under the MIT license, confirmed by ant-design team member.
-https://github.com/ant-design/ant-design/issues/10243
\ No newline at end of file
+https://github.com/ant-design/ant-design/issues/10243
+
+This product bundles the following proto files
+1. apm-protocol/apm-network/src/main/proto/service-mesh-probe/istio-metric.proto
+2. apm-protocol/apm-network/src/main/proto/policy/v1beta1/type.proto
+3. apm-protocol/apm-network/src/main/proto/policy/v1beta1/value_type.proto
+4. apm-protocol/apm-network/src/main/proto/mixer/adapter/model/v1beta1/extensions.proto
+5. apm-protocol/apm-network/src/main/proto/mixer/adapter/model/v1beta1/report.proto
+from the istio projects,
+https://github.com/istio/istio
+https://github.com/istio/api
+Licensed under the Apache 2.0 license.
+
+This product bundles the following proto file
+1. apm-protocol/apm-network/src/main/proto/gogoproto/gogo.proto
+from the gogo/protobuf project,
+https://github.com/gogo/protobuf
+Licensed under the BSD-3-Clause license.
\ No newline at end of file
diff --git a/apm-dist/release-docs/LICENSE b/apm-dist/release-docs/LICENSE
index a33957f87d915cff8a4c4e48e83b8bfd8480454d..facfc682365f488c6b21844bc385f4c1ee7505bc 100644
--- a/apm-dist/release-docs/LICENSE
+++ b/apm-dist/release-docs/LICENSE
@@ -300,6 +300,8 @@ The text of each license is the standard Apache 2.0 license.
zipkin 2.9.1: https://github.com/openzipkin/zipkin, Apache 2.0
sharding-jdbc-core 2.0.3: https://github.com/sharding-sphere/sharding-sphere, Apache 2.0
kubernetes-client 2.0.0: https://github.com/kubernetes-client/java, Apache 2.0
+ proto files from istio/istio: https://github.com/istio/istio Apache 2.0
+ proto files from istio/api: https://github.com/istio/api Apache 2.0
========================================================================
MIT licenses
@@ -329,6 +331,7 @@ The text of each license is also included at licenses/LICENSE-[project].txt.
Google: protobuf-java 3.4.0: https://github.com/google/protobuf/blob/master/java/pom.xml , BSD-3-Clause
Google: protobuf-java-util 3.4.0: https://github.com/google/protobuf/blob/master/java/pom.xml , BSD-3-Clause
reflectasm 1.11.3: https://github.com/EsotericSoftware/reflectasm , BSD-3-Clause
+ gogo-protobuf, proto files: https://github.com/gogo/protobuf BSD-3-Clause
========================================================================
MPL 2.0 licenses
diff --git a/apm-dist/release-docs/NOTICE b/apm-dist/release-docs/NOTICE
index cd088c301a43bff11ad3fa827dcd3bffcd7d4022..c1e377cc44237a42c7323711dfe70265e989a2b7 100644
--- a/apm-dist/release-docs/NOTICE
+++ b/apm-dist/release-docs/NOTICE
@@ -9,6 +9,23 @@ https://github.com/ant-design/antd-init/tree/master/examples/local-iconfont
Licensed under the MIT license, confirmed by ant-design team member.
https://github.com/ant-design/ant-design/issues/10243
+This product bundles the following proto files
+1. apm-protocol/apm-network/src/main/proto/service-mesh-probe/istio-metric.proto
+2. apm-protocol/apm-network/src/main/proto/policy/v1beta1/type.proto
+3. apm-protocol/apm-network/src/main/proto/policy/v1beta1/value_type.proto
+4. apm-protocol/apm-network/src/main/proto/mixer/adapter/model/v1beta1/extensions.proto
+5. apm-protocol/apm-network/src/main/proto/mixer/adapter/model/v1beta1/report.proto
+from the istio projects,
+https://github.com/istio/istio
+https://github.com/istio/api
+Licensed under the Apache 2.0 license.
+
+This product bundles the following proto file
+1. apm-protocol/apm-network/src/main/proto/gogoproto/gogo.proto
+from the gogo/protobuf project,
+https://github.com/gogo/protobuf
+Licensed under the BSD-3-Clause license.
+
========================================================================
grpc-java NOTICE
diff --git a/apm-dist/release-docs/licenses/LICENSE-gogo-protobuf.txt b/apm-dist/release-docs/licenses/LICENSE-gogo-protobuf.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7be0cc7b62cf0c723fbb95bfc2e82ebdab213203
--- /dev/null
+++ b/apm-dist/release-docs/licenses/LICENSE-gogo-protobuf.txt
@@ -0,0 +1,36 @@
+Protocol Buffers for Go with Gadgets
+
+Copyright (c) 2013, The GoGo Authors. All rights reserved.
+http://github.com/gogo/protobuf
+
+Go support for Protocol Buffers - Google's data interchange format
+
+Copyright 2010 The Go Authors. All rights reserved.
+https://github.com/golang/protobuf
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+ * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
diff --git a/oap-server/server-receiver-plugin/pom.xml b/oap-server/server-receiver-plugin/pom.xml
index 16320ef6d9dfc7419a898d8622aaf5033d7b056b..3ba40a3fed9250d4108b9f0193ff4cc9915611f1 100644
--- a/oap-server/server-receiver-plugin/pom.xml
+++ b/oap-server/server-receiver-plugin/pom.xml
@@ -33,6 +33,7 @@
skywalking-trace-receiver-plugin
zipkin-receiver-plugin
skywalking-mesh-receiver-plugin
+ skywalking-istio-telemetry-receiver-plugin
diff --git a/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-module/pom.xml b/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-module/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0ff1a855b38579470002b51a3855a6d0967edd26
--- /dev/null
+++ b/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-module/pom.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+ skywalking-istio-telemetry-receiver-plugin
+ org.apache.skywalking
+ 6.0.0-alpha-SNAPSHOT
+
+ 4.0.0
+
+ istio-telemetry-receiver-module
+
+
+
\ No newline at end of file
diff --git a/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-module/src/main/java/org/apache/skywalking/oap/server/receiver/istio/telemetry/module/IstioTelemetryReceiverModule.java b/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-module/src/main/java/org/apache/skywalking/oap/server/receiver/istio/telemetry/module/IstioTelemetryReceiverModule.java
new file mode 100644
index 0000000000000000000000000000000000000000..dd91b721d192715e6c2a6c66345327a8e308169c
--- /dev/null
+++ b/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-module/src/main/java/org/apache/skywalking/oap/server/receiver/istio/telemetry/module/IstioTelemetryReceiverModule.java
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ *
+ */
+
+package org.apache.skywalking.oap.server.receiver.istio.telemetry.module;
+
+import org.apache.skywalking.oap.server.library.module.ModuleDefine;
+
+public class IstioTelemetryReceiverModule extends ModuleDefine {
+ public static final String NAME = "istio-telemetry";
+
+ @Override public String name() {
+ return NAME;
+ }
+
+ @Override public Class[] services() {
+ return new Class[0];
+ }
+}
diff --git a/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-module/src/main/resources/META-INF/services/org.apache.skywalking.oap.server.library.module.ModuleDefine b/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-module/src/main/resources/META-INF/services/org.apache.skywalking.oap.server.library.module.ModuleDefine
new file mode 100644
index 0000000000000000000000000000000000000000..9e42362fa8dc593c4f9d67f5c3e70d6ec2d7d4ed
--- /dev/null
+++ b/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-module/src/main/resources/META-INF/services/org.apache.skywalking.oap.server.library.module.ModuleDefine
@@ -0,0 +1,20 @@
+#
+# 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.
+#
+#
+
+
+org.apache.skywalking.oap.server.receiver.istio.telemetry.module.IstioTelemetryReceiverModule
\ No newline at end of file
diff --git a/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-provider/pom.xml b/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-provider/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..422a16f7c7caf35fa6adc680b81c9123d50ea1de
--- /dev/null
+++ b/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-provider/pom.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+ skywalking-istio-telemetry-receiver-plugin
+ org.apache.skywalking
+ 6.0.0-alpha-SNAPSHOT
+
+ 4.0.0
+
+ istio-telemetry-receiver-provider
+
+
+ org.apache.skywalking
+ istio-telemetry-receiver-module
+ ${project.version}
+
+
+ org.apache.skywalking
+ server-core
+ ${project.version}
+
+
+
+
+
\ No newline at end of file
diff --git a/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-provider/src/main/java/org/apache/skywalking/oap/server/receiver/istio/telemetry/provider/IstioTelemetryReceiverProvider.java b/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-provider/src/main/java/org/apache/skywalking/oap/server/receiver/istio/telemetry/provider/IstioTelemetryReceiverProvider.java
new file mode 100644
index 0000000000000000000000000000000000000000..ee03495fdbb6c8563f8e6b4476c0b3fdf0cdd40b
--- /dev/null
+++ b/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-provider/src/main/java/org/apache/skywalking/oap/server/receiver/istio/telemetry/provider/IstioTelemetryReceiverProvider.java
@@ -0,0 +1,55 @@
+/*
+ * 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.
+ *
+ */
+
+package org.apache.skywalking.oap.server.receiver.istio.telemetry.provider;
+
+import org.apache.skywalking.oap.server.core.CoreModule;
+import org.apache.skywalking.oap.server.library.module.ModuleConfig;
+import org.apache.skywalking.oap.server.library.module.ModuleDefine;
+import org.apache.skywalking.oap.server.library.module.ModuleProvider;
+import org.apache.skywalking.oap.server.library.module.ModuleStartException;
+import org.apache.skywalking.oap.server.library.module.ServiceNotProvidedException;
+import org.apache.skywalking.oap.server.receiver.istio.telemetry.module.IstioTelemetryReceiverModule;
+
+public class IstioTelemetryReceiverProvider extends ModuleProvider {
+ @Override public String name() {
+ return "default";
+ }
+
+ @Override public Class extends ModuleDefine> module() {
+ return IstioTelemetryReceiverModule.class;
+ }
+
+ @Override public ModuleConfig createConfigBeanIfAbsent() {
+ return null;
+ }
+
+ @Override public void prepare() throws ServiceNotProvidedException, ModuleStartException {
+ }
+
+ @Override public void start() throws ServiceNotProvidedException, ModuleStartException {
+ }
+
+ @Override public void notifyAfterCompleted() throws ServiceNotProvidedException, ModuleStartException {
+
+ }
+
+ @Override public String[] requiredModules() {
+ return new String[] {CoreModule.NAME};
+ }
+}
\ No newline at end of file
diff --git a/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-provider/src/main/proto/gogoproto/gogo.proto b/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-provider/src/main/proto/gogoproto/gogo.proto
new file mode 100644
index 0000000000000000000000000000000000000000..ff85176b5b3fc0c020dd1c51d9b111ee938d86f0
--- /dev/null
+++ b/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-provider/src/main/proto/gogoproto/gogo.proto
@@ -0,0 +1,136 @@
+// Protocol Buffers for Go with Gadgets
+//
+// Copyright (c) 2013, The GoGo Authors. All rights reserved.
+// http://github.com/gogo/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto2";
+package gogoproto;
+
+import "google/protobuf/descriptor.proto";
+
+option java_package = "com.google.protobuf";
+option java_outer_classname = "GoGoProtos";
+option go_package = "github.com/gogo/protobuf/gogoproto";
+
+extend google.protobuf.EnumOptions {
+ optional bool goproto_enum_prefix = 62001;
+ optional bool goproto_enum_stringer = 62021;
+ optional bool enum_stringer = 62022;
+ optional string enum_customname = 62023;
+ optional bool enumdecl = 62024;
+}
+
+extend google.protobuf.EnumValueOptions {
+ optional string enumvalue_customname = 66001;
+}
+
+extend google.protobuf.FileOptions {
+ optional bool goproto_getters_all = 63001;
+ optional bool goproto_enum_prefix_all = 63002;
+ optional bool goproto_stringer_all = 63003;
+ optional bool verbose_equal_all = 63004;
+ optional bool face_all = 63005;
+ optional bool gostring_all = 63006;
+ optional bool populate_all = 63007;
+ optional bool stringer_all = 63008;
+ optional bool onlyone_all = 63009;
+
+ optional bool equal_all = 63013;
+ optional bool description_all = 63014;
+ optional bool testgen_all = 63015;
+ optional bool benchgen_all = 63016;
+ optional bool marshaler_all = 63017;
+ optional bool unmarshaler_all = 63018;
+ optional bool stable_marshaler_all = 63019;
+
+ optional bool sizer_all = 63020;
+
+ optional bool goproto_enum_stringer_all = 63021;
+ optional bool enum_stringer_all = 63022;
+
+ optional bool unsafe_marshaler_all = 63023;
+ optional bool unsafe_unmarshaler_all = 63024;
+
+ optional bool goproto_extensions_map_all = 63025;
+ optional bool goproto_unrecognized_all = 63026;
+ optional bool gogoproto_import = 63027;
+ optional bool protosizer_all = 63028;
+ optional bool compare_all = 63029;
+ optional bool typedecl_all = 63030;
+ optional bool enumdecl_all = 63031;
+
+ optional bool goproto_registration = 63032;
+ optional bool messagename_all = 63033;
+}
+
+extend google.protobuf.MessageOptions {
+ optional bool goproto_getters = 64001;
+ optional bool goproto_stringer = 64003;
+ optional bool verbose_equal = 64004;
+ optional bool face = 64005;
+ optional bool gostring = 64006;
+ optional bool populate = 64007;
+ optional bool stringer = 67008;
+ optional bool onlyone = 64009;
+
+ optional bool equal = 64013;
+ optional bool description = 64014;
+ optional bool testgen = 64015;
+ optional bool benchgen = 64016;
+ optional bool marshaler = 64017;
+ optional bool unmarshaler = 64018;
+ optional bool stable_marshaler = 64019;
+
+ optional bool sizer = 64020;
+
+ optional bool unsafe_marshaler = 64023;
+ optional bool unsafe_unmarshaler = 64024;
+
+ optional bool goproto_extensions_map = 64025;
+ optional bool goproto_unrecognized = 64026;
+
+ optional bool protosizer = 64028;
+ optional bool compare = 64029;
+
+ optional bool typedecl = 64030;
+
+ optional bool messagename = 64033;
+}
+
+extend google.protobuf.FieldOptions {
+ optional bool nullable = 65001;
+ optional bool embed = 65002;
+ optional string customtype = 65003;
+ optional string customname = 65004;
+ optional string jsontag = 65005;
+ optional string moretags = 65006;
+ optional string casttype = 65007;
+ optional string castkey = 65008;
+ optional string castvalue = 65009;
+
+ optional bool stdtime = 65010;
+ optional bool stdduration = 65011;
+}
diff --git a/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-provider/src/main/proto/istio-metric.proto b/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-provider/src/main/proto/istio-metric.proto
new file mode 100644
index 0000000000000000000000000000000000000000..f74fa1d8ed1a814e9c535e9ea9ae053b3ffc5f5a
--- /dev/null
+++ b/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-provider/src/main/proto/istio-metric.proto
@@ -0,0 +1,151 @@
+// Copyright 2017 Istio Authors
+//
+// Licensed 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.
+
+// THIS FILE IS AUTOMATICALLY GENERATED.
+
+syntax = "proto3";
+
+
+// The `metric` template is designed to let you describe runtime metric to dispatch to
+// monitoring backends.
+//
+// Example config:
+//
+// ```yaml
+// apiVersion: "config.istio.io/v1alpha2"
+// kind: metric
+// metadata:
+// name: requestsize
+// namespace: istio-system
+// spec:
+// value: request.size | 0
+// dimensions:
+// source_service: source.service | "unknown"
+// source_version: source.labels["version"] | "unknown"
+// destination_service: destination.service | "unknown"
+// destination_version: destination.labels["version"] | "unknown"
+// response_code: response.code | 200
+// monitored_resource_type: '"UNSPECIFIED"'
+// ```
+//
+// The `metric` template represents a single piece of data to report.
+//
+// When writing the configuration, the value for the fields associated with this template can either be a
+// literal or an [expression](https://istio.io/docs/reference//config/policy-and-telemetry/expression-language/). Please note that if the datatype of a field is not istio.policy.v1beta1.Value,
+// then the expression's [inferred type](https://istio.io/docs/reference//config/policy-and-telemetry/expression-language/#type-checking) must match the datatype of the field.
+package metric;
+
+
+import "gogoproto/gogo.proto";
+import "mixer/adapter/model/v1beta1/extensions.proto";
+import "google/protobuf/any.proto";
+import "mixer/adapter/model/v1beta1/report.proto";
+import "policy/v1beta1/value_type.proto";
+import "policy/v1beta1/type.proto";
+
+option (istio.mixer.adapter.model.v1beta1.template_variety) = TEMPLATE_VARIETY_REPORT;
+option (istio.mixer.adapter.model.v1beta1.template_name) = "metric";
+
+option (gogoproto.goproto_getters_all) = false;
+option (gogoproto.equal_all) = false;
+option (gogoproto.gostring_all) = false;
+
+// HandleMetricService is implemented by backends that wants to handle request-time 'metric' instances.
+service HandleMetricService {
+ // HandleMetric is called by Mixer at request-time to deliver 'metric' instances to the backend.
+ rpc HandleMetric(HandleMetricRequest) returns (istio.mixer.adapter.model.v1beta1.ReportResult);
+
+}
+
+// Request message for HandleMetric method.
+message HandleMetricRequest {
+
+ // 'metric' instances.
+ repeated InstanceMsg instances = 1;
+
+ // Adapter specific handler configuration.
+ //
+ // Note: Backends can also implement [InfrastructureBackend][https://istio.io/docs/reference/config/mixer/istio.mixer.adapter.model.v1beta1.html#InfrastructureBackend]
+ // service and therefore opt to receive handler configuration during session creation through [InfrastructureBackend.CreateSession][TODO: Link to this fragment]
+ // call. In that case, adapter_config will have type_url as 'google.protobuf.Any.type_url' and would contain string
+ // value of session_id (returned from InfrastructureBackend.CreateSession).
+ google.protobuf.Any adapter_config = 2;
+
+ // Id to dedupe identical requests from Mixer.
+ string dedup_id = 3;
+}
+
+// Contains instance payload for 'metric' template. This is passed to infrastructure backends during request-time
+// through HandleMetricService.HandleMetric.
+message InstanceMsg {
+
+ // Name of the instance as specified in configuration.
+ string name = 72295727;
+
+ // The value being reported.
+ istio.policy.v1beta1.Value value = 1;
+
+ // The unique identity of the particular metric to report.
+ map dimensions = 2;
+
+ // Optional. An expression to compute the type of the monitored resource this metric is being reported on.
+ // If the metric backend supports monitored resources, these fields are used to populate that resource. Otherwise
+ // these fields will be ignored by the adapter.
+ string monitored_resource_type = 3;
+
+ // Optional. A set of expressions that will form the dimensions of the monitored resource this metric is being reported on.
+ // If the metric backend supports monitored resources, these fields are used to populate that resource. Otherwise
+ // these fields will be ignored by the adapter.
+ map monitored_resource_dimensions = 4;
+
+}
+
+// Contains inferred type information about specific instance of 'metric' template. This is passed to
+// infrastructure backends during configuration-time through [InfrastructureBackend.CreateSession][TODO: Link to this fragment].
+message Type {
+
+ // The value being reported.
+ istio.policy.v1beta1.ValueType value = 1;
+
+ // The unique identity of the particular metric to report.
+ map dimensions = 2;
+
+ // Optional. A set of expressions that will form the dimensions of the monitored resource this metric is being reported on.
+ // If the metric backend supports monitored resources, these fields are used to populate that resource. Otherwise
+ // these fields will be ignored by the adapter.
+ map monitored_resource_dimensions = 4;
+
+}
+
+// Represents instance configuration schema for 'metric' template.
+message InstanceParam {
+
+ // The value being reported.
+ string value = 1;
+
+ // The unique identity of the particular metric to report.
+ map dimensions = 2;
+
+ // Optional. An expression to compute the type of the monitored resource this metric is being reported on.
+ // If the metric backend supports monitored resources, these fields are used to populate that resource. Otherwise
+ // these fields will be ignored by the adapter.
+ string monitored_resource_type = 3;
+
+ // Optional. A set of expressions that will form the dimensions of the monitored resource this metric is being reported on.
+ // If the metric backend supports monitored resources, these fields are used to populate that resource. Otherwise
+ // these fields will be ignored by the adapter.
+ map monitored_resource_dimensions = 4;
+
+}
+
diff --git a/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-provider/src/main/proto/mixer/adapter/model/v1beta1/extensions.proto b/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-provider/src/main/proto/mixer/adapter/model/v1beta1/extensions.proto
new file mode 100644
index 0000000000000000000000000000000000000000..5237ac9a7647263aeb768be78c49179506883dfc
--- /dev/null
+++ b/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-provider/src/main/proto/mixer/adapter/model/v1beta1/extensions.proto
@@ -0,0 +1,48 @@
+// Copyright 2018 Istio Authors
+//
+// Licensed 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 istio.mixer.adapter.model.v1beta1;
+
+option go_package="istio.io/api/mixer/adapter/model/v1beta1";
+
+import "google/protobuf/descriptor.proto";
+
+
+// The available varieties of templates, controlling the semantics of what an adapter does with each instance.
+enum TemplateVariety {
+ // Makes the template applicable for Mixer's check calls. Instances of such template are created during
+ // report calls in Mixer and passed to the handlers based on the rule configurations.
+ TEMPLATE_VARIETY_CHECK = 0;
+ // Makes the template applicable for Mixer's report calls. Instances of such template are created during
+ // check calls in Mixer and passed to the handlers based on the rule configurations.
+ TEMPLATE_VARIETY_REPORT = 1;
+ // Makes the template applicable for Mixer's quota calls. Instances of such template are created during
+ // quota check calls in Mixer and passed to the handlers based on the rule configurations.
+ TEMPLATE_VARIETY_QUOTA = 2;
+ // Makes the template applicable for Mixer's attribute generation phase. Instances of such template are created during
+ // pre-processing attribute generation phase and passed to the handlers based on the rule configurations.
+ TEMPLATE_VARIETY_ATTRIBUTE_GENERATOR = 3;
+}
+
+// File level options for the template.
+extend google.protobuf.FileOptions {
+ // Required: option for the TemplateVariety.
+ TemplateVariety template_variety = 72295727;
+ // Optional: option for the template name.
+ // If not specified, the last segment of the template proto's package name is used to
+ // derive the template name.
+ string template_name = 72295888;
+}
diff --git a/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-provider/src/main/proto/mixer/adapter/model/v1beta1/report.proto b/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-provider/src/main/proto/mixer/adapter/model/v1beta1/report.proto
new file mode 100644
index 0000000000000000000000000000000000000000..bc4bee86a4baf7d40ed7b08e6d1fe0a7952566f4
--- /dev/null
+++ b/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-provider/src/main/proto/mixer/adapter/model/v1beta1/report.proto
@@ -0,0 +1,28 @@
+// Copyright 2018 Istio Authors
+//
+// Licensed 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 istio.mixer.adapter.model.v1beta1;
+
+option go_package="istio.io/api/mixer/adapter/model/v1beta1";
+
+import "gogoproto/gogo.proto";
+
+option (gogoproto.goproto_getters_all) = false;
+option (gogoproto.equal_all) = false;
+option (gogoproto.gostring_all) = false;
+
+// Expresses the result of a report call.
+message ReportResult {}
diff --git a/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-provider/src/main/proto/policy/v1beta1/type.proto b/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-provider/src/main/proto/policy/v1beta1/type.proto
new file mode 100644
index 0000000000000000000000000000000000000000..d6027d1ca4d1e6b11365e6b38f4c4bdb701e13f5
--- /dev/null
+++ b/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-provider/src/main/proto/policy/v1beta1/type.proto
@@ -0,0 +1,132 @@
+// Copyright 2018 Istio Authors
+//
+// Licensed 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";
+
+// $title: Rules
+// $description: Describes the rules used to configure Mixer's policy and telemetry features.
+// $location: https://istio.io/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1.html
+
+// Describes the rules used to configure Mixer's policy and telemetry features.
+package istio.policy.v1beta1;
+
+option go_package="istio.io/api/policy/v1beta1";
+
+import "google/protobuf/duration.proto";
+import "google/protobuf/timestamp.proto";
+
+// An instance field of type Value denotes that the expression for the field is of dynamic type and can evalaute to any
+// [ValueType][istio.policy.v1beta1.ValueType] enum values. For example, when
+// authoring an instance configuration for a template that has a field `data` of type `istio.policy.v1beta1.Value`,
+// both of the following expressions are valid `data: source.ip | ip("0.0.0.0")`, `data: request.id | ""`;
+// the resulting type is either ValueType.IP_ADDRESS or ValueType.STRING for the two cases respectively.
+//
+// Objects of type Value are also passed to the adapters during request-time. There is a 1:1 mapping between
+// oneof fields in `Value` and enum values inside `ValueType`. Depending on the expression's evaluated `ValueType`,
+// the equivalent oneof field in `Value` is populated by Mixer and passed to the adapters.
+message Value {
+ oneof value {
+ // Used for values of type STRING
+ string string_value = 1;
+
+ // Used for values of type INT64
+ int64 int64_value = 2;
+
+ // Used for values of type DOUBLE
+ double double_value = 3;
+
+ // Used for values of type BOOL
+ bool bool_value = 4;
+
+ // Used for values of type IPAddress
+ IPAddress ip_address_value = 5;
+
+ // Used for values of type TIMESTAMP
+ TimeStamp timestamp_value = 6;
+
+ // Used for values of type DURATION
+ Duration duration_value = 7;
+
+ // Used for values of type EmailAddress
+ EmailAddress email_address_value = 8;
+
+ // Used for values of type DNSName
+ DNSName dns_name_value = 9;
+
+ // Used for values of type Uri
+ Uri uri_value = 10;
+ }
+}
+
+// An instance field of type IPAddress denotes that the expression for the field must evalaute to
+// [ValueType.IP_ADDRESS][istio.policy.v1beta1.ValueType.IP_ADDRESS]
+//
+// Objects of type IPAddress are also passed to the adapters during request-time for the instance fields of
+// type IPAddress
+message IPAddress {
+ // IPAddress encoded as bytes.
+ bytes value = 1;
+}
+
+// An instance field of type Duration denotes that the expression for the field must evalaute to
+// [ValueType.DURATION][istio.policy.v1beta1.ValueType.DURATION]
+//
+// Objects of type Duration are also passed to the adapters during request-time for the instance fields of
+// type Duration
+message Duration {
+ // Duration encoded as google.protobuf.Duration.
+ google.protobuf.Duration value = 1;
+}
+
+// An instance field of type TimeStamp denotes that the expression for the field must evalaute to
+// [ValueType.TIMESTAMP][istio.policy.v1beta1.ValueType.TIMESTAMP]
+//
+// Objects of type TimeStamp are also passed to the adapters during request-time for the instance fields of
+// type TimeStamp
+message TimeStamp {
+ // TimeStamp encoded as google.protobuf.Timestamp.
+ google.protobuf.Timestamp value = 1;
+}
+
+// An instance field of type DNSName denotes that the expression for the field must evalaute to
+// [ValueType.DNS_NAME][istio.policy.v1beta1.ValueType.DNS_NAME]
+//
+// Objects of type DNSName are also passed to the adapters during request-time for the instance fields of
+// type DNSName
+message DNSName {
+ // DNSName encoded as string.
+ string value = 1;
+}
+
+// DO NOT USE !! Under Development
+// An instance field of type EmailAddress denotes that the expression for the field must evalaute to
+// [ValueType.EMAIL_ADDRESS][istio.policy.v1beta1.ValueType.EMAIL_ADDRESS]
+//
+// Objects of type EmailAddress are also passed to the adapters during request-time for the instance fields of
+// type EmailAddress
+message EmailAddress {
+ // EmailAddress encoded as string.
+ string value = 1;
+}
+
+// DO NOT USE !! Under Development
+// An instance field of type Uri denotes that the expression for the field must evalaute to
+// [ValueType.URI][istio.policy.v1beta1.ValueType.URI]
+//
+// Objects of type Uri are also passed to the adapters during request-time for the instance fields of
+// type Uri
+message Uri {
+ // Uri encoded as string.
+ string value = 1;
+}
diff --git a/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-provider/src/main/proto/policy/v1beta1/value_type.proto b/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-provider/src/main/proto/policy/v1beta1/value_type.proto
new file mode 100644
index 0000000000000000000000000000000000000000..23194f3a045b6d19f16e803d63832d52db41616c
--- /dev/null
+++ b/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-provider/src/main/proto/policy/v1beta1/value_type.proto
@@ -0,0 +1,61 @@
+// Copyright 2018 Istio Authors
+//
+// Licensed 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 istio.policy.v1beta1;
+
+option go_package="istio.io/api/policy/v1beta1";
+
+// ValueType describes the types that values in the Istio system can take. These
+// are used to describe the type of Attributes at run time, describe the type of
+// the result of evaluating an expression, and to describe the runtime type of
+// fields of other descriptors.
+enum ValueType {
+ // Invalid, default value.
+ VALUE_TYPE_UNSPECIFIED = 0;
+
+ // An undiscriminated variable-length string.
+ STRING = 1;
+
+ // An undiscriminated 64-bit signed integer.
+ INT64 = 2;
+
+ // An undiscriminated 64-bit floating-point value.
+ DOUBLE = 3;
+
+ // An undiscriminated boolean value.
+ BOOL = 4;
+
+ // A point in time.
+ TIMESTAMP = 5;
+
+ // An IP address.
+ IP_ADDRESS = 6;
+
+ // An email address.
+ EMAIL_ADDRESS = 7;
+
+ // A URI.
+ URI = 8;
+
+ // A DNS name.
+ DNS_NAME = 9;
+
+ // A span between two points in time.
+ DURATION = 10;
+
+ // A map string -> string, typically used by headers.
+ STRING_MAP = 11;
+}
diff --git a/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-provider/src/main/resources/META-INF/services/org.apache.skywalking.oap.server.library.module.ModuleProvider b/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-provider/src/main/resources/META-INF/services/org.apache.skywalking.oap.server.library.module.ModuleProvider
new file mode 100644
index 0000000000000000000000000000000000000000..784e0a737c79926f56c3dd84bb10f24b292fff0e
--- /dev/null
+++ b/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-provider/src/main/resources/META-INF/services/org.apache.skywalking.oap.server.library.module.ModuleProvider
@@ -0,0 +1,38 @@
+#
+# 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.
+#
+#
+
+#
+# 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.
+#
+#
+
+
+org.apache.skywalking.oap.server.receiver.istio.telemetry.provider.IstioTelemetryReceiverProvider
\ No newline at end of file
diff --git a/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/pom.xml b/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ad9cacb30daf313a911441e2630e0b411664eb86
--- /dev/null
+++ b/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/pom.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+ server-receiver-plugin
+ org.apache.skywalking
+ 6.0.0-alpha-SNAPSHOT
+
+ 4.0.0
+
+ skywalking-istio-telemetry-receiver-plugin
+ pom
+
+ istio-telemetry-receiver-module
+ istio-telemetry-receiver-provider
+
+
+
+
\ No newline at end of file
diff --git a/oap-server/server-starter/pom.xml b/oap-server/server-starter/pom.xml
index 27abb83abd0fa1b5a0085b4bd785822e136df6cd..a298f714b94012ccd8aab44931de0525fd060caa 100644
--- a/oap-server/server-starter/pom.xml
+++ b/oap-server/server-starter/pom.xml
@@ -64,6 +64,11 @@
mesh-receiver-provider
${project.version}
+
+ org.apache.skywalking
+ istio-telemetry-receiver-provider
+ ${project.version}
+
diff --git a/pom.xml b/pom.xml
index 7a56ef7ac556e4393f219884231aba84c334762c..ad4f5b7c192d8a5b263c22fede152585007d69b5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -230,6 +230,10 @@
skywalking-ui/package.json
skywalking-ui/package-lock.json
+
+ apm-protocols/apm-network/src/main/proto/gogoproto/*.proto
+ apm-protocols/apm-network/src/main/proto/mixer/*.proto
+ apm-protocols/apm-network/src/main/proto/mixer/*.proto