Create istio receiver module
This commit is contained in:
parent
39abdb69bc
commit
6ee67e6aa4
3
LICENSE
3
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
|
||||
19
NOTICE
19
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
|
||||
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.
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
|
|
@ -33,6 +33,7 @@
|
|||
<module>skywalking-trace-receiver-plugin</module>
|
||||
<module>zipkin-receiver-plugin</module>
|
||||
<module>skywalking-mesh-receiver-plugin</module>
|
||||
<module>skywalking-istio-telemetry-receiver-plugin</module>
|
||||
</modules>
|
||||
|
||||
<dependencies>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,33 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
~ 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.
|
||||
~
|
||||
-->
|
||||
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>skywalking-istio-telemetry-receiver-plugin</artifactId>
|
||||
<groupId>org.apache.skywalking</groupId>
|
||||
<version>6.0.0-alpha-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>istio-telemetry-receiver-module</artifactId>
|
||||
|
||||
|
||||
</project>
|
||||
|
|
@ -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];
|
||||
}
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
~ 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.
|
||||
~
|
||||
-->
|
||||
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>skywalking-istio-telemetry-receiver-plugin</artifactId>
|
||||
<groupId>org.apache.skywalking</groupId>
|
||||
<version>6.0.0-alpha-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>istio-telemetry-receiver-provider</artifactId>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.skywalking</groupId>
|
||||
<artifactId>istio-telemetry-receiver-module</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.skywalking</groupId>
|
||||
<artifactId>server-core</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
||||
</project>
|
||||
|
|
@ -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};
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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<string, istio.policy.v1beta1.Value> 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<string, istio.policy.v1beta1.Value> 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<string, istio.policy.v1beta1.ValueType> 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<string, istio.policy.v1beta1.ValueType> 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<string, string> 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<string, string> monitored_resource_dimensions = 4;
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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 {}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
~ 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.
|
||||
~
|
||||
-->
|
||||
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>server-receiver-plugin</artifactId>
|
||||
<groupId>org.apache.skywalking</groupId>
|
||||
<version>6.0.0-alpha-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>skywalking-istio-telemetry-receiver-plugin</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<modules>
|
||||
<module>istio-telemetry-receiver-module</module>
|
||||
<module>istio-telemetry-receiver-provider</module>
|
||||
</modules>
|
||||
|
||||
|
||||
</project>
|
||||
|
|
@ -64,6 +64,11 @@
|
|||
<artifactId>mesh-receiver-provider</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.skywalking</groupId>
|
||||
<artifactId>istio-telemetry-receiver-provider</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<!-- receiver module -->
|
||||
|
||||
<!-- storage module -->
|
||||
|
|
|
|||
4
pom.xml
4
pom.xml
|
|
@ -230,6 +230,10 @@
|
|||
<!-- web UI dependencies descriptions -->
|
||||
<exclude>skywalking-ui/package.json</exclude>
|
||||
<exclude>skywalking-ui/package-lock.json</exclude>
|
||||
|
||||
<exclude>apm-protocols/apm-network/src/main/proto/gogoproto/*.proto</exclude>
|
||||
<exclude>apm-protocols/apm-network/src/main/proto/mixer/*.proto</exclude>
|
||||
<exclude>apm-protocols/apm-network/src/main/proto/mixer/*.proto</exclude>
|
||||
</excludes>
|
||||
</configuration>
|
||||
<executions>
|
||||
|
|
|
|||
Loading…
Reference in New Issue