This is an automated email from the ASF dual-hosted git repository. lujiajing pushed a commit to branch banyandb-integration-stream in repository https://gitbox.apache.org/repos/asf/skywalking.git
commit 2ca2f8d6f2f81f6a494bb87e82fa062f46c5648d Author: Megrez Lu <lujiajing1...@gmail.com> AuthorDate: Wed Jan 19 23:06:51 2022 +0800 support metadata-v2 --- ...aller.java => BanyanDBAggregationQueryDAO.java} | 29 ++-- .../plugin/banyandb/BanyanDBIndexInstaller.java | 3 + .../plugin/banyandb/BanyanDBMetricsQueryDAO.java | 51 +++++++ .../banyandb/BanyanDBStorageBuilderFactory.java | 26 +++- .../plugin/banyandb/BanyanDBStorageClient.java | 8 +- .../plugin/banyandb/BanyanDBStorageProvider.java | 18 ++- ...aller.java => BanyanDBTopNRecordsQueryDAO.java} | 29 ++-- .../storage/plugin/banyandb/StreamMetaInfo.java | 103 +++----------- .../plugin/banyandb/schema/AlarmRecordBuilder.java | 10 +- .../schema/BanyanDBStorageDataBuilder.java | 14 +- .../schema/BrowserErrorLogRecordBuilder.java | 8 +- ... EndpointRelationServerSideMetricsBuilder.java} | 22 +-- .../plugin/banyandb/schema/EventBuilder.java | 8 +- .../plugin/banyandb/schema/LogRecordBuilder.java | 8 +- .../storage/plugin/banyandb/schema/Metadata.java | 52 +++++-- .../schema/NetworkAddressAliasBuilder.java | 8 +- .../schema/ProfileTaskLogRecordBuilder.java | 8 +- .../banyandb/schema/ProfileTaskRecordBuilder.java | 6 +- .../schema/ProfileThreadSnapshotRecordBuilder.java | 8 +- .../banyandb/schema/SegmentRecordBuilder.java | 8 +- ...eInstanceRelationClientSideMetricsBuilder.java} | 24 ++-- ...eInstanceRelationServerSideMetricsBuilder.java} | 24 ++-- ...> ServiceRelationClientSideMetricsBuilder.java} | 22 +-- ...> ServiceRelationServerSideMetricsBuilder.java} | 22 +-- .../plugin/banyandb/schema/UITemplateBuilder.java | 8 +- .../BanyanDBHistoryDeleteDAO.java} | 25 +--- .../banyandb/stream/BanyanDBManagementDAO.java | 10 +- .../banyandb/stream/BanyanDBMetadataQueryDAO.java | 103 +++++--------- .../plugin/banyandb/stream/BanyanDBStorageDAO.java | 57 ++++++++ .../banyandb/stream/BanyanDBTopologyQueryDAO.java | 155 +++++++++++++++++++++ .../stream/BanyanDBUITemplateManagementDAO.java | 3 +- .../metadata/index_rules/segment/db.instance.json | 5 +- .../segment/{db.instance.json => db.type.json} | 7 +- .../segment/{db.instance.json => duration.json} | 9 +- .../segment/{db.instance.json => endpoint_id.json} | 7 +- .../segment/{db.instance.json => http.method.json} | 7 +- .../segment/{db.instance.json => mq.broker.json} | 7 +- .../segment/{db.instance.json => mq.queue.json} | 7 +- .../segment/{db.instance.json => mq.topic.json} | 7 +- .../segment/{db.instance.json => status_code.json} | 7 +- .../metadata/index_rules/segment/trace_id.json | 12 ++ .../db.instance.json => ui_template/disabled.json} | 7 +- .../db.instance.json => ui_template/name.json} | 7 +- .../src/main/resources/metadata/ui_template.json | 50 +++++++ 44 files changed, 640 insertions(+), 379 deletions(-) diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBIndexInstaller.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBAggregationQueryDAO.java similarity index 50% copy from oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBIndexInstaller.java copy to oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBAggregationQueryDAO.java index ffc5aaf586..771ec36bb4 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBIndexInstaller.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBAggregationQueryDAO.java @@ -18,27 +18,18 @@ package org.apache.skywalking.oap.server.storage.plugin.banyandb; -import org.apache.skywalking.oap.server.core.storage.StorageException; -import org.apache.skywalking.oap.server.core.storage.model.Model; -import org.apache.skywalking.oap.server.core.storage.model.ModelInstaller; -import org.apache.skywalking.oap.server.library.client.Client; -import org.apache.skywalking.oap.server.library.module.ModuleManager; +import org.apache.skywalking.oap.server.core.query.input.Duration; +import org.apache.skywalking.oap.server.core.query.input.TopNCondition; +import org.apache.skywalking.oap.server.core.query.type.KeyValue; +import org.apache.skywalking.oap.server.core.query.type.SelectedRecord; +import org.apache.skywalking.oap.server.core.storage.query.IAggregationQueryDAO; -public class BanyanDBIndexInstaller extends ModelInstaller { - public BanyanDBIndexInstaller(Client client, ModuleManager moduleManager) { - super(client, moduleManager); - } - - @Override - protected boolean isExists(Model model) throws StorageException { - return false; - } +import java.io.IOException; +import java.util.List; +public class BanyanDBAggregationQueryDAO implements IAggregationQueryDAO { @Override - protected void createTable(Model model) throws StorageException { - StreamMetaInfo metaInfo = StreamMetaInfo.addModel(model); - if (metaInfo != null) { - ((BanyanDBStorageClient) client).createStream(metaInfo); - } + public List<SelectedRecord> sortMetrics(TopNCondition condition, String valueColumnName, Duration duration, List<KeyValue> additionalConditions) throws IOException { + return null; } } diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBIndexInstaller.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBIndexInstaller.java index ffc5aaf586..c9566b1549 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBIndexInstaller.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBIndexInstaller.java @@ -18,12 +18,14 @@ package org.apache.skywalking.oap.server.storage.plugin.banyandb; +import lombok.extern.slf4j.Slf4j; import org.apache.skywalking.oap.server.core.storage.StorageException; import org.apache.skywalking.oap.server.core.storage.model.Model; import org.apache.skywalking.oap.server.core.storage.model.ModelInstaller; import org.apache.skywalking.oap.server.library.client.Client; import org.apache.skywalking.oap.server.library.module.ModuleManager; +@Slf4j public class BanyanDBIndexInstaller extends ModelInstaller { public BanyanDBIndexInstaller(Client client, ModuleManager moduleManager) { super(client, moduleManager); @@ -38,6 +40,7 @@ public class BanyanDBIndexInstaller extends ModelInstaller { protected void createTable(Model model) throws StorageException { StreamMetaInfo metaInfo = StreamMetaInfo.addModel(model); if (metaInfo != null) { + log.info("install index {}", model.getName()); ((BanyanDBStorageClient) client).createStream(metaInfo); } } diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBMetricsQueryDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBMetricsQueryDAO.java new file mode 100644 index 0000000000..96a12760f9 --- /dev/null +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBMetricsQueryDAO.java @@ -0,0 +1,51 @@ +/* + * 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.storage.plugin.banyandb; + +import org.apache.skywalking.oap.server.core.query.input.Duration; +import org.apache.skywalking.oap.server.core.query.input.MetricsCondition; +import org.apache.skywalking.oap.server.core.query.type.HeatMap; +import org.apache.skywalking.oap.server.core.query.type.MetricsValues; +import org.apache.skywalking.oap.server.core.storage.query.IMetricsQueryDAO; + +import java.io.IOException; +import java.util.Collections; +import java.util.List; + +public class BanyanDBMetricsQueryDAO implements IMetricsQueryDAO { + @Override + public long readMetricsValue(MetricsCondition condition, String valueColumnName, Duration duration) throws IOException { + return 0; + } + + @Override + public MetricsValues readMetricsValues(MetricsCondition condition, String valueColumnName, Duration duration) throws IOException { + return null; + } + + @Override + public List<MetricsValues> readLabeledMetricsValues(MetricsCondition condition, String valueColumnName, List<String> labels, Duration duration) throws IOException { + return Collections.emptyList(); + } + + @Override + public HeatMap readHeatMap(MetricsCondition condition, String valueColumnName, Duration duration) throws IOException { + return null; + } +} diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBStorageBuilderFactory.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBStorageBuilderFactory.java index b87d3d1dc5..0cb10763eb 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBStorageBuilderFactory.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBStorageBuilderFactory.java @@ -18,11 +18,17 @@ package org.apache.skywalking.oap.server.storage.plugin.banyandb; +import lombok.extern.slf4j.Slf4j; import org.apache.skywalking.oap.server.core.alarm.AlarmRecord; import org.apache.skywalking.oap.server.core.analysis.manual.endpoint.EndpointTraffic; import org.apache.skywalking.oap.server.core.analysis.manual.instance.InstanceTraffic; import org.apache.skywalking.oap.server.core.analysis.manual.log.LogRecord; import org.apache.skywalking.oap.server.core.analysis.manual.networkalias.NetworkAddressAlias; +import org.apache.skywalking.oap.server.core.analysis.manual.relation.endpoint.EndpointRelationServerSideMetrics; +import org.apache.skywalking.oap.server.core.analysis.manual.relation.instance.ServiceInstanceRelationClientSideMetrics; +import org.apache.skywalking.oap.server.core.analysis.manual.relation.instance.ServiceInstanceRelationServerSideMetrics; +import org.apache.skywalking.oap.server.core.analysis.manual.relation.service.ServiceRelationClientSideMetrics; +import org.apache.skywalking.oap.server.core.analysis.manual.relation.service.ServiceRelationServerSideMetrics; import org.apache.skywalking.oap.server.core.analysis.manual.segment.SegmentRecord; import org.apache.skywalking.oap.server.core.analysis.manual.service.ServiceTraffic; import org.apache.skywalking.oap.server.core.browser.manual.errorlog.BrowserErrorLogRecord; @@ -37,6 +43,7 @@ import org.apache.skywalking.oap.server.core.storage.StorageHashMapBuilder; import org.apache.skywalking.oap.server.core.storage.type.StorageBuilder; import org.apache.skywalking.oap.server.storage.plugin.banyandb.schema.AlarmRecordBuilder; import org.apache.skywalking.oap.server.storage.plugin.banyandb.schema.BrowserErrorLogRecordBuilder; +import org.apache.skywalking.oap.server.storage.plugin.banyandb.schema.EndpointRelationServerSideMetricsBuilder; import org.apache.skywalking.oap.server.storage.plugin.banyandb.schema.EventBuilder; import org.apache.skywalking.oap.server.storage.plugin.banyandb.schema.LogRecordBuilder; import org.apache.skywalking.oap.server.storage.plugin.banyandb.schema.Metadata; @@ -45,9 +52,16 @@ import org.apache.skywalking.oap.server.storage.plugin.banyandb.schema.ProfileTa import org.apache.skywalking.oap.server.storage.plugin.banyandb.schema.ProfileTaskRecordBuilder; import org.apache.skywalking.oap.server.storage.plugin.banyandb.schema.ProfileThreadSnapshotRecordBuilder; import org.apache.skywalking.oap.server.storage.plugin.banyandb.schema.SegmentRecordBuilder; +import org.apache.skywalking.oap.server.storage.plugin.banyandb.schema.ServiceInstanceRelationClientSideMetricsBuilder; +import org.apache.skywalking.oap.server.storage.plugin.banyandb.schema.ServiceInstanceRelationServerSideMetricsBuilder; +import org.apache.skywalking.oap.server.storage.plugin.banyandb.schema.ServiceRelationClientSideMetricsBuilder; +import org.apache.skywalking.oap.server.storage.plugin.banyandb.schema.ServiceRelationServerSideMetricsBuilder; import org.apache.skywalking.oap.server.storage.plugin.banyandb.schema.UITemplateBuilder; +@Slf4j public class BanyanDBStorageBuilderFactory implements StorageBuilderFactory { + private static final StorageBuilderFactory FALLBACK = new StorageBuilderFactory.Default(); + @Override public BuilderTemplateDefinition builderTemplate() { return new BuilderTemplateDefinition(StorageHashMapBuilder.class.getName(), "metrics-builder"); @@ -81,8 +95,18 @@ public class BanyanDBStorageBuilderFactory implements StorageBuilderFactory { return Metadata.EndpointTrafficBuilder.class; } else if (NetworkAddressAlias.class.equals(dataType)) { return NetworkAddressAliasBuilder.class; + } else if (EndpointRelationServerSideMetrics.class.equals(dataType)) { + return EndpointRelationServerSideMetricsBuilder.class; + } else if (ServiceRelationServerSideMetrics.class.equals(dataType)) { + return ServiceRelationServerSideMetricsBuilder.class; + } else if (ServiceRelationClientSideMetrics.class.equals(dataType)) { + return ServiceRelationClientSideMetricsBuilder.class; + } else if (ServiceInstanceRelationServerSideMetrics.class.equals(dataType)) { + return ServiceInstanceRelationServerSideMetricsBuilder.class; + } else if (ServiceInstanceRelationClientSideMetrics.class.equals(dataType)) { + return ServiceInstanceRelationClientSideMetricsBuilder.class; } - throw new UnsupportedOperationException("unsupported storage type"); + return FALLBACK.builderOf(dataType, defaultBuilder); } } diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBStorageClient.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBStorageClient.java index 2ee45b12f0..7d61e4e085 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBStorageClient.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBStorageClient.java @@ -31,9 +31,6 @@ import org.apache.skywalking.oap.server.library.client.healthcheck.HealthCheckab import org.apache.skywalking.oap.server.library.util.HealthChecker; import java.io.IOException; -import java.time.Instant; -import java.time.ZoneOffset; -import java.time.ZonedDateTime; /** * BanyanDBStorageClient is a simple wrapper for the underlying {@link BanyanDBClient}, @@ -71,10 +68,7 @@ public class BanyanDBStorageClient implements Client, HealthCheckable { public void createStream(StreamMetaInfo streamMetaInfo) { Stream stm = this.client.define(streamMetaInfo.getStream()); if (stm != null) { - // TODO: should be fixed in SDK - this.client.defineIndexRules(stm, ZonedDateTime.from(Instant.now()), - ZonedDateTime.of(2099, 1, 1, 0, 0, 0, 0, ZoneOffset.UTC), - streamMetaInfo.getIndexRules().toArray(new IndexRule[]{})); + this.client.defineIndexRules(stm, streamMetaInfo.getIndexRules().toArray(new IndexRule[]{})); } } diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBStorageProvider.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBStorageProvider.java index 64f8e96cbf..6d4340e48d 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBStorageProvider.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBStorageProvider.java @@ -21,6 +21,7 @@ package org.apache.skywalking.oap.server.storage.plugin.banyandb; import org.apache.skywalking.oap.server.core.CoreModule; import org.apache.skywalking.oap.server.core.config.ConfigService; import org.apache.skywalking.oap.server.core.storage.IBatchDAO; +import org.apache.skywalking.oap.server.core.storage.IHistoryDeleteDAO; import org.apache.skywalking.oap.server.core.storage.StorageBuilderFactory; import org.apache.skywalking.oap.server.core.storage.StorageDAO; import org.apache.skywalking.oap.server.core.storage.StorageModule; @@ -30,11 +31,15 @@ import org.apache.skywalking.oap.server.core.storage.model.ModelCreator; import org.apache.skywalking.oap.server.core.storage.profile.IProfileTaskLogQueryDAO; import org.apache.skywalking.oap.server.core.storage.profile.IProfileTaskQueryDAO; import org.apache.skywalking.oap.server.core.storage.profile.IProfileThreadSnapshotQueryDAO; +import org.apache.skywalking.oap.server.core.storage.query.IAggregationQueryDAO; import org.apache.skywalking.oap.server.core.storage.query.IAlarmQueryDAO; import org.apache.skywalking.oap.server.core.storage.query.IBrowserLogQueryDAO; import org.apache.skywalking.oap.server.core.storage.query.IEventQueryDAO; import org.apache.skywalking.oap.server.core.storage.query.ILogQueryDAO; import org.apache.skywalking.oap.server.core.storage.query.IMetadataQueryDAO; +import org.apache.skywalking.oap.server.core.storage.query.IMetricsQueryDAO; +import org.apache.skywalking.oap.server.core.storage.query.ITopNRecordsQueryDAO; +import org.apache.skywalking.oap.server.core.storage.query.ITopologyQueryDAO; import org.apache.skywalking.oap.server.core.storage.query.ITraceQueryDAO; import org.apache.skywalking.oap.server.library.module.ModuleConfig; import org.apache.skywalking.oap.server.library.module.ModuleDefine; @@ -45,6 +50,7 @@ import org.apache.skywalking.oap.server.storage.plugin.banyandb.stream.BanyanDBA import org.apache.skywalking.oap.server.storage.plugin.banyandb.stream.BanyanDBBatchDAO; import org.apache.skywalking.oap.server.storage.plugin.banyandb.stream.BanyanDBBrowserLogQueryDAO; import org.apache.skywalking.oap.server.storage.plugin.banyandb.stream.BanyanDBEventQueryDAO; +import org.apache.skywalking.oap.server.storage.plugin.banyandb.stream.BanyanDBHistoryDeleteDAO; import org.apache.skywalking.oap.server.storage.plugin.banyandb.stream.BanyanDBLogQueryDAO; import org.apache.skywalking.oap.server.storage.plugin.banyandb.stream.BanyanDBMetadataQueryDAO; import org.apache.skywalking.oap.server.storage.plugin.banyandb.stream.BanyanDBNetworkAddressAliasDAO; @@ -52,6 +58,7 @@ import org.apache.skywalking.oap.server.storage.plugin.banyandb.stream.BanyanDBP import org.apache.skywalking.oap.server.storage.plugin.banyandb.stream.BanyanDBProfileTaskQueryDAO; import org.apache.skywalking.oap.server.storage.plugin.banyandb.stream.BanyanDBProfileThreadSnapshotQueryDAO; import org.apache.skywalking.oap.server.storage.plugin.banyandb.stream.BanyanDBStorageDAO; +import org.apache.skywalking.oap.server.storage.plugin.banyandb.stream.BanyanDBTopologyQueryDAO; import org.apache.skywalking.oap.server.storage.plugin.banyandb.stream.BanyanDBTraceQueryDAO; import org.apache.skywalking.oap.server.storage.plugin.banyandb.stream.BanyanDBUITemplateManagementDAO; import org.apache.skywalking.oap.server.telemetry.TelemetryModule; @@ -88,25 +95,28 @@ public class BanyanDBStorageProvider extends ModuleProvider { this.client = new BanyanDBStorageClient(config.getHost(), config.getPort(), config.getGroup()); + // Stream this.registerServiceImplementation(IBatchDAO.class, new BanyanDBBatchDAO(client, config.getMaxBulkSize(), config.getFlushInterval(), config.getConcurrentWriteThreads())); this.registerServiceImplementation(StorageDAO.class, new BanyanDBStorageDAO(client)); - this.registerServiceImplementation(INetworkAddressAliasDAO.class, new BanyanDBNetworkAddressAliasDAO(client)); - this.registerServiceImplementation(ITraceQueryDAO.class, new BanyanDBTraceQueryDAO(client)); this.registerServiceImplementation(IBrowserLogQueryDAO.class, new BanyanDBBrowserLogQueryDAO(client)); this.registerServiceImplementation(IMetadataQueryDAO.class, new BanyanDBMetadataQueryDAO(client)); this.registerServiceImplementation(IAlarmQueryDAO.class, new BanyanDBAlarmQueryDAO(client)); this.registerServiceImplementation(ILogQueryDAO.class, new BanyanDBLogQueryDAO(client)); - this.registerServiceImplementation(IProfileTaskQueryDAO.class, new BanyanDBProfileTaskQueryDAO(client)); this.registerServiceImplementation(IProfileTaskLogQueryDAO.class, new BanyanDBProfileTaskLogQueryDAO(client, this.config.getFetchTaskLogMaxSize())); this.registerServiceImplementation( IProfileThreadSnapshotQueryDAO.class, new BanyanDBProfileThreadSnapshotQueryDAO(client)); this.registerServiceImplementation(UITemplateManagementDAO.class, new BanyanDBUITemplateManagementDAO(client)); - this.registerServiceImplementation(IEventQueryDAO.class, new BanyanDBEventQueryDAO(client)); + this.registerServiceImplementation(ITopologyQueryDAO.class, new BanyanDBTopologyQueryDAO(client)); + // TODO: metrics + this.registerServiceImplementation(IHistoryDeleteDAO.class, new BanyanDBHistoryDeleteDAO()); + this.registerServiceImplementation(IMetricsQueryDAO.class, new BanyanDBMetricsQueryDAO()); + this.registerServiceImplementation(IAggregationQueryDAO.class, new BanyanDBAggregationQueryDAO()); + this.registerServiceImplementation(ITopNRecordsQueryDAO.class, new BanyanDBTopNRecordsQueryDAO()); } @Override diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBIndexInstaller.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBTopNRecordsQueryDAO.java similarity index 50% copy from oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBIndexInstaller.java copy to oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBTopNRecordsQueryDAO.java index ffc5aaf586..97f549ddfb 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBIndexInstaller.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBTopNRecordsQueryDAO.java @@ -18,27 +18,18 @@ package org.apache.skywalking.oap.server.storage.plugin.banyandb; -import org.apache.skywalking.oap.server.core.storage.StorageException; -import org.apache.skywalking.oap.server.core.storage.model.Model; -import org.apache.skywalking.oap.server.core.storage.model.ModelInstaller; -import org.apache.skywalking.oap.server.library.client.Client; -import org.apache.skywalking.oap.server.library.module.ModuleManager; +import org.apache.skywalking.oap.server.core.query.input.Duration; +import org.apache.skywalking.oap.server.core.query.input.TopNCondition; +import org.apache.skywalking.oap.server.core.query.type.SelectedRecord; +import org.apache.skywalking.oap.server.core.storage.query.ITopNRecordsQueryDAO; -public class BanyanDBIndexInstaller extends ModelInstaller { - public BanyanDBIndexInstaller(Client client, ModuleManager moduleManager) { - super(client, moduleManager); - } - - @Override - protected boolean isExists(Model model) throws StorageException { - return false; - } +import java.io.IOException; +import java.util.Collections; +import java.util.List; +public class BanyanDBTopNRecordsQueryDAO implements ITopNRecordsQueryDAO { @Override - protected void createTable(Model model) throws StorageException { - StreamMetaInfo metaInfo = StreamMetaInfo.addModel(model); - if (metaInfo != null) { - ((BanyanDBStorageClient) client).createStream(metaInfo); - } + public List<SelectedRecord> readSampledRecords(TopNCondition condition, String valueColumnName, Duration duration) throws IOException { + return Collections.emptyList(); } } diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/StreamMetaInfo.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/StreamMetaInfo.java index 1fbf2eb636..9dda0ead72 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/StreamMetaInfo.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/StreamMetaInfo.java @@ -24,7 +24,7 @@ import com.google.protobuf.util.JsonFormat; import lombok.Builder; import lombok.Getter; import lombok.extern.slf4j.Slf4j; -import org.apache.skywalking.banyandb.database.v1.metadata.BanyandbMetadata; +import org.apache.skywalking.banyandb.database.v1.BanyandbDatabase; import org.apache.skywalking.banyandb.v1.client.metadata.Duration; import org.apache.skywalking.banyandb.v1.client.metadata.IndexRule; import org.apache.skywalking.banyandb.v1.client.metadata.Stream; @@ -46,6 +46,8 @@ public class StreamMetaInfo { public static final String TAG_FAMILY_SEARCHABLE = "searchable"; public static final String TAG_FAMILY_DATA = "data"; + public static final String ID = "id"; + private static final Map<String, StreamMetaInfo> STREAMS = new HashMap<>(); private final Model model; @@ -62,35 +64,33 @@ public class StreamMetaInfo { private final List<IndexRule> indexRules; public static StreamMetaInfo addModel(Model model) { - BanyandbMetadata.Stream pbStream = parseStreamFromJSON(model.getName()); + BanyandbDatabase.Stream pbStream = parseStreamFromJSON(model.getName()); if (pbStream == null) { - log.warn("fail to find the stream schema {}", model.getName()); + log.warn("fail to find stream schema {}", model.getName()); return null; } - BanyandbMetadata.Duration duration = pbStream.getOpts().getTtl(); - Duration ttl = fromProtobuf(duration); + BanyandbDatabase.Duration duration = pbStream.getOpts().getTtl(); + Duration ttl = Duration.fromProtobuf(duration); final Stream stream = new Stream(pbStream.getMetadata().getName(), pbStream.getOpts().getShardNum(), ttl); List<IndexRule> indexRules = new ArrayList<>(); stream.setEntityTagNames(pbStream.getEntity().getTagNamesList()); - for (BanyandbMetadata.TagFamilySpec pbTagFamilySpec : pbStream.getTagFamiliesList()) { - final TagFamilySpec tagFamilySpec = new TagFamilySpec(pbTagFamilySpec.getName()); - final boolean needIndexParse = pbTagFamilySpec.getName().equals(TAG_FAMILY_SEARCHABLE); - for (final BanyandbMetadata.TagSpec pbTagSpec : pbTagFamilySpec.getTagsList()) { - tagFamilySpec.addTagSpec(parseTagSpec(pbTagSpec)); - - // if the tag family equals to "searchable", build index rules - if (needIndexParse) { - BanyandbMetadata.IndexRule pbIndexRule = parseIndexRulesFromJSON(model.getName(), pbTagSpec.getName()); + + + for (BanyandbDatabase.TagFamilySpec pbTagFamilySpec : pbStream.getTagFamiliesList()) { + final TagFamilySpec tagFamilySpec = TagFamilySpec.fromProtobuf(pbTagFamilySpec); + stream.addTagFamilySpec(tagFamilySpec); + + // if the tag family equals to "searchable", build index rules + if (tagFamilySpec.getTagFamilyName().equals(TAG_FAMILY_SEARCHABLE)) { + for (final TagFamilySpec.TagSpec tagSpec : tagFamilySpec.getTagSpecs()) { + BanyandbDatabase.IndexRule pbIndexRule = parseIndexRulesFromJSON(model.getName(), tagSpec.getTagName()); if (pbIndexRule == null) { - log.warn("fail to find the index rule for {}", pbTagSpec.getName()); + log.warn("fail to find the index rule for {}", tagSpec.getTagName()); continue; } - IndexRule.IndexType indexType = fromProtobuf(pbIndexRule.getType()); - IndexRule.IndexLocation indexLocation = fromProtobuf(pbIndexRule.getLocation()); - IndexRule indexRule = new IndexRule(pbIndexRule.getMetadata().getName(), indexType, indexLocation); - indexRule.setTags(new ArrayList<>(pbIndexRule.getTagsList())); + IndexRule indexRule = IndexRule.fromProtobuf(pbIndexRule); indexRules.add(indexRule); } } @@ -99,31 +99,14 @@ public class StreamMetaInfo { return StreamMetaInfo.builder().model(model).stream(stream).indexRules(indexRules).build(); } - private static TagFamilySpec.TagSpec parseTagSpec(BanyandbMetadata.TagSpec pbTagSpec) { - switch (pbTagSpec.getType()) { - case TAG_TYPE_INT: - return TagFamilySpec.TagSpec.newIntTag(pbTagSpec.getName()); - case TAG_TYPE_INT_ARRAY: - return TagFamilySpec.TagSpec.newIntArrayTag(pbTagSpec.getName()); - case TAG_TYPE_STRING: - return TagFamilySpec.TagSpec.newStringTag(pbTagSpec.getName()); - case TAG_TYPE_STRING_ARRAY: - return TagFamilySpec.TagSpec.newStringArrayTag(pbTagSpec.getName()); - case TAG_TYPE_DATA_BINARY: - return TagFamilySpec.TagSpec.newBinaryTag(pbTagSpec.getName()); - default: - throw new IllegalArgumentException("unrecognized tag type"); - } - } - - private static BanyandbMetadata.Stream parseStreamFromJSON(String name) { + private static BanyandbDatabase.Stream parseStreamFromJSON(String name) { try { InputStream is = StreamMetaInfo.class.getClassLoader().getResourceAsStream("metadata/" + name + ".json"); if (is == null) { return null; } String result = CharStreams.toString(new InputStreamReader(is, Charsets.UTF_8)); - BanyandbMetadata.Stream.Builder b = BanyandbMetadata.Stream.newBuilder(); + BanyandbDatabase.Stream.Builder b = BanyandbDatabase.Stream.newBuilder(); JsonFormat.parser().merge(result, b); return b.build(); } catch (IOException ioEx) { @@ -132,7 +115,7 @@ public class StreamMetaInfo { } } - private static BanyandbMetadata.IndexRule parseIndexRulesFromJSON(String streamName, String name) { + private static BanyandbDatabase.IndexRule parseIndexRulesFromJSON(String streamName, String name) { try { InputStream is = StreamMetaInfo.class.getClassLoader().getResourceAsStream(String.join("/", new String[]{"metadata", "index_rules", streamName, name + ".json"})); @@ -140,7 +123,7 @@ public class StreamMetaInfo { return null; } String result = CharStreams.toString(new InputStreamReader(is, Charsets.UTF_8)); - BanyandbMetadata.IndexRule.Builder b = BanyandbMetadata.IndexRule.newBuilder(); + BanyandbDatabase.IndexRule.Builder b = BanyandbDatabase.IndexRule.newBuilder(); JsonFormat.parser().merge(result, b); return b.build(); } catch (IOException ioEx) { @@ -148,44 +131,4 @@ public class StreamMetaInfo { return null; } } - - // TODO: change modifier to public in SDK - static Duration fromProtobuf(BanyandbMetadata.Duration duration) { - switch (duration.getUnit()) { - case DURATION_UNIT_DAY: - return Duration.ofDays(duration.getVal()); - case DURATION_UNIT_HOUR: - return Duration.ofHours(duration.getVal()); - case DURATION_UNIT_MONTH: - return Duration.ofMonths(duration.getVal()); - case DURATION_UNIT_WEEK: - return Duration.ofWeeks(duration.getVal()); - default: - throw new IllegalArgumentException("unrecognized DurationUnit"); - } - } - - // TODO: change modifier to public in SDK - private static IndexRule.IndexType fromProtobuf(BanyandbMetadata.IndexRule.Type type) { - switch (type) { - case TYPE_TREE: - return IndexRule.IndexType.TREE; - case TYPE_INVERTED: - return IndexRule.IndexType.INVERTED; - default: - throw new IllegalArgumentException("unrecognized index type"); - } - } - - // TODO: change modifier to public in SDK - private static IndexRule.IndexLocation fromProtobuf(BanyandbMetadata.IndexRule.Location loc) { - switch (loc) { - case LOCATION_GLOBAL: - return IndexRule.IndexLocation.GLOBAL; - case LOCATION_SERIES: - return IndexRule.IndexLocation.SERIES; - default: - throw new IllegalArgumentException("unrecognized index location"); - } - } } diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/AlarmRecordBuilder.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/AlarmRecordBuilder.java index a8a2863306..260fc17664 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/AlarmRecordBuilder.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/AlarmRecordBuilder.java @@ -19,7 +19,7 @@ package org.apache.skywalking.oap.server.storage.plugin.banyandb.schema; import com.google.common.collect.ImmutableList; -import org.apache.skywalking.banyandb.v1.Banyandb; +import org.apache.skywalking.banyandb.model.v1.BanyandbModel; import org.apache.skywalking.banyandb.v1.client.SerializableTag; import org.apache.skywalking.banyandb.v1.client.TagAndValue; import org.apache.skywalking.oap.server.core.alarm.AlarmRecord; @@ -33,8 +33,8 @@ public class AlarmRecordBuilder extends BanyanDBStorageDataBuilder<AlarmRecord> ); @Override - protected List<SerializableTag<Banyandb.TagValue>> searchableTags(AlarmRecord entity) { - List<SerializableTag<Banyandb.TagValue>> searchable = new ArrayList<>(2); + protected List<SerializableTag<BanyandbModel.TagValue>> searchableTags(AlarmRecord entity) { + List<SerializableTag<BanyandbModel.TagValue>> searchable = new ArrayList<>(2); searchable.add(TagAndValue.longField(entity.getScope())); searchable.add(TagAndValue.longField(entity.getStartTime())); searchable.addAll(filterSearchableTags(entity.getTags(), INDEXED_TAGS)); @@ -42,8 +42,8 @@ public class AlarmRecordBuilder extends BanyanDBStorageDataBuilder<AlarmRecord> } @Override - protected List<SerializableTag<Banyandb.TagValue>> dataTags(AlarmRecord entity) { - List<SerializableTag<Banyandb.TagValue>> data = new ArrayList<>(6); + protected List<SerializableTag<BanyandbModel.TagValue>> dataTags(AlarmRecord entity) { + List<SerializableTag<BanyandbModel.TagValue>> data = new ArrayList<>(6); data.add(TagAndValue.stringField(entity.getName())); data.add(TagAndValue.stringField(entity.getId0())); data.add(TagAndValue.stringField(entity.getId1())); diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/BanyanDBStorageDataBuilder.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/BanyanDBStorageDataBuilder.java index 03ee0328f3..814f3149f7 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/BanyanDBStorageDataBuilder.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/BanyanDBStorageDataBuilder.java @@ -18,7 +18,7 @@ package org.apache.skywalking.oap.server.storage.plugin.banyandb.schema; -import org.apache.skywalking.banyandb.v1.Banyandb; +import org.apache.skywalking.banyandb.model.v1.BanyandbModel; import org.apache.skywalking.banyandb.v1.client.SerializableTag; import org.apache.skywalking.banyandb.v1.client.StreamWrite; import org.apache.skywalking.banyandb.v1.client.TagAndValue; @@ -55,17 +55,17 @@ public abstract class BanyanDBStorageDataBuilder<T extends StorageData> implemen return null; } - protected List<SerializableTag<Banyandb.TagValue>> filterSearchableTags(List<Tag> rawTags, List<String> indexTags) { + protected List<SerializableTag<BanyandbModel.TagValue>> filterSearchableTags(List<Tag> rawTags, List<String> indexTags) { if (rawTags == null) { return Collections.emptyList(); } - Map<String, SerializableTag<Banyandb.TagValue>> map = new HashMap<>(); + Map<String, SerializableTag<BanyandbModel.TagValue>> map = new HashMap<>(); for (final Tag tag : rawTags) { map.put(tag.getKey().toLowerCase(), TagAndValue.stringField(tag.getValue())); } - final List<SerializableTag<Banyandb.TagValue>> tags = new ArrayList<>(); + final List<SerializableTag<BanyandbModel.TagValue>> tags = new ArrayList<>(); for (String indexedTag : indexTags) { - SerializableTag<Banyandb.TagValue> tag = map.get(indexedTag); + SerializableTag<BanyandbModel.TagValue> tag = map.get(indexedTag); if (tag == null) { tags.add(TagAndValue.nullField()); } else { @@ -80,9 +80,9 @@ public abstract class BanyanDBStorageDataBuilder<T extends StorageData> implemen return entity.id(); } - abstract protected List<SerializableTag<Banyandb.TagValue>> searchableTags(T entity); + abstract protected List<SerializableTag<BanyandbModel.TagValue>> searchableTags(T entity); - protected List<SerializableTag<Banyandb.TagValue>> dataTags(T entity) { + protected List<SerializableTag<BanyandbModel.TagValue>> dataTags(T entity) { return Collections.emptyList(); } } diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/BrowserErrorLogRecordBuilder.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/BrowserErrorLogRecordBuilder.java index 98b9bd0e6b..034565249b 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/BrowserErrorLogRecordBuilder.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/BrowserErrorLogRecordBuilder.java @@ -18,7 +18,7 @@ package org.apache.skywalking.oap.server.storage.plugin.banyandb.schema; -import org.apache.skywalking.banyandb.v1.Banyandb; +import org.apache.skywalking.banyandb.model.v1.BanyandbModel; import org.apache.skywalking.banyandb.v1.client.SerializableTag; import org.apache.skywalking.banyandb.v1.client.TagAndValue; import org.apache.skywalking.oap.server.core.browser.manual.errorlog.BrowserErrorLogRecord; @@ -29,8 +29,8 @@ import java.util.List; public class BrowserErrorLogRecordBuilder extends BanyanDBStorageDataBuilder<BrowserErrorLogRecord> { @Override - protected List<SerializableTag<Banyandb.TagValue>> searchableTags(BrowserErrorLogRecord entity) { - List<SerializableTag<Banyandb.TagValue>> searchable = new ArrayList<>(); + protected List<SerializableTag<BanyandbModel.TagValue>> searchableTags(BrowserErrorLogRecord entity) { + List<SerializableTag<BanyandbModel.TagValue>> searchable = new ArrayList<>(); searchable.add(TagAndValue.stringField(entity.getUniqueId())); searchable.add(TagAndValue.stringField(entity.getServiceId())); searchable.add(TagAndValue.stringField(entity.getServiceVersionId())); @@ -40,7 +40,7 @@ public class BrowserErrorLogRecordBuilder extends BanyanDBStorageDataBuilder<Bro } @Override - protected List<SerializableTag<Banyandb.TagValue>> dataTags(BrowserErrorLogRecord entity) { + protected List<SerializableTag<BanyandbModel.TagValue>> dataTags(BrowserErrorLogRecord entity) { return Collections.singletonList(TagAndValue.binaryField(entity.getDataBinary())); } } diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/NetworkAddressAliasBuilder.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/EndpointRelationServerSideMetricsBuilder.java similarity index 57% copy from oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/NetworkAddressAliasBuilder.java copy to oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/EndpointRelationServerSideMetricsBuilder.java index 83bf0abfab..ec25c79e10 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/NetworkAddressAliasBuilder.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/EndpointRelationServerSideMetricsBuilder.java @@ -18,27 +18,27 @@ package org.apache.skywalking.oap.server.storage.plugin.banyandb.schema; -import org.apache.skywalking.banyandb.v1.Banyandb; +import org.apache.skywalking.banyandb.model.v1.BanyandbModel; import org.apache.skywalking.banyandb.v1.client.SerializableTag; import org.apache.skywalking.banyandb.v1.client.TagAndValue; -import org.apache.skywalking.oap.server.core.analysis.manual.networkalias.NetworkAddressAlias; +import org.apache.skywalking.oap.server.core.analysis.manual.relation.endpoint.EndpointRelationServerSideMetrics; import java.util.ArrayList; import java.util.Collections; import java.util.List; -public class NetworkAddressAliasBuilder extends BanyanDBStorageDataBuilder<NetworkAddressAlias> { +public class EndpointRelationServerSideMetricsBuilder extends BanyanDBStorageDataBuilder<EndpointRelationServerSideMetrics> { @Override - protected List<SerializableTag<Banyandb.TagValue>> searchableTags(NetworkAddressAlias entity) { - return Collections.singletonList(TagAndValue.longField(entity.getLastUpdateTimeBucket())); + protected List<SerializableTag<BanyandbModel.TagValue>> searchableTags(EndpointRelationServerSideMetrics entity) { + List<SerializableTag<BanyandbModel.TagValue>> searchable = new ArrayList<>(); + searchable.add(TagAndValue.stringField(entity.getSourceEndpoint())); + searchable.add(TagAndValue.stringField(entity.getDestEndpoint())); + searchable.add(TagAndValue.stringField(entity.getEntityId())); + return searchable; } @Override - protected List<SerializableTag<Banyandb.TagValue>> dataTags(NetworkAddressAlias entity) { - List<SerializableTag<Banyandb.TagValue>> data = new ArrayList<>(); - data.add(TagAndValue.stringField(entity.getAddress())); - data.add(TagAndValue.stringField(entity.getRepresentServiceId())); - data.add(TagAndValue.stringField(entity.getRepresentServiceInstanceId())); - return data; + protected List<SerializableTag<BanyandbModel.TagValue>> dataTags(EndpointRelationServerSideMetrics entity) { + return Collections.singletonList(TagAndValue.longField(entity.getComponentId())); } } diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/EventBuilder.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/EventBuilder.java index bc604776c9..512fe2aa5c 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/EventBuilder.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/EventBuilder.java @@ -19,7 +19,7 @@ package org.apache.skywalking.oap.server.storage.plugin.banyandb.schema; import com.google.common.collect.ImmutableList; -import org.apache.skywalking.banyandb.v1.Banyandb; +import org.apache.skywalking.banyandb.model.v1.BanyandbModel; import org.apache.skywalking.banyandb.v1.client.SerializableTag; import org.apache.skywalking.banyandb.v1.client.TagAndValue; import org.apache.skywalking.oap.server.core.source.Event; @@ -29,8 +29,8 @@ import java.util.List; public class EventBuilder extends BanyanDBStorageDataBuilder<Event> { @Override - protected List<SerializableTag<Banyandb.TagValue>> searchableTags(Event entity) { - List<SerializableTag<Banyandb.TagValue>> searchable = new ArrayList<>(8); + protected List<SerializableTag<BanyandbModel.TagValue>> searchableTags(Event entity) { + List<SerializableTag<BanyandbModel.TagValue>> searchable = new ArrayList<>(8); searchable.add(TagAndValue.stringField(entity.getUuid())); searchable.add(TagAndValue.stringField(entity.getService())); searchable.add(TagAndValue.stringField(entity.getServiceInstance())); @@ -43,7 +43,7 @@ public class EventBuilder extends BanyanDBStorageDataBuilder<Event> { } @Override - protected List<SerializableTag<Banyandb.TagValue>> dataTags(Event entity) { + protected List<SerializableTag<BanyandbModel.TagValue>> dataTags(Event entity) { return ImmutableList.of( TagAndValue.stringField(entity.getMessage()), TagAndValue.stringField(entity.getParameters()) diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/LogRecordBuilder.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/LogRecordBuilder.java index 02809d68aa..8fddd927a4 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/LogRecordBuilder.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/LogRecordBuilder.java @@ -19,7 +19,7 @@ package org.apache.skywalking.oap.server.storage.plugin.banyandb.schema; import com.google.common.collect.ImmutableList; -import org.apache.skywalking.banyandb.v1.Banyandb; +import org.apache.skywalking.banyandb.model.v1.BanyandbModel; import org.apache.skywalking.banyandb.v1.client.SerializableTag; import org.apache.skywalking.banyandb.v1.client.TagAndValue; import org.apache.skywalking.oap.server.core.analysis.manual.log.LogRecord; @@ -33,8 +33,8 @@ public class LogRecordBuilder extends BanyanDBStorageDataBuilder<LogRecord> { ); @Override - protected List<SerializableTag<Banyandb.TagValue>> searchableTags(LogRecord entity) { - List<SerializableTag<Banyandb.TagValue>> searchable = new ArrayList<>(); + protected List<SerializableTag<BanyandbModel.TagValue>> searchableTags(LogRecord entity) { + List<SerializableTag<BanyandbModel.TagValue>> searchable = new ArrayList<>(); searchable.add(TagAndValue.stringField(entity.getUniqueId())); searchable.add(TagAndValue.stringField(entity.getServiceId())); searchable.add(TagAndValue.stringField(entity.getServiceInstanceId())); @@ -48,7 +48,7 @@ public class LogRecordBuilder extends BanyanDBStorageDataBuilder<LogRecord> { } @Override - protected List<SerializableTag<Banyandb.TagValue>> dataTags(LogRecord entity) { + protected List<SerializableTag<BanyandbModel.TagValue>> dataTags(LogRecord entity) { return ImmutableList.of( TagAndValue.stringField(entity.getContent()), TagAndValue.longField(entity.getContentType()), diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/Metadata.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/Metadata.java index 66f3218965..545cd507d6 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/Metadata.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/Metadata.java @@ -18,9 +18,10 @@ package org.apache.skywalking.oap.server.storage.plugin.banyandb.schema; -import org.apache.skywalking.banyandb.v1.Banyandb; +import org.apache.skywalking.banyandb.model.v1.BanyandbModel; import org.apache.skywalking.banyandb.v1.client.SerializableTag; import org.apache.skywalking.banyandb.v1.client.TagAndValue; +import org.apache.skywalking.oap.server.core.analysis.Layer; import org.apache.skywalking.oap.server.core.analysis.manual.endpoint.EndpointTraffic; import org.apache.skywalking.oap.server.core.analysis.manual.instance.InstanceTraffic; import org.apache.skywalking.oap.server.core.analysis.manual.service.ServiceTraffic; @@ -29,39 +30,68 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import static org.apache.skywalking.oap.server.core.Const.DOUBLE_COLONS_SPLIT; + public class Metadata { public static class ServiceTrafficBuilder extends BanyanDBStorageDataBuilder<ServiceTraffic> { @Override - protected List<SerializableTag<Banyandb.TagValue>> searchableTags(ServiceTraffic entity) { - List<SerializableTag<Banyandb.TagValue>> searchable = new ArrayList<>(3); - searchable.add(TagAndValue.stringField(entity.getName())); - searchable.add(TagAndValue.longField(entity.getNodeType().value())); + protected List<SerializableTag<BanyandbModel.TagValue>> searchableTags(ServiceTraffic entity) { + final String serviceName = entity.getName(); + entity.setShortName(serviceName); + if (entity.isNormal()) { + int groupIdx = serviceName.indexOf(DOUBLE_COLONS_SPLIT); + if (groupIdx > 0) { + entity.setGroup(serviceName.substring(0, groupIdx)); + entity.setShortName(serviceName.substring(groupIdx + 2)); + } + } + List<SerializableTag<BanyandbModel.TagValue>> searchable = new ArrayList<>(4); + // 0 - serviceName + searchable.add(TagAndValue.stringField(serviceName)); + // 1 - serviceID + searchable.add(TagAndValue.stringField(entity.getServiceId())); + // 2 - layer + Layer layer = entity.getLayer(); + searchable.add(TagAndValue.longField(layer != null ? layer.value() : Layer.UNDEFINED.value())); + // 3 - group searchable.add(TagAndValue.stringField(entity.getGroup())); return searchable; } + + @Override + protected List<SerializableTag<BanyandbModel.TagValue>> dataTags(ServiceTraffic entity) { + // shortName + return Collections.singletonList(TagAndValue.stringField(entity.getShortName())); + } } public static class EndpointTrafficBuilder extends BanyanDBStorageDataBuilder<EndpointTraffic> { @Override - protected List<SerializableTag<Banyandb.TagValue>> searchableTags(EndpointTraffic entity) { - List<SerializableTag<Banyandb.TagValue>> searchable = new ArrayList<>(2); - searchable.add(TagAndValue.stringField(entity.getServiceId())); + protected List<SerializableTag<BanyandbModel.TagValue>> searchableTags(EndpointTraffic entity) { + List<SerializableTag<BanyandbModel.TagValue>> searchable = new ArrayList<>(2); + // 0 - name searchable.add(TagAndValue.stringField(entity.getName())); + // 1 - serviceID + searchable.add(TagAndValue.stringField(entity.getServiceId())); return searchable; } } public static class InstanceTrafficBuilder extends BanyanDBStorageDataBuilder<InstanceTraffic> { @Override - protected List<SerializableTag<Banyandb.TagValue>> searchableTags(InstanceTraffic entity) { - List<SerializableTag<Banyandb.TagValue>> searchable = new ArrayList<>(2); + protected List<SerializableTag<BanyandbModel.TagValue>> searchableTags(InstanceTraffic entity) { + List<SerializableTag<BanyandbModel.TagValue>> searchable = new ArrayList<>(3); + // serviceID searchable.add(TagAndValue.stringField(entity.getServiceId())); + // lastPingTimestamp searchable.add(TagAndValue.longField(entity.getLastPingTimestamp())); + // ID: we have to duplicate "ID" here for query + searchable.add(TagAndValue.stringField(entity.id())); return searchable; } @Override - protected List<SerializableTag<Banyandb.TagValue>> dataTags(InstanceTraffic entity) { + protected List<SerializableTag<BanyandbModel.TagValue>> dataTags(InstanceTraffic entity) { return Collections.singletonList(TagAndValue.binaryField( entity.serialize().build().toByteArray() )); diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/NetworkAddressAliasBuilder.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/NetworkAddressAliasBuilder.java index 83bf0abfab..ee85a50b03 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/NetworkAddressAliasBuilder.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/NetworkAddressAliasBuilder.java @@ -18,7 +18,7 @@ package org.apache.skywalking.oap.server.storage.plugin.banyandb.schema; -import org.apache.skywalking.banyandb.v1.Banyandb; +import org.apache.skywalking.banyandb.model.v1.BanyandbModel; import org.apache.skywalking.banyandb.v1.client.SerializableTag; import org.apache.skywalking.banyandb.v1.client.TagAndValue; import org.apache.skywalking.oap.server.core.analysis.manual.networkalias.NetworkAddressAlias; @@ -29,13 +29,13 @@ import java.util.List; public class NetworkAddressAliasBuilder extends BanyanDBStorageDataBuilder<NetworkAddressAlias> { @Override - protected List<SerializableTag<Banyandb.TagValue>> searchableTags(NetworkAddressAlias entity) { + protected List<SerializableTag<BanyandbModel.TagValue>> searchableTags(NetworkAddressAlias entity) { return Collections.singletonList(TagAndValue.longField(entity.getLastUpdateTimeBucket())); } @Override - protected List<SerializableTag<Banyandb.TagValue>> dataTags(NetworkAddressAlias entity) { - List<SerializableTag<Banyandb.TagValue>> data = new ArrayList<>(); + protected List<SerializableTag<BanyandbModel.TagValue>> dataTags(NetworkAddressAlias entity) { + List<SerializableTag<BanyandbModel.TagValue>> data = new ArrayList<>(); data.add(TagAndValue.stringField(entity.getAddress())); data.add(TagAndValue.stringField(entity.getRepresentServiceId())); data.add(TagAndValue.stringField(entity.getRepresentServiceInstanceId())); diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ProfileTaskLogRecordBuilder.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ProfileTaskLogRecordBuilder.java index 888cac6b10..a0cab9c112 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ProfileTaskLogRecordBuilder.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ProfileTaskLogRecordBuilder.java @@ -18,7 +18,7 @@ package org.apache.skywalking.oap.server.storage.plugin.banyandb.schema; -import org.apache.skywalking.banyandb.v1.Banyandb; +import org.apache.skywalking.banyandb.model.v1.BanyandbModel; import org.apache.skywalking.banyandb.v1.client.SerializableTag; import org.apache.skywalking.banyandb.v1.client.TagAndValue; import org.apache.skywalking.oap.server.core.profile.ProfileTaskLogRecord; @@ -29,13 +29,13 @@ import java.util.List; public class ProfileTaskLogRecordBuilder extends BanyanDBStorageDataBuilder<ProfileTaskLogRecord> { @Override - protected List<SerializableTag<Banyandb.TagValue>> searchableTags(ProfileTaskLogRecord entity) { + protected List<SerializableTag<BanyandbModel.TagValue>> searchableTags(ProfileTaskLogRecord entity) { return Collections.singletonList(TagAndValue.longField(entity.getOperationTime())); } @Override - protected List<SerializableTag<Banyandb.TagValue>> dataTags(ProfileTaskLogRecord entity) { - List<SerializableTag<Banyandb.TagValue>> data = new ArrayList<>(); + protected List<SerializableTag<BanyandbModel.TagValue>> dataTags(ProfileTaskLogRecord entity) { + List<SerializableTag<BanyandbModel.TagValue>> data = new ArrayList<>(); data.add(TagAndValue.stringField(entity.getTaskId())); data.add(TagAndValue.stringField(entity.getInstanceId())); data.add(TagAndValue.longField(entity.getOperationType())); diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ProfileTaskRecordBuilder.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ProfileTaskRecordBuilder.java index b107cadc31..bc91290976 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ProfileTaskRecordBuilder.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ProfileTaskRecordBuilder.java @@ -18,7 +18,7 @@ package org.apache.skywalking.oap.server.storage.plugin.banyandb.schema; -import org.apache.skywalking.banyandb.v1.Banyandb; +import org.apache.skywalking.banyandb.model.v1.BanyandbModel; import org.apache.skywalking.banyandb.v1.client.SerializableTag; import org.apache.skywalking.banyandb.v1.client.TagAndValue; import org.apache.skywalking.oap.server.core.profile.ProfileTaskRecord; @@ -28,8 +28,8 @@ import java.util.List; public class ProfileTaskRecordBuilder extends BanyanDBStorageDataBuilder<ProfileTaskRecord> { @Override - protected List<SerializableTag<Banyandb.TagValue>> searchableTags(ProfileTaskRecord entity) { - List<SerializableTag<Banyandb.TagValue>> searchable = new ArrayList<>(9); + protected List<SerializableTag<BanyandbModel.TagValue>> searchableTags(ProfileTaskRecord entity) { + List<SerializableTag<BanyandbModel.TagValue>> searchable = new ArrayList<>(9); searchable.add(TagAndValue.stringField(entity.id())); searchable.add(TagAndValue.stringField(entity.getServiceId())); searchable.add(TagAndValue.stringField(entity.getEndpointName())); diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ProfileThreadSnapshotRecordBuilder.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ProfileThreadSnapshotRecordBuilder.java index 10032246ec..28c0ba5f38 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ProfileThreadSnapshotRecordBuilder.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ProfileThreadSnapshotRecordBuilder.java @@ -18,7 +18,7 @@ package org.apache.skywalking.oap.server.storage.plugin.banyandb.schema; -import org.apache.skywalking.banyandb.v1.Banyandb; +import org.apache.skywalking.banyandb.model.v1.BanyandbModel; import org.apache.skywalking.banyandb.v1.client.SerializableTag; import org.apache.skywalking.banyandb.v1.client.TagAndValue; import org.apache.skywalking.oap.server.core.profile.ProfileThreadSnapshotRecord; @@ -29,8 +29,8 @@ import java.util.List; public class ProfileThreadSnapshotRecordBuilder extends BanyanDBStorageDataBuilder<ProfileThreadSnapshotRecord> { @Override - protected List<SerializableTag<Banyandb.TagValue>> searchableTags(ProfileThreadSnapshotRecord entity) { - List<SerializableTag<Banyandb.TagValue>> searchable = new ArrayList<>(4); + protected List<SerializableTag<BanyandbModel.TagValue>> searchableTags(ProfileThreadSnapshotRecord entity) { + List<SerializableTag<BanyandbModel.TagValue>> searchable = new ArrayList<>(4); searchable.add(TagAndValue.stringField(entity.getTaskId())); searchable.add(TagAndValue.stringField(entity.getSegmentId())); searchable.add(TagAndValue.longField(entity.getDumpTime())); @@ -39,7 +39,7 @@ public class ProfileThreadSnapshotRecordBuilder extends BanyanDBStorageDataBuild } @Override - protected List<SerializableTag<Banyandb.TagValue>> dataTags(ProfileThreadSnapshotRecord entity) { + protected List<SerializableTag<BanyandbModel.TagValue>> dataTags(ProfileThreadSnapshotRecord entity) { return Collections.singletonList(TagAndValue.binaryField(entity.getStackBinary())); } } diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/SegmentRecordBuilder.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/SegmentRecordBuilder.java index a87dc9aa86..0aa54cd3c1 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/SegmentRecordBuilder.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/SegmentRecordBuilder.java @@ -19,7 +19,7 @@ package org.apache.skywalking.oap.server.storage.plugin.banyandb.schema; import com.google.common.collect.ImmutableList; -import org.apache.skywalking.banyandb.v1.Banyandb; +import org.apache.skywalking.banyandb.model.v1.BanyandbModel; import org.apache.skywalking.banyandb.v1.client.SerializableTag; import org.apache.skywalking.banyandb.v1.client.TagAndValue; import org.apache.skywalking.oap.server.core.analysis.manual.segment.SegmentRecord; @@ -40,8 +40,8 @@ public class SegmentRecordBuilder extends BanyanDBStorageDataBuilder<SegmentReco ); @Override - protected List<SerializableTag<Banyandb.TagValue>> searchableTags(SegmentRecord segmentRecord) { - List<SerializableTag<Banyandb.TagValue>> searchable = new ArrayList<>(10); + protected List<SerializableTag<BanyandbModel.TagValue>> searchableTags(SegmentRecord segmentRecord) { + List<SerializableTag<BanyandbModel.TagValue>> searchable = new ArrayList<>(10); searchable.add(TagAndValue.stringField(segmentRecord.getTraceId())); searchable.add(TagAndValue.stringField(segmentRecord.getServiceId())); searchable.add(TagAndValue.stringField(segmentRecord.getServiceInstanceId())); @@ -54,7 +54,7 @@ public class SegmentRecordBuilder extends BanyanDBStorageDataBuilder<SegmentReco } @Override - protected List<SerializableTag<Banyandb.TagValue>> dataTags(SegmentRecord entity) { + protected List<SerializableTag<BanyandbModel.TagValue>> dataTags(SegmentRecord entity) { return Collections.singletonList(TagAndValue.binaryField(entity.getDataBinary())); } } diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/NetworkAddressAliasBuilder.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ServiceInstanceRelationClientSideMetricsBuilder.java similarity index 52% copy from oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/NetworkAddressAliasBuilder.java copy to oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ServiceInstanceRelationClientSideMetricsBuilder.java index 83bf0abfab..e940f6d291 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/NetworkAddressAliasBuilder.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ServiceInstanceRelationClientSideMetricsBuilder.java @@ -18,27 +18,29 @@ package org.apache.skywalking.oap.server.storage.plugin.banyandb.schema; -import org.apache.skywalking.banyandb.v1.Banyandb; +import org.apache.skywalking.banyandb.model.v1.BanyandbModel; import org.apache.skywalking.banyandb.v1.client.SerializableTag; import org.apache.skywalking.banyandb.v1.client.TagAndValue; -import org.apache.skywalking.oap.server.core.analysis.manual.networkalias.NetworkAddressAlias; +import org.apache.skywalking.oap.server.core.analysis.manual.relation.instance.ServiceInstanceRelationClientSideMetrics; import java.util.ArrayList; import java.util.Collections; import java.util.List; -public class NetworkAddressAliasBuilder extends BanyanDBStorageDataBuilder<NetworkAddressAlias> { +public class ServiceInstanceRelationClientSideMetricsBuilder extends BanyanDBStorageDataBuilder<ServiceInstanceRelationClientSideMetrics> { @Override - protected List<SerializableTag<Banyandb.TagValue>> searchableTags(NetworkAddressAlias entity) { - return Collections.singletonList(TagAndValue.longField(entity.getLastUpdateTimeBucket())); + protected List<SerializableTag<BanyandbModel.TagValue>> searchableTags(ServiceInstanceRelationClientSideMetrics entity) { + List<SerializableTag<BanyandbModel.TagValue>> searchable = new ArrayList<>(); + searchable.add(TagAndValue.stringField(entity.getSourceServiceId())); + searchable.add(TagAndValue.stringField(entity.getSourceServiceInstanceId())); + searchable.add(TagAndValue.stringField(entity.getDestServiceId())); + searchable.add(TagAndValue.stringField(entity.getDestServiceInstanceId())); + searchable.add(TagAndValue.stringField(entity.getEntityId())); + return searchable; } @Override - protected List<SerializableTag<Banyandb.TagValue>> dataTags(NetworkAddressAlias entity) { - List<SerializableTag<Banyandb.TagValue>> data = new ArrayList<>(); - data.add(TagAndValue.stringField(entity.getAddress())); - data.add(TagAndValue.stringField(entity.getRepresentServiceId())); - data.add(TagAndValue.stringField(entity.getRepresentServiceInstanceId())); - return data; + protected List<SerializableTag<BanyandbModel.TagValue>> dataTags(ServiceInstanceRelationClientSideMetrics entity) { + return Collections.singletonList(TagAndValue.longField(entity.getComponentId())); } } diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/NetworkAddressAliasBuilder.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ServiceInstanceRelationServerSideMetricsBuilder.java similarity index 52% copy from oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/NetworkAddressAliasBuilder.java copy to oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ServiceInstanceRelationServerSideMetricsBuilder.java index 83bf0abfab..43495bc148 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/NetworkAddressAliasBuilder.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ServiceInstanceRelationServerSideMetricsBuilder.java @@ -18,27 +18,29 @@ package org.apache.skywalking.oap.server.storage.plugin.banyandb.schema; -import org.apache.skywalking.banyandb.v1.Banyandb; +import org.apache.skywalking.banyandb.model.v1.BanyandbModel; import org.apache.skywalking.banyandb.v1.client.SerializableTag; import org.apache.skywalking.banyandb.v1.client.TagAndValue; -import org.apache.skywalking.oap.server.core.analysis.manual.networkalias.NetworkAddressAlias; +import org.apache.skywalking.oap.server.core.analysis.manual.relation.instance.ServiceInstanceRelationServerSideMetrics; import java.util.ArrayList; import java.util.Collections; import java.util.List; -public class NetworkAddressAliasBuilder extends BanyanDBStorageDataBuilder<NetworkAddressAlias> { +public class ServiceInstanceRelationServerSideMetricsBuilder extends BanyanDBStorageDataBuilder<ServiceInstanceRelationServerSideMetrics> { @Override - protected List<SerializableTag<Banyandb.TagValue>> searchableTags(NetworkAddressAlias entity) { - return Collections.singletonList(TagAndValue.longField(entity.getLastUpdateTimeBucket())); + protected List<SerializableTag<BanyandbModel.TagValue>> searchableTags(ServiceInstanceRelationServerSideMetrics entity) { + List<SerializableTag<BanyandbModel.TagValue>> searchable = new ArrayList<>(); + searchable.add(TagAndValue.stringField(entity.getSourceServiceId())); + searchable.add(TagAndValue.stringField(entity.getSourceServiceInstanceId())); + searchable.add(TagAndValue.stringField(entity.getDestServiceId())); + searchable.add(TagAndValue.stringField(entity.getDestServiceInstanceId())); + searchable.add(TagAndValue.stringField(entity.getEntityId())); + return searchable; } @Override - protected List<SerializableTag<Banyandb.TagValue>> dataTags(NetworkAddressAlias entity) { - List<SerializableTag<Banyandb.TagValue>> data = new ArrayList<>(); - data.add(TagAndValue.stringField(entity.getAddress())); - data.add(TagAndValue.stringField(entity.getRepresentServiceId())); - data.add(TagAndValue.stringField(entity.getRepresentServiceInstanceId())); - return data; + protected List<SerializableTag<BanyandbModel.TagValue>> dataTags(ServiceInstanceRelationServerSideMetrics entity) { + return Collections.singletonList(TagAndValue.longField(entity.getComponentId())); } } diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/NetworkAddressAliasBuilder.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ServiceRelationClientSideMetricsBuilder.java similarity index 57% copy from oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/NetworkAddressAliasBuilder.java copy to oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ServiceRelationClientSideMetricsBuilder.java index 83bf0abfab..3d50dde043 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/NetworkAddressAliasBuilder.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ServiceRelationClientSideMetricsBuilder.java @@ -18,27 +18,27 @@ package org.apache.skywalking.oap.server.storage.plugin.banyandb.schema; -import org.apache.skywalking.banyandb.v1.Banyandb; +import org.apache.skywalking.banyandb.model.v1.BanyandbModel; import org.apache.skywalking.banyandb.v1.client.SerializableTag; import org.apache.skywalking.banyandb.v1.client.TagAndValue; -import org.apache.skywalking.oap.server.core.analysis.manual.networkalias.NetworkAddressAlias; +import org.apache.skywalking.oap.server.core.analysis.manual.relation.service.ServiceRelationClientSideMetrics; import java.util.ArrayList; import java.util.Collections; import java.util.List; -public class NetworkAddressAliasBuilder extends BanyanDBStorageDataBuilder<NetworkAddressAlias> { +public class ServiceRelationClientSideMetricsBuilder extends BanyanDBStorageDataBuilder<ServiceRelationClientSideMetrics> { @Override - protected List<SerializableTag<Banyandb.TagValue>> searchableTags(NetworkAddressAlias entity) { - return Collections.singletonList(TagAndValue.longField(entity.getLastUpdateTimeBucket())); + protected List<SerializableTag<BanyandbModel.TagValue>> searchableTags(ServiceRelationClientSideMetrics entity) { + List<SerializableTag<BanyandbModel.TagValue>> searchable = new ArrayList<>(); + searchable.add(TagAndValue.stringField(entity.getSourceServiceId())); + searchable.add(TagAndValue.stringField(entity.getDestServiceId())); + searchable.add(TagAndValue.stringField(entity.getEntityId())); + return searchable; } @Override - protected List<SerializableTag<Banyandb.TagValue>> dataTags(NetworkAddressAlias entity) { - List<SerializableTag<Banyandb.TagValue>> data = new ArrayList<>(); - data.add(TagAndValue.stringField(entity.getAddress())); - data.add(TagAndValue.stringField(entity.getRepresentServiceId())); - data.add(TagAndValue.stringField(entity.getRepresentServiceInstanceId())); - return data; + protected List<SerializableTag<BanyandbModel.TagValue>> dataTags(ServiceRelationClientSideMetrics entity) { + return Collections.singletonList(TagAndValue.longField(entity.getComponentId())); } } diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/NetworkAddressAliasBuilder.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ServiceRelationServerSideMetricsBuilder.java similarity index 57% copy from oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/NetworkAddressAliasBuilder.java copy to oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ServiceRelationServerSideMetricsBuilder.java index 83bf0abfab..92a9a13fb9 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/NetworkAddressAliasBuilder.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ServiceRelationServerSideMetricsBuilder.java @@ -18,27 +18,27 @@ package org.apache.skywalking.oap.server.storage.plugin.banyandb.schema; -import org.apache.skywalking.banyandb.v1.Banyandb; +import org.apache.skywalking.banyandb.model.v1.BanyandbModel; import org.apache.skywalking.banyandb.v1.client.SerializableTag; import org.apache.skywalking.banyandb.v1.client.TagAndValue; -import org.apache.skywalking.oap.server.core.analysis.manual.networkalias.NetworkAddressAlias; +import org.apache.skywalking.oap.server.core.analysis.manual.relation.service.ServiceRelationServerSideMetrics; import java.util.ArrayList; import java.util.Collections; import java.util.List; -public class NetworkAddressAliasBuilder extends BanyanDBStorageDataBuilder<NetworkAddressAlias> { +public class ServiceRelationServerSideMetricsBuilder extends BanyanDBStorageDataBuilder<ServiceRelationServerSideMetrics> { @Override - protected List<SerializableTag<Banyandb.TagValue>> searchableTags(NetworkAddressAlias entity) { - return Collections.singletonList(TagAndValue.longField(entity.getLastUpdateTimeBucket())); + protected List<SerializableTag<BanyandbModel.TagValue>> searchableTags(ServiceRelationServerSideMetrics entity) { + List<SerializableTag<BanyandbModel.TagValue>> searchable = new ArrayList<>(); + searchable.add(TagAndValue.stringField(entity.getSourceServiceId())); + searchable.add(TagAndValue.stringField(entity.getDestServiceId())); + searchable.add(TagAndValue.stringField(entity.getEntityId())); + return searchable; } @Override - protected List<SerializableTag<Banyandb.TagValue>> dataTags(NetworkAddressAlias entity) { - List<SerializableTag<Banyandb.TagValue>> data = new ArrayList<>(); - data.add(TagAndValue.stringField(entity.getAddress())); - data.add(TagAndValue.stringField(entity.getRepresentServiceId())); - data.add(TagAndValue.stringField(entity.getRepresentServiceInstanceId())); - return data; + protected List<SerializableTag<BanyandbModel.TagValue>> dataTags(ServiceRelationServerSideMetrics entity) { + return Collections.singletonList(TagAndValue.longField(entity.getComponentId())); } } diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/UITemplateBuilder.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/UITemplateBuilder.java index 41104ee588..6b53a63174 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/UITemplateBuilder.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/UITemplateBuilder.java @@ -19,7 +19,7 @@ package org.apache.skywalking.oap.server.storage.plugin.banyandb.schema; import com.google.common.collect.ImmutableList; -import org.apache.skywalking.banyandb.v1.Banyandb; +import org.apache.skywalking.banyandb.model.v1.BanyandbModel; import org.apache.skywalking.banyandb.v1.client.SerializableTag; import org.apache.skywalking.banyandb.v1.client.TagAndValue; import org.apache.skywalking.oap.server.core.management.ui.template.UITemplate; @@ -29,7 +29,7 @@ import java.util.List; public class UITemplateBuilder extends BanyanDBStorageDataBuilder<UITemplate> { @Override - protected List<SerializableTag<Banyandb.TagValue>> searchableTags(UITemplate entity) { + protected List<SerializableTag<BanyandbModel.TagValue>> searchableTags(UITemplate entity) { return ImmutableList.of( TagAndValue.stringField(entity.getName()), TagAndValue.longField(entity.getDisabled()) @@ -37,8 +37,8 @@ public class UITemplateBuilder extends BanyanDBStorageDataBuilder<UITemplate> { } @Override - protected List<SerializableTag<Banyandb.TagValue>> dataTags(UITemplate entity) { - List<SerializableTag<Banyandb.TagValue>> data = new ArrayList<>(); + protected List<SerializableTag<BanyandbModel.TagValue>> dataTags(UITemplate entity) { + List<SerializableTag<BanyandbModel.TagValue>> data = new ArrayList<>(); data.add(TagAndValue.stringField(entity.getType())); data.add(TagAndValue.stringField(entity.getConfiguration())); data.add(TagAndValue.longField(entity.getActivated())); diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBIndexInstaller.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBHistoryDeleteDAO.java similarity index 53% copy from oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBIndexInstaller.java copy to oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBHistoryDeleteDAO.java index ffc5aaf586..0133d30e3d 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBIndexInstaller.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBHistoryDeleteDAO.java @@ -16,29 +16,16 @@ * */ -package org.apache.skywalking.oap.server.storage.plugin.banyandb; +package org.apache.skywalking.oap.server.storage.plugin.banyandb.stream; -import org.apache.skywalking.oap.server.core.storage.StorageException; +import org.apache.skywalking.oap.server.core.storage.IHistoryDeleteDAO; import org.apache.skywalking.oap.server.core.storage.model.Model; -import org.apache.skywalking.oap.server.core.storage.model.ModelInstaller; -import org.apache.skywalking.oap.server.library.client.Client; -import org.apache.skywalking.oap.server.library.module.ModuleManager; -public class BanyanDBIndexInstaller extends ModelInstaller { - public BanyanDBIndexInstaller(Client client, ModuleManager moduleManager) { - super(client, moduleManager); - } - - @Override - protected boolean isExists(Model model) throws StorageException { - return false; - } +import java.io.IOException; +public class BanyanDBHistoryDeleteDAO implements IHistoryDeleteDAO { @Override - protected void createTable(Model model) throws StorageException { - StreamMetaInfo metaInfo = StreamMetaInfo.addModel(model); - if (metaInfo != null) { - ((BanyanDBStorageClient) client).createStream(metaInfo); - } + public void deleteHistory(Model model, String timeBucketColumnName, int ttl) throws IOException { + // do thing since we currently do not support deletion } } diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBManagementDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBManagementDAO.java index 7e37288428..1990181804 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBManagementDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBManagementDAO.java @@ -30,6 +30,9 @@ import org.apache.skywalking.oap.server.storage.plugin.banyandb.BanyanDBStorageC import org.apache.skywalking.oap.server.storage.plugin.banyandb.schema.BanyanDBStorageDataBuilder; import java.io.IOException; +import java.time.Instant; +import java.time.ZoneOffset; +import java.time.ZonedDateTime; import java.util.Collections; /** @@ -38,6 +41,9 @@ import java.util.Collections; * @param <T> The only ManagementData we have now is {@link UITemplate} */ public class BanyanDBManagementDAO<T extends ManagementData> extends AbstractBanyanDBDAO implements IManagementDAO { + private final static long START_TIME_MILLI = + ZonedDateTime.of(2022, 1, 1, 0, 0, 0, 0, + ZoneOffset.UTC).toInstant().toEpochMilli(); private final BanyanDBStorageDataBuilder<T> storageBuilder; public BanyanDBManagementDAO(BanyanDBStorageClient client, BanyanDBStorageDataBuilder<T> storageBuilder) { @@ -50,7 +56,7 @@ public class BanyanDBManagementDAO<T extends ManagementData> extends AbstractBan // ensure only insert once StreamQueryResponse resp = query(UITemplate.INDEX_NAME, Collections.singletonList(UITemplate.NAME), - new TimestampRange(0L, 2L), + new TimestampRange(START_TIME_MILLI, Instant.now().toEpochMilli()), new QueryBuilder() { @Override public void apply(StreamQuery query) { @@ -65,7 +71,7 @@ public class BanyanDBManagementDAO<T extends ManagementData> extends AbstractBan StreamWrite.StreamWriteBuilder streamWrite = this.storageBuilder .entity2Storage((T) storageData) .name(model.getName()) - .timestamp(1L); + .timestamp(Instant.now().toEpochMilli()); getClient().write(streamWrite.build()); } } diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBMetadataQueryDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBMetadataQueryDAO.java index fdc1ccb71f..b9fc53258c 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBMetadataQueryDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBMetadataQueryDAO.java @@ -22,19 +22,17 @@ import com.google.common.collect.ImmutableList; import com.google.gson.JsonElement; import com.google.protobuf.ByteString; import com.google.protobuf.InvalidProtocolBufferException; -import org.apache.skywalking.banyandb.v1.client.PairQueryCondition; import org.apache.skywalking.banyandb.v1.client.RowEntity; import org.apache.skywalking.banyandb.v1.client.StreamQuery; import org.apache.skywalking.banyandb.v1.client.StreamQueryResponse; import org.apache.skywalking.banyandb.v1.client.TagAndValue; -import org.apache.skywalking.oap.server.core.analysis.NodeType; +import org.apache.skywalking.oap.server.core.analysis.Layer; import org.apache.skywalking.oap.server.core.analysis.TimeBucket; import org.apache.skywalking.oap.server.core.analysis.manual.endpoint.EndpointTraffic; import org.apache.skywalking.oap.server.core.analysis.manual.instance.InstanceTraffic; import org.apache.skywalking.oap.server.core.analysis.manual.service.ServiceTraffic; import org.apache.skywalking.oap.server.core.query.enumeration.Language; import org.apache.skywalking.oap.server.core.query.type.Attribute; -import org.apache.skywalking.oap.server.core.query.type.Database; import org.apache.skywalking.oap.server.core.query.type.Endpoint; import org.apache.skywalking.oap.server.core.query.type.Service; import org.apache.skywalking.oap.server.core.query.type.ServiceInstance; @@ -42,6 +40,7 @@ import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; import org.apache.skywalking.oap.server.core.storage.query.IMetadataQueryDAO; import org.apache.skywalking.oap.server.library.util.StringUtil; import org.apache.skywalking.oap.server.storage.plugin.banyandb.BanyanDBStorageClient; +import org.apache.skywalking.oap.server.storage.plugin.banyandb.StreamMetaInfo; import java.io.IOException; import java.util.Collections; @@ -61,12 +60,15 @@ public class BanyanDBMetadataQueryDAO extends AbstractBanyanDBDAO implements IMe } @Override - public List<Service> getAllServices(String group) throws IOException { + public List<Service> listServices(final String layer, final String group) throws IOException { StreamQueryResponse resp = query(ServiceTraffic.INDEX_NAME, - ImmutableList.of(ServiceTraffic.NAME, ServiceTraffic.NODE_TYPE, ServiceTraffic.GROUP), + ImmutableList.of(ServiceTraffic.NAME, ServiceTraffic.LAYER, ServiceTraffic.GROUP), new QueryBuilder() { @Override public void apply(StreamQuery query) { + if (StringUtil.isNotEmpty(layer)) { + query.appendCondition(eq(ServiceTraffic.LAYER, Layer.valueOf(layer).value())); + } if (StringUtil.isNotEmpty(group)) { query.appendCondition(eq(ServiceTraffic.GROUP, group)); } @@ -77,13 +79,13 @@ public class BanyanDBMetadataQueryDAO extends AbstractBanyanDBDAO implements IMe } @Override - public List<Service> getAllBrowserServices() throws IOException { + public List<Service> getServices(String serviceId) throws IOException { StreamQueryResponse resp = query(ServiceTraffic.INDEX_NAME, - ImmutableList.of(ServiceTraffic.NAME, ServiceTraffic.NODE_TYPE, ServiceTraffic.GROUP), + ImmutableList.of(ServiceTraffic.NAME, ServiceTraffic.LAYER, ServiceTraffic.GROUP), new QueryBuilder() { @Override public void apply(StreamQuery query) { - query.appendCondition(eq(ServiceTraffic.NODE_TYPE, NodeType.Browser.value())); + query.appendCondition(eq(ServiceTraffic.SERVICE_ID, serviceId)); } }); @@ -91,53 +93,41 @@ public class BanyanDBMetadataQueryDAO extends AbstractBanyanDBDAO implements IMe } @Override - public List<Database> getAllDatabases() throws IOException { - StreamQueryResponse resp = query(ServiceTraffic.INDEX_NAME, ImmutableList.of(ServiceTraffic.NAME, ServiceTraffic.NODE_TYPE), + public List<ServiceInstance> listInstances(long startTimestamp, long endTimestamp, String serviceId) throws IOException { + StreamQueryResponse resp = query(InstanceTraffic.INDEX_NAME, + ImmutableList.of(InstanceTraffic.SERVICE_ID, InstanceTraffic.LAST_PING_TIME_BUCKET), new QueryBuilder() { @Override public void apply(StreamQuery query) { - query.appendCondition(eq(ServiceTraffic.NODE_TYPE, (long) NodeType.Database.value())); - } - }); + query.setDataProjections(Collections.singletonList("data_binary")); - return resp.getElements().stream().map(new DatabaseDeserializer()).collect(Collectors.toList()); - } + final long startMinuteTimeBucket = TimeBucket.getMinuteTimeBucket(startTimestamp); + final long endMinuteTimeBucket = TimeBucket.getMinuteTimeBucket(endTimestamp); - @Override - public List<Service> searchServices(NodeType nodeType, String keyword) throws IOException { - StreamQueryResponse resp = query(ServiceTraffic.INDEX_NAME, - ImmutableList.of(ServiceTraffic.NAME, ServiceTraffic.NODE_TYPE, ServiceTraffic.GROUP), - new QueryBuilder() { - @Override - public void apply(StreamQuery query) { - query.appendCondition(eq(ServiceTraffic.NODE_TYPE, nodeType.value())); + query.appendCondition(gte(InstanceTraffic.LAST_PING_TIME_BUCKET, startMinuteTimeBucket)); + query.appendCondition(lte(InstanceTraffic.LAST_PING_TIME_BUCKET, endMinuteTimeBucket)); + query.appendCondition(eq(InstanceTraffic.SERVICE_ID, serviceId)); } }); - return resp.getElements().stream().map(new ServiceDeserializer()) - .filter(s -> s.getName().contains(keyword)) // TODO: support analyzer in database - .collect(Collectors.toList()); + return resp.getElements().stream().map(new ServiceInstanceDeserializer()).collect(Collectors.toList()); } @Override - public Service searchService(NodeType nodeType, String serviceCode) throws IOException { - StreamQueryResponse resp = query(ServiceTraffic.INDEX_NAME, - ImmutableList.of(ServiceTraffic.NAME, ServiceTraffic.NODE_TYPE, ServiceTraffic.GROUP), - new QueryBuilder() { + public ServiceInstance getInstance(String instanceId) throws IOException { + StreamQueryResponse resp = query(InstanceTraffic.INDEX_NAME, + ImmutableList.of(InstanceTraffic.NAME, InstanceTraffic.SERVICE_ID), new QueryBuilder() { @Override public void apply(StreamQuery query) { - query.appendCondition(PairQueryCondition.StringQueryCondition.eq("searchable", ServiceTraffic.NAME, serviceCode)); - query.appendCondition(PairQueryCondition.LongQueryCondition.eq("searchable", ServiceTraffic.NODE_TYPE, (long) nodeType.value())); - // only get one - query.setLimit(1); + query.appendCondition(eq(StreamMetaInfo.ID, instanceId)); } }); - return resp.getElements().stream().map(new ServiceDeserializer()).findAny().orElse(null); + return resp.getElements().stream().map(new ServiceInstanceDeserializer()).findFirst().orElse(null); } @Override - public List<Endpoint> searchEndpoint(String keyword, String serviceId, int limit) throws IOException { + public List<Endpoint> findEndpoint(String keyword, String serviceId, int limit) throws IOException { StreamQueryResponse resp = query(EndpointTraffic.INDEX_NAME, ImmutableList.of(EndpointTraffic.NAME, EndpointTraffic.SERVICE_ID), new QueryBuilder() { @Override @@ -150,38 +140,6 @@ public class BanyanDBMetadataQueryDAO extends AbstractBanyanDBDAO implements IMe .limit(limit).collect(Collectors.toList()); } - @Override - public List<ServiceInstance> getServiceInstances(long startTimestamp, long endTimestamp, String serviceId) throws IOException { - StreamQueryResponse resp = query(InstanceTraffic.INDEX_NAME, - ImmutableList.of(InstanceTraffic.SERVICE_ID, InstanceTraffic.LAST_PING_TIME_BUCKET), - new QueryBuilder() { - @Override - public void apply(StreamQuery query) { - query.setDataProjections(Collections.singletonList("data_binary")); - - final long startMinuteTimeBucket = TimeBucket.getMinuteTimeBucket(startTimestamp); - final long endMinuteTimeBucket = TimeBucket.getMinuteTimeBucket(endTimestamp); - - query.appendCondition(gte(InstanceTraffic.LAST_PING_TIME_BUCKET, startMinuteTimeBucket)); - query.appendCondition(lte(InstanceTraffic.LAST_PING_TIME_BUCKET, endMinuteTimeBucket)); - query.appendCondition(eq(InstanceTraffic.SERVICE_ID, serviceId)); - } - }); - - return resp.getElements().stream().map(new ServiceInstanceDeserializer()).collect(Collectors.toList()); - } - - public static class DatabaseDeserializer implements RowEntityDeserializer<Database> { - @Override - public Database apply(RowEntity row) { - Database database = new Database(); - final List<TagAndValue<?>> searchable = row.getTagFamilies().get(0); - database.setId(row.getId()); - database.setName((String) searchable.get(0).getValue()); - return database; - } - } - public static class EndpointDeserializer implements RowEntityDeserializer<Endpoint> { @Override public Endpoint apply(RowEntity row) { @@ -198,9 +156,13 @@ public class BanyanDBMetadataQueryDAO extends AbstractBanyanDBDAO implements IMe public Service apply(RowEntity row) { Service service = new Service(); final List<TagAndValue<?>> searchable = row.getTagFamilies().get(0); - service.setId(row.getId()); service.setName((String) searchable.get(0).getValue()); - service.setGroup((String) searchable.get(2).getValue()); + service.setId((String) searchable.get(1).getValue()); + String layerName = Layer.valueOf(((Number) searchable.get(2).getValue()).intValue()).name(); + service.getLayers().add(layerName); + service.setGroup((String) searchable.get(3).getValue()); + final List<TagAndValue<?>> data = row.getTagFamilies().get(1); + service.setShortName((String) data.get(0).getValue()); return service; } } @@ -218,6 +180,7 @@ public class BanyanDBMetadataQueryDAO extends AbstractBanyanDBDAO implements IMe instanceTraffic.deserialize(remoteData); serviceInstance.setName(instanceTraffic.getName()); serviceInstance.setId(instanceTraffic.getServiceId()); + serviceInstance.setLayer(instanceTraffic.getLayer().name()); if (instanceTraffic.getProperties() != null) { for (Map.Entry<String, JsonElement> property : instanceTraffic.getProperties().entrySet()) { diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBStorageDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBStorageDAO.java index 98f31ebd7e..3c3b4b4a6c 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBStorageDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBStorageDAO.java @@ -23,16 +23,25 @@ import org.apache.skywalking.oap.server.core.analysis.config.NoneStream; import org.apache.skywalking.oap.server.core.analysis.management.ManagementData; import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics; import org.apache.skywalking.oap.server.core.analysis.record.Record; +import org.apache.skywalking.oap.server.core.analysis.topn.TopN; import org.apache.skywalking.oap.server.core.storage.AbstractDAO; import org.apache.skywalking.oap.server.core.storage.IManagementDAO; import org.apache.skywalking.oap.server.core.storage.IMetricsDAO; import org.apache.skywalking.oap.server.core.storage.INoneStreamDAO; import org.apache.skywalking.oap.server.core.storage.IRecordDAO; import org.apache.skywalking.oap.server.core.storage.StorageDAO; +import org.apache.skywalking.oap.server.core.storage.model.Model; import org.apache.skywalking.oap.server.core.storage.type.StorageBuilder; +import org.apache.skywalking.oap.server.library.client.request.InsertRequest; +import org.apache.skywalking.oap.server.library.client.request.UpdateRequest; import org.apache.skywalking.oap.server.storage.plugin.banyandb.BanyanDBStorageClient; import org.apache.skywalking.oap.server.storage.plugin.banyandb.schema.BanyanDBStorageDataBuilder; +import java.io.IOException; +import java.util.Collections; +import java.util.List; +import java.util.Map; + @Slf4j public class BanyanDBStorageDAO extends AbstractDAO<BanyanDBStorageClient> implements StorageDAO { public BanyanDBStorageDAO(BanyanDBStorageClient client) { @@ -41,11 +50,59 @@ public class BanyanDBStorageDAO extends AbstractDAO<BanyanDBStorageClient> imple @Override public IMetricsDAO newMetricsDao(StorageBuilder storageBuilder) { + // SKIP: + // 1. OAL runtime metrics builder + // 2. Analysis Function builder + if (storageBuilder.getClass().getName().startsWith("org.apache.skywalking.oap.server.core.")) { + log.warn("metrics builder {} is not supported yet", storageBuilder.getClass()); + return new IMetricsDAO() { + @Override + public List<Metrics> multiGet(Model model, List<Metrics> metrics) throws IOException { + return Collections.emptyList(); + } + + @Override + public InsertRequest prepareBatchInsert(Model model, Metrics metrics) throws IOException { + return new InsertRequest() { + }; + } + + @Override + public UpdateRequest prepareBatchUpdate(Model model, Metrics metrics) throws IOException { + return new UpdateRequest() { + }; + } + }; + } return new BanyanDBMetricsDAO<>((BanyanDBStorageDataBuilder<Metrics>) storageBuilder); } @Override public IRecordDAO newRecordDao(StorageBuilder storageBuilder) { + try { + final Class<?> returnType = storageBuilder.getClass().getDeclaredMethod("storage2Entity", Map.class).getReturnType(); + // FIXME: this is currently a hack to avoid TopN insertion since we will impl TopN later in BanyanDB side + if (TopN.class.isAssignableFrom(returnType)) { + return new IRecordDAO() { + @Override + public InsertRequest prepareBatchInsert(Model model, Record record) throws IOException { + return new InsertRequest() { + }; + } + }; + } else if (returnType.getName().equals("org.apache.skywalking.oap.server.storage.plugin.zipkin.ZipkinSpanRecord")) { + // SKIP ZipkinSpanRecord + return new IRecordDAO() { + @Override + public InsertRequest prepareBatchInsert(Model model, Record record) throws IOException { + return new InsertRequest() { + }; + } + }; + } + } catch (NoSuchMethodException ex) { + log.error("fail to get declared method"); + } return new BanyanDBRecordDAO<>((BanyanDBStorageDataBuilder<Record>) storageBuilder); } diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBTopologyQueryDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBTopologyQueryDAO.java new file mode 100644 index 0000000000..f574e9b24a --- /dev/null +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBTopologyQueryDAO.java @@ -0,0 +1,155 @@ +/* + * 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.storage.plugin.banyandb.stream; + +import org.apache.skywalking.oap.server.core.UnexpectedException; +import org.apache.skywalking.oap.server.core.analysis.manual.relation.endpoint.EndpointRelationServerSideMetrics; +import org.apache.skywalking.oap.server.core.analysis.manual.relation.instance.ServiceInstanceRelationClientSideMetrics; +import org.apache.skywalking.oap.server.core.analysis.manual.relation.instance.ServiceInstanceRelationServerSideMetrics; +import org.apache.skywalking.oap.server.core.analysis.manual.relation.service.ServiceRelationClientSideMetrics; +import org.apache.skywalking.oap.server.core.analysis.manual.relation.service.ServiceRelationServerSideMetrics; +import org.apache.skywalking.oap.server.core.query.type.Call; +import org.apache.skywalking.oap.server.core.source.DetectPoint; +import org.apache.skywalking.oap.server.core.storage.query.ITopologyQueryDAO; +import org.apache.skywalking.oap.server.library.util.CollectionUtils; +import org.apache.skywalking.oap.server.storage.plugin.banyandb.BanyanDBStorageClient; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class BanyanDBTopologyQueryDAO extends AbstractBanyanDBDAO implements ITopologyQueryDAO { + public BanyanDBTopologyQueryDAO(BanyanDBStorageClient client) { + super(client); + } + + @Override + public List<Call.CallDetail> loadServiceRelationsDetectedAtServerSide(long startTB, long endTB, List<String> serviceIds) throws IOException { + if (CollectionUtils.isEmpty(serviceIds)) { + throw new UnexpectedException("Service id is empty"); + } + + return loadServiceCalls( + ServiceRelationServerSideMetrics.INDEX_NAME, startTB, endTB, + ServiceRelationServerSideMetrics.SOURCE_SERVICE_ID, + ServiceRelationServerSideMetrics.DEST_SERVICE_ID, serviceIds, DetectPoint.SERVER + ); + } + + @Override + public List<Call.CallDetail> loadServiceRelationDetectedAtClientSide(long startTB, long endTB, List<String> serviceIds) throws IOException { + if (CollectionUtils.isEmpty(serviceIds)) { + throw new UnexpectedException("Service id is empty"); + } + + return loadServiceCalls( + ServiceRelationClientSideMetrics.INDEX_NAME, startTB, endTB, + ServiceRelationClientSideMetrics.SOURCE_SERVICE_ID, + ServiceRelationClientSideMetrics.DEST_SERVICE_ID, serviceIds, DetectPoint.CLIENT + ); + } + + @Override + public List<Call.CallDetail> loadServiceRelationsDetectedAtServerSide(long startTB, long endTB) throws IOException { + return loadServiceCalls( + ServiceRelationServerSideMetrics.INDEX_NAME, startTB, endTB, + ServiceRelationServerSideMetrics.SOURCE_SERVICE_ID, + ServiceRelationServerSideMetrics.DEST_SERVICE_ID, new ArrayList<>(0), DetectPoint.SERVER + ); + } + + @Override + public List<Call.CallDetail> loadServiceRelationDetectedAtClientSide(long startTB, long endTB) throws IOException { + return loadServiceCalls( + ServiceRelationClientSideMetrics.INDEX_NAME, startTB, endTB, + ServiceRelationClientSideMetrics.SOURCE_SERVICE_ID, + ServiceRelationClientSideMetrics.DEST_SERVICE_ID, new ArrayList<>(0), DetectPoint.CLIENT + ); + } + + @Override + public List<Call.CallDetail> loadInstanceRelationDetectedAtServerSide(String clientServiceId, String serverServiceId, long startTB, long endTB) throws IOException { + return loadServiceInstanceCalls( + ServiceInstanceRelationServerSideMetrics.INDEX_NAME, startTB, endTB, + ServiceInstanceRelationServerSideMetrics.SOURCE_SERVICE_ID, + ServiceInstanceRelationServerSideMetrics.DEST_SERVICE_ID, clientServiceId, serverServiceId, + DetectPoint.SERVER + ); + } + + @Override + public List<Call.CallDetail> loadInstanceRelationDetectedAtClientSide(String clientServiceId, String serverServiceId, long startTB, long endTB) throws IOException { + return loadServiceInstanceCalls( + ServiceInstanceRelationClientSideMetrics.INDEX_NAME, startTB, endTB, + ServiceInstanceRelationClientSideMetrics.SOURCE_SERVICE_ID, + ServiceInstanceRelationClientSideMetrics.DEST_SERVICE_ID, clientServiceId, serverServiceId, + DetectPoint.CLIENT + ); + } + + @Override + public List<Call.CallDetail> loadEndpointRelation(long startTB, long endTB, String destEndpointId) throws IOException { + List<Call.CallDetail> calls = loadEndpointFromSide( + EndpointRelationServerSideMetrics.INDEX_NAME, startTB, endTB, + EndpointRelationServerSideMetrics.SOURCE_ENDPOINT, + EndpointRelationServerSideMetrics.DEST_ENDPOINT, destEndpointId, false + ); + calls.addAll( + loadEndpointFromSide(EndpointRelationServerSideMetrics.INDEX_NAME, startTB, endTB, + EndpointRelationServerSideMetrics.SOURCE_ENDPOINT, + EndpointRelationServerSideMetrics.DEST_ENDPOINT, destEndpointId, true + )); + return calls; + } + + private List<Call.CallDetail> loadServiceCalls(String tableName, + long startTB, + long endTB, + String sourceCName, + String destCName, + List<String> serviceIds, + DetectPoint detectPoint) throws IOException { + // TODO: we will impl this method after we support `OR` + return Collections.emptyList(); + } + + private List<Call.CallDetail> loadServiceInstanceCalls(String tableName, + long startTB, + long endTB, + String sourceCName, + String descCName, + String sourceServiceId, + String destServiceId, + DetectPoint detectPoint) throws IOException { + // TODO: we will impl this method after we support `OR` + return Collections.emptyList(); + } + + private List<Call.CallDetail> loadEndpointFromSide(String tableName, + long startTB, + long endTB, + String sourceCName, + String destCName, + String id, + boolean isSourceId) throws IOException { + // TODO: we will impl this method after we support `OR` + return Collections.emptyList(); + } +} diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBUITemplateManagementDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBUITemplateManagementDAO.java index 1d9f977b0a..7888b0f56e 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBUITemplateManagementDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBUITemplateManagementDAO.java @@ -35,6 +35,7 @@ import org.apache.skywalking.oap.server.library.util.BooleanUtils; import org.apache.skywalking.oap.server.storage.plugin.banyandb.BanyanDBStorageClient; import java.io.IOException; +import java.time.Instant; import java.util.List; import java.util.stream.Collectors; @@ -79,7 +80,7 @@ public class BanyanDBUITemplateManagementDAO extends AbstractBanyanDBDAO impleme .dataTag(Tag.stringField(uiTemplate.getConfiguration())) // data - activated .dataTag(Tag.longField(uiTemplate.getActivated())) - .timestamp(1L) + .timestamp(Instant.now().toEpochMilli()) .elementId(uiTemplate.id()) .build(); getClient().write(request); diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.instance.json b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.instance.json index 662cff2eac..d1b85c2be2 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.instance.json +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.instance.json @@ -1,7 +1,6 @@ { "metadata": { - "id": 1, - "name": "db.instance", + "name": "segment_db.instance", "group": "default" }, "tags": [ @@ -10,4 +9,4 @@ "type": "TYPE_INVERTED", "location": "LOCATION_SERIES", "updated_at": "2021-04-15T01:30:15.01Z" -} \ No newline at end of file +} diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.instance.json b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.type.json similarity index 73% copy from oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.instance.json copy to oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.type.json index 662cff2eac..479751ba13 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.instance.json +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.type.json @@ -1,13 +1,12 @@ { "metadata": { - "id": 1, - "name": "db.instance", + "name": "segment_db.type", "group": "default" }, "tags": [ - "db.instance" + "db.type" ], "type": "TYPE_INVERTED", "location": "LOCATION_SERIES", "updated_at": "2021-04-15T01:30:15.01Z" -} \ No newline at end of file +} diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.instance.json b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/duration.json similarity index 61% copy from oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.instance.json copy to oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/duration.json index 662cff2eac..9ae7387089 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.instance.json +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/duration.json @@ -1,13 +1,12 @@ { "metadata": { - "id": 1, - "name": "db.instance", + "name": "segment_duration", "group": "default" }, "tags": [ - "db.instance" + "duration" ], - "type": "TYPE_INVERTED", + "type": "TYPE_TREE", "location": "LOCATION_SERIES", "updated_at": "2021-04-15T01:30:15.01Z" -} \ No newline at end of file +} diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.instance.json b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/endpoint_id.json similarity index 73% copy from oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.instance.json copy to oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/endpoint_id.json index 662cff2eac..ca368266a8 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.instance.json +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/endpoint_id.json @@ -1,13 +1,12 @@ { "metadata": { - "id": 1, - "name": "db.instance", + "name": "segment_endpoint_id", "group": "default" }, "tags": [ - "db.instance" + "endpoint_id" ], "type": "TYPE_INVERTED", "location": "LOCATION_SERIES", "updated_at": "2021-04-15T01:30:15.01Z" -} \ No newline at end of file +} diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.instance.json b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/http.method.json similarity index 73% copy from oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.instance.json copy to oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/http.method.json index 662cff2eac..3b5794ec09 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.instance.json +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/http.method.json @@ -1,13 +1,12 @@ { "metadata": { - "id": 1, - "name": "db.instance", + "name": "segment_http.method", "group": "default" }, "tags": [ - "db.instance" + "http.method" ], "type": "TYPE_INVERTED", "location": "LOCATION_SERIES", "updated_at": "2021-04-15T01:30:15.01Z" -} \ No newline at end of file +} diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.instance.json b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/mq.broker.json similarity index 73% copy from oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.instance.json copy to oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/mq.broker.json index 662cff2eac..4dca9074a5 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.instance.json +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/mq.broker.json @@ -1,13 +1,12 @@ { "metadata": { - "id": 1, - "name": "db.instance", + "name": "segment_mq.broker", "group": "default" }, "tags": [ - "db.instance" + "mq.broker" ], "type": "TYPE_INVERTED", "location": "LOCATION_SERIES", "updated_at": "2021-04-15T01:30:15.01Z" -} \ No newline at end of file +} diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.instance.json b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/mq.queue.json similarity index 73% copy from oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.instance.json copy to oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/mq.queue.json index 662cff2eac..1b3126e056 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.instance.json +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/mq.queue.json @@ -1,13 +1,12 @@ { "metadata": { - "id": 1, - "name": "db.instance", + "name": "segment_mq.queue", "group": "default" }, "tags": [ - "db.instance" + "mq.queue" ], "type": "TYPE_INVERTED", "location": "LOCATION_SERIES", "updated_at": "2021-04-15T01:30:15.01Z" -} \ No newline at end of file +} diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.instance.json b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/mq.topic.json similarity index 73% copy from oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.instance.json copy to oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/mq.topic.json index 662cff2eac..ddae44b1a1 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.instance.json +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/mq.topic.json @@ -1,13 +1,12 @@ { "metadata": { - "id": 1, - "name": "db.instance", + "name": "segment_mq.topic", "group": "default" }, "tags": [ - "db.instance" + "mq.topic" ], "type": "TYPE_INVERTED", "location": "LOCATION_SERIES", "updated_at": "2021-04-15T01:30:15.01Z" -} \ No newline at end of file +} diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.instance.json b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/status_code.json similarity index 73% copy from oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.instance.json copy to oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/status_code.json index 662cff2eac..3e472a1669 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.instance.json +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/status_code.json @@ -1,13 +1,12 @@ { "metadata": { - "id": 1, - "name": "db.instance", + "name": "segment_status_code", "group": "default" }, "tags": [ - "db.instance" + "status_code" ], "type": "TYPE_INVERTED", "location": "LOCATION_SERIES", "updated_at": "2021-04-15T01:30:15.01Z" -} \ No newline at end of file +} diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/trace_id.json b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/trace_id.json new file mode 100644 index 0000000000..3ac579999c --- /dev/null +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/trace_id.json @@ -0,0 +1,12 @@ +{ + "metadata": { + "name": "segment_trace_id", + "group": "default" + }, + "tags": [ + "trace_id" + ], + "type": "TYPE_TREE", + "location": "LOCATION_GLOBAL", + "updated_at": "2021-04-15T01:30:15.01Z" +} diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.instance.json b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/ui_template/disabled.json similarity index 73% copy from oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.instance.json copy to oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/ui_template/disabled.json index 662cff2eac..9146c34d11 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.instance.json +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/ui_template/disabled.json @@ -1,13 +1,12 @@ { "metadata": { - "id": 1, - "name": "db.instance", + "name": "ui_template_disabled", "group": "default" }, "tags": [ - "db.instance" + "disabled" ], "type": "TYPE_INVERTED", "location": "LOCATION_SERIES", "updated_at": "2021-04-15T01:30:15.01Z" -} \ No newline at end of file +} diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.instance.json b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/ui_template/name.json similarity index 73% copy from oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.instance.json copy to oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/ui_template/name.json index 662cff2eac..067ca7f123 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment/db.instance.json +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/ui_template/name.json @@ -1,13 +1,12 @@ { "metadata": { - "id": 1, - "name": "db.instance", + "name": "ui_template_name", "group": "default" }, "tags": [ - "db.instance" + "name" ], "type": "TYPE_INVERTED", "location": "LOCATION_SERIES", "updated_at": "2021-04-15T01:30:15.01Z" -} \ No newline at end of file +} diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/ui_template.json b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/ui_template.json new file mode 100644 index 0000000000..e2a404ff5f --- /dev/null +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/ui_template.json @@ -0,0 +1,50 @@ +{ + "metadata": { + "name": "ui_template", + "group": "default" + }, + "tag_families": [ + { + "name": "data", + "tags": [ + { + "name": "type", + "type": "TAG_TYPE_STRING" + }, + { + "name": "configuration", + "type": "TAG_TYPE_STRING" + }, + { + "name": "activated", + "type": "TAG_TYPE_INT" + } + ] + }, + { + "name": "searchable", + "tags": [ + { + "name": "name", + "type": "TAG_TYPE_STRING" + }, + { + "name": "disabled", + "type": "TAG_TYPE_INT" + } + ] + } + ], + "entity": { + "tag_names": [ + ] + }, + "opts": { + "shard_num": 2, + "ttl": { + "val": 52000, + "unit": "DURATION_UNIT_WEEK" + } + }, + "updated_at_nanoseconds": "2021-04-15T01:30:15.01Z" +} \ No newline at end of file