From 6ee67e6aa4b97cb1a5b3a9c7e3059d4dac44c15d Mon Sep 17 00:00:00 2001 From: Wu Sheng Date: Thu, 9 Aug 2018 20:07:01 +0800 Subject: [PATCH] Create istio receiver module --- LICENSE | 3 + NOTICE | 19 ++- apm-dist/release-docs/LICENSE | 3 + apm-dist/release-docs/NOTICE | 17 ++ .../licenses/LICENSE-gogo-protobuf.txt | 36 +++++ oap-server/server-receiver-plugin/pom.xml | 1 + .../istio-telemetry-receiver-module/pom.xml | 33 ++++ .../module/IstioTelemetryReceiverModule.java | 33 ++++ ...ing.oap.server.library.module.ModuleDefine | 20 +++ .../istio-telemetry-receiver-provider/pom.xml | 45 ++++++ .../IstioTelemetryReceiverProvider.java | 55 +++++++ .../src/main/proto/gogoproto/gogo.proto | 136 ++++++++++++++++ .../src/main/proto/istio-metric.proto | 151 ++++++++++++++++++ .../adapter/model/v1beta1/extensions.proto | 48 ++++++ .../mixer/adapter/model/v1beta1/report.proto | 28 ++++ .../src/main/proto/policy/v1beta1/type.proto | 132 +++++++++++++++ .../proto/policy/v1beta1/value_type.proto | 61 +++++++ ...g.oap.server.library.module.ModuleProvider | 38 +++++ .../pom.xml | 38 +++++ oap-server/server-starter/pom.xml | 5 + pom.xml | 4 + 21 files changed, 905 insertions(+), 1 deletion(-) create mode 100644 apm-dist/release-docs/licenses/LICENSE-gogo-protobuf.txt create mode 100644 oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-module/pom.xml create mode 100644 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 create mode 100644 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 create mode 100644 oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-provider/pom.xml create mode 100644 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 create mode 100644 oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-provider/src/main/proto/gogoproto/gogo.proto create mode 100644 oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-provider/src/main/proto/istio-metric.proto create mode 100644 oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-provider/src/main/proto/mixer/adapter/model/v1beta1/extensions.proto create mode 100644 oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-provider/src/main/proto/mixer/adapter/model/v1beta1/report.proto create mode 100644 oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-provider/src/main/proto/policy/v1beta1/type.proto create mode 100644 oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/istio-telemetry-receiver-provider/src/main/proto/policy/v1beta1/value_type.proto create mode 100644 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 create mode 100644 oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/pom.xml diff --git a/LICENSE b/LICENSE index 8ae4ae55aa..a434cdecb2 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 a442344d69..a502335e77 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 a33957f87d..facfc68236 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 cd088c301a..c1e377cc44 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 0000000000..7be0cc7b62 --- /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 16320ef6d9..3ba40a3fed 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 0000000000..0ff1a855b3 --- /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 0000000000..dd91b721d1 --- /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 0000000000..9e42362fa8 --- /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 0000000000..422a16f7c7 --- /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 0000000000..ee03495fdb --- /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 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 0000000000..ff85176b5b --- /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 0000000000..f74fa1d8ed --- /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 0000000000..5237ac9a76 --- /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 0000000000..bc4bee86a4 --- /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 0000000000..d6027d1ca4 --- /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 0000000000..23194f3a04 --- /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 0000000000..784e0a737c --- /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 0000000000..ad9cacb30d --- /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 27abb83abd..a298f714b9 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 7a56ef7ac5..ad4f5b7c19 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 -- GitLab