Skip to content

Commit 2ec8e18

Browse files
authored
BanyanDB: support add group prefix (namespace) for BanyanDB groups. (#13521)
1 parent 3441027 commit 2ec8e18

22 files changed

+201
-104
lines changed

docs/en/changes/changes.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@
102102
* BanyanDB: fix log query missing order by condition, and fix missing service id condition when query by instance id or endpoint id.
103103
* Fix potential NPE in the `AlarmStatusQueryHandler`.
104104
* Aggregate TopN Slow SQL by service dimension.
105+
* BanyanDB: support add group prefix (namespace) for BanyanDB groups.
105106

106107
#### UI
107108

oap-server/server-starter/src/main/resources/bydb.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,9 @@ global:
4949
sslTrustCAPath: ${SW_STORAGE_BANYANDB_SSL_TRUST_CA_PATH:""}
5050
# Cleanup TopN rules in BanyanDB server that are not configured in the bydb-topn.yml config.
5151
cleanupUnusedTopNRules: ${SW_STORAGE_BANYANDB_CLEANUP_UNUSED_TOPN_RULES:true}
52+
# The namespace in BanyanDB to store the data of OAP, if not set, the default is "sw".
53+
# OAP will create BanyanDB Groups using the format of "{namespace}_{group name}", such as "sw_records".
54+
namespace: ${SW_NAMESPACE:"sw"}
5255

5356
groups:
5457
# The group settings of record.

oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBAggregationQueryDAO.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public BanyanDBAggregationQueryDAO(BanyanDBStorageClient client) {
5959
public List<SelectedRecord> sortMetrics(TopNCondition condition, String valueColumnName, Duration duration, List<KeyValue> additionalConditions) throws IOException {
6060
final boolean isColdStage = duration != null && duration.isColdStage();
6161
final String modelName = condition.getName();
62-
MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findMetadata(modelName, duration.getStep());
62+
MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findMetricMetadata(modelName, duration.getStep());
6363
if (schema == null) {
6464
throw new IOException("schema is not registered");
6565
}

oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBStorageClient.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -139,11 +139,12 @@ public void shutdown() throws IOException {
139139
this.client.close();
140140
}
141141

142-
public List<Property> listProperties(String group, String name) throws IOException {
142+
public List<Property> listProperties(String name) throws IOException {
143143
try {
144+
MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findManagementMetadata(name);
144145
BanyandbProperty.QueryResponse resp
145146
= this.client.query(BanyandbProperty.QueryRequest.newBuilder()
146-
.addGroups(group)
147+
.addGroups(schema.getMetadata().getGroup())
147148
.setName(name)
148149
.setLimit(Integer.MAX_VALUE)
149150
.build());
@@ -160,10 +161,11 @@ public List<Property> listProperties(String group, String name) throws IOExcepti
160161
}
161162
}
162163

163-
public Property queryProperty(String group, String name, String id) throws IOException {
164+
public Property queryProperty(String name, String id) throws IOException {
164165
try {
166+
MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findManagementMetadata(name);
165167
BanyandbProperty.QueryResponse resp = this.client.query(BanyandbProperty.QueryRequest.newBuilder()
166-
.addGroups(group)
168+
.addGroups(schema.getMetadata().getGroup())
167169
.setName(name)
168170
.addIds(id)
169171
.build());
@@ -183,9 +185,10 @@ public Property queryProperty(String group, String name, String id) throws IOExc
183185
}
184186
}
185187

186-
public DeleteResponse deleteProperty(String group, String name, String id) throws IOException {
188+
public DeleteResponse deleteProperty(String name, String id) throws IOException {
187189
try {
188-
DeleteResponse result = this.client.deleteProperty(group, name, id);
190+
MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findManagementMetadata(name);
191+
DeleteResponse result = this.client.deleteProperty(schema.getMetadata().getGroup(), name, id);
189192
this.healthChecker.health();
190193
return result;
191194
} catch (BanyanDBException ex) {

oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBStorageConfig.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ public static class Global {
106106
private int segmentQueryMaxSize = 200;
107107
private int profileDataQueryBatchSize = 100;
108108
private boolean cleanupUnusedTopNRules = true;
109+
private String namespace = "sw";
109110
}
110111

111112
// The configuration of the groups.

oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBStorageProvider.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@
6868
import org.apache.skywalking.oap.server.library.module.ModuleStartException;
6969
import org.apache.skywalking.oap.server.library.module.ServiceNotProvidedException;
7070
import org.apache.skywalking.oap.server.library.util.CollectionUtils;
71+
import org.apache.skywalking.oap.server.library.util.StringUtil;
7172
import org.apache.skywalking.oap.server.storage.plugin.banyandb.measure.BanyanDBEBPFProfilingScheduleQueryDAO;
7273
import org.apache.skywalking.oap.server.storage.plugin.banyandb.stream.BanyanDBEventQueryDAO;
7374
import org.apache.skywalking.oap.server.storage.plugin.banyandb.measure.BanyanDBHierarchyQueryDAO;
@@ -133,7 +134,9 @@ public void onInitialized(final BanyanDBStorageConfig initialized) {
133134
public void prepare() throws ServiceNotProvidedException, ModuleStartException {
134135
// load banyandb config
135136
config = new BanyanDBConfigLoader(this).loadConfig();
136-
137+
if (StringUtil.isBlank(config.getGlobal().getNamespace())) {
138+
config.getGlobal().setNamespace("sw");
139+
}
137140
if (config.getMetricsDay().getTtl() > config.getMetadata().getTtl()) {
138141
throw new ModuleStartException("metricsDay ttl must be less than or equal to metadata ttl");
139142
}

oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBUIMenuManagementDAO.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import org.apache.skywalking.banyandb.v1.client.TagAndValue;
2525
import org.apache.skywalking.banyandb.property.v1.BanyandbProperty.Property;
2626
import org.apache.skywalking.oap.server.core.management.ui.menu.UIMenu;
27-
import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB;
2827
import org.apache.skywalking.oap.server.core.storage.management.UIMenuManagementDAO;
2928
import org.apache.skywalking.oap.server.storage.plugin.banyandb.stream.AbstractBanyanDBDAO;
3029

@@ -39,7 +38,7 @@ public BanyanDBUIMenuManagementDAO(BanyanDBStorageClient client) {
3938

4039
@Override
4140
public UIMenu getMenu(String id) throws IOException {
42-
Property p = getClient().queryProperty(BanyanDB.PropertyGroup.PROPERTY.getName(), UIMenu.INDEX_NAME, id);
41+
Property p = getClient().queryProperty(UIMenu.INDEX_NAME, id);
4342
if (p == null) {
4443
return null;
4544
}
@@ -48,9 +47,10 @@ public UIMenu getMenu(String id) throws IOException {
4847

4948
@Override
5049
public void saveMenu(UIMenu menu) throws IOException {
50+
MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findManagementMetadata(UIMenu.INDEX_NAME);
5151
Property property = Property.newBuilder()
5252
.setMetadata(
53-
BanyandbCommon.Metadata.newBuilder().setGroup(BanyanDB.PropertyGroup.PROPERTY.getName()).setName(UIMenu.INDEX_NAME))
53+
BanyandbCommon.Metadata.newBuilder().setGroup(schema.getMetadata().getGroup()).setName(UIMenu.INDEX_NAME))
5454
.setId(menu.getMenuId())
5555
.addTags(TagAndValue.newStringTag(UIMenu.CONFIGURATION, menu.getConfigurationJson())
5656
.build())

oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBUITemplateManagementDAO.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import org.apache.skywalking.oap.server.core.query.input.DashboardSetting;
2828
import org.apache.skywalking.oap.server.core.query.type.DashboardConfiguration;
2929
import org.apache.skywalking.oap.server.core.query.type.TemplateChangeStatus;
30-
import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB;
3130
import org.apache.skywalking.oap.server.core.storage.management.UITemplateManagementDAO;
3231
import org.apache.skywalking.oap.server.storage.plugin.banyandb.stream.AbstractBanyanDBDAO;
3332

@@ -44,7 +43,7 @@ public BanyanDBUITemplateManagementDAO(BanyanDBStorageClient client) {
4443

4544
@Override
4645
public DashboardConfiguration getTemplate(String id) throws IOException {
47-
Property p = getClient().queryProperty(BanyanDB.PropertyGroup.PROPERTY.getName(), UITemplate.INDEX_NAME, id);
46+
Property p = getClient().queryProperty(UITemplate.INDEX_NAME, id);
4847
if (p == null) {
4948
return null;
5049
}
@@ -53,7 +52,7 @@ public DashboardConfiguration getTemplate(String id) throws IOException {
5352

5453
@Override
5554
public List<DashboardConfiguration> getAllTemplates(Boolean includingDisabled) throws IOException {
56-
List<Property> propertyList = getClient().listProperties(BanyanDB.PropertyGroup.PROPERTY.getName(), UITemplate.INDEX_NAME);
55+
List<Property> propertyList = getClient().listProperties(UITemplate.INDEX_NAME);
5756
return propertyList.stream().map(p -> fromEntity(parse(p)))
5857
.filter(conf -> includingDisabled || !conf.isDisabled())
5958
.collect(Collectors.toList());
@@ -93,7 +92,7 @@ public TemplateChangeStatus changeTemplate(DashboardSetting setting) {
9392

9493
@Override
9594
public TemplateChangeStatus disableTemplate(String id) throws IOException {
96-
Property oldProperty = this.getClient().queryProperty(BanyanDB.PropertyGroup.PROPERTY.getName(), UITemplate.INDEX_NAME, id);
95+
Property oldProperty = this.getClient().queryProperty(UITemplate.INDEX_NAME, id);
9796
if (oldProperty == null) {
9897
return TemplateChangeStatus.builder().status(false).id(id).message("Can't find the template")
9998
.build();
@@ -136,9 +135,10 @@ public UITemplate parse(Property property) {
136135
}
137136

138137
public Property applyAll(UITemplate uiTemplate) {
138+
MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findManagementMetadata(UITemplate.INDEX_NAME);
139139
return Property.newBuilder()
140140
.setMetadata(BanyandbCommon.Metadata.newBuilder()
141-
.setGroup(BanyanDB.PropertyGroup.PROPERTY.getName())
141+
.setGroup(schema.getMetadata().getGroup())
142142
.setName(UITemplate.INDEX_NAME))
143143
.setId(uiTemplate.id().build())
144144
.addTags(TagAndValue.newStringTag(UITemplate.CONFIGURATION, uiTemplate.getConfiguration()).build())
@@ -154,9 +154,10 @@ public Property applyAll(UITemplate uiTemplate) {
154154
* @return new property (patch) to be applied
155155
*/
156156
public Property applyStatus(UITemplate uiTemplate) {
157+
MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findManagementMetadata(UITemplate.INDEX_NAME);
157158
return Property.newBuilder()
158159
.setMetadata(BanyandbCommon.Metadata.newBuilder()
159-
.setGroup(BanyanDB.PropertyGroup.PROPERTY.getName())
160+
.setGroup(schema.getMetadata().getGroup())
160161
.setName(UITemplate.INDEX_NAME))
161162
.setId(uiTemplate.id().build())
162163
.addTags(TagAndValue.newLongTag(UITemplate.DISABLED, uiTemplate.getDisabled()).build())
@@ -171,9 +172,10 @@ public Property applyStatus(UITemplate uiTemplate) {
171172
* @return new property (patch) to be applied
172173
*/
173174
public Property applyConfiguration(UITemplate uiTemplate) {
175+
MetadataRegistry.Schema schema = MetadataRegistry.INSTANCE.findManagementMetadata(UITemplate.INDEX_NAME);
174176
return Property.newBuilder()
175177
.setMetadata(BanyandbCommon.Metadata.newBuilder()
176-
.setGroup(BanyanDB.PropertyGroup.PROPERTY.getName())
178+
.setGroup(schema.getMetadata().getGroup())
177179
.setName(UITemplate.INDEX_NAME))
178180
.setId(uiTemplate.id().build())
179181
.addTags(TagAndValue.newStringTag(UITemplate.CONFIGURATION, uiTemplate.getConfiguration()).build())

0 commit comments

Comments
 (0)