Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,11 +71,13 @@ Release Notes.
* Fix wrong service name when IP is node IP in `k8s-mesh`.
* Support dynamic configurations for openAPI endpoint name grouping rule.
* Add component definition for `Alibaba Druid` and `HikariCP`.
* Fix `Hour` and `Day` dimensionality metrics not accurate, due to the cache read-then-clear mechanism conflicts with low
down metrics flush period added in 8.7.0.
* Fix `Hour` and `Day` dimensionality metrics not accurate, due to the cache read-then-clear mechanism conflicts with
low down metrics flush period added in 8.7.0.
* Fix `Slow SQL sampling` not accurate, due to TopN works conflict with cache read-then-clear mechanism.
* The persistent cache is only read when necessary.
* Add component definition for `Alibaba Fastjson`.
* Fix entity(service/instance/endpoint) names in the MAL system(prometheus, native meter, open census, envoy metric
service) are not controlled by core's naming-control mechanism.

#### UI

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,17 +24,22 @@
import org.apache.skywalking.oap.meter.analyzer.Analyzer;
import org.apache.skywalking.oap.server.core.analysis.IDManager;
import org.apache.skywalking.oap.server.core.analysis.StreamDefinition;
import org.apache.skywalking.oap.server.core.analysis.meter.MeterEntity;
import org.apache.skywalking.oap.server.core.analysis.meter.MeterSystem;
import org.apache.skywalking.oap.server.core.analysis.meter.function.AcceptableValue;
import org.apache.skywalking.oap.server.core.analysis.meter.function.avg.AvgFunction;
import org.apache.skywalking.oap.server.core.analysis.meter.function.avg.AvgHistogramPercentileFunction;
import org.apache.skywalking.oap.server.core.analysis.meter.function.avg.AvgLabeledFunction;
import org.apache.skywalking.oap.server.core.analysis.metrics.IntList;
import org.apache.skywalking.oap.server.core.analysis.worker.MetricsStreamProcessor;
import org.apache.skywalking.oap.server.core.config.NamingControl;
import org.apache.skywalking.oap.server.core.config.group.EndpointNameGrouping;
import org.apache.skywalking.oap.server.core.storage.StorageException;
import org.apache.skywalking.oap.server.library.module.ModuleManager;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
Expand Down Expand Up @@ -67,6 +72,17 @@ public void setup() throws StorageException {

}

@BeforeClass
public static void init() {
MeterEntity.setNamingControl(
new NamingControl(512, 512, 512, new EndpointNameGrouping()));
}

@AfterClass
public static void tearDown() {
MeterEntity.setNamingControl(null);
}

@Test
public void testSingle() {
analyzer = Analyzer.build(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,11 @@
import java.util.Map;
import lombok.extern.slf4j.Slf4j;
import org.apache.skywalking.oap.server.core.analysis.meter.MeterEntity;
import org.apache.skywalking.oap.server.core.config.NamingControl;
import org.apache.skywalking.oap.server.core.config.group.EndpointNameGrouping;
import org.apache.skywalking.oap.server.core.source.DetectPoint;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
Expand Down Expand Up @@ -56,6 +60,10 @@ public class ScopeTest {

@Parameterized.Parameters(name = "{index}: {0}")
public static Collection<Object[]> data() {
// This method is called before `@BeforeClass`.
MeterEntity.setNamingControl(
new NamingControl(512, 512, 512, new EndpointNameGrouping()));

return Arrays.asList(new Object[][] {
{
"sum_service",
Expand Down Expand Up @@ -527,6 +535,17 @@ public static Collection<Object[]> data() {
});
}

@BeforeClass
public static void setup() {
MeterEntity.setNamingControl(
new NamingControl(512, 512, 512, new EndpointNameGrouping()));
}

@AfterClass
public static void tearDown() {
MeterEntity.setNamingControl(null);
}

@Test
public void test() {
Expression e = DSL.parse(expression);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import org.apache.skywalking.oap.server.core.analysis.ApdexThresholdConfig;
import org.apache.skywalking.oap.server.core.analysis.DisableRegister;
import org.apache.skywalking.oap.server.core.analysis.StreamAnnotationListener;
import org.apache.skywalking.oap.server.core.analysis.meter.MeterEntity;
import org.apache.skywalking.oap.server.core.analysis.meter.MeterSystem;
import org.apache.skywalking.oap.server.core.analysis.metrics.ApdexMetrics;
import org.apache.skywalking.oap.server.core.analysis.worker.ManagementStreamProcessor;
Expand Down Expand Up @@ -154,12 +155,14 @@ public void prepare() throws ServiceNotProvidedException, ModuleStartException {
DefaultScopeDefine.activeExtraModelColumns();
}
EndpointNameGrouping endpointNameGrouping = new EndpointNameGrouping();
this.registerServiceImplementation(NamingControl.class, new NamingControl(
final NamingControl namingControl = new NamingControl(
moduleConfig.getServiceNameMaxLength(),
moduleConfig.getInstanceNameMaxLength(),
moduleConfig.getEndpointNameMaxLength(),
endpointNameGrouping
));
);
this.registerServiceImplementation(NamingControl.class, namingControl);
MeterEntity.setNamingControl(namingControl);
try {
endpointNameGroupingRuleWatcher = new EndpointNameGroupingRuleWatcher(
this, endpointNameGrouping);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,12 @@

package org.apache.skywalking.oap.server.core.analysis.meter;

import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.apache.skywalking.oap.server.core.UnexpectedException;
import org.apache.skywalking.oap.server.core.analysis.IDManager;
import org.apache.skywalking.oap.server.core.config.NamingControl;
import org.apache.skywalking.oap.server.core.source.DetectPoint;

/**
Expand All @@ -33,17 +32,21 @@
@EqualsAndHashCode
@ToString
@Getter
@Builder(toBuilder = true)
public class MeterEntity {
private static NamingControl NAMING_CONTROL;
Comment thread
kezhenxu94 marked this conversation as resolved.

private ScopeType scopeType;
@Setter
private String serviceName;
private String instanceName;
private String endpointName;
private String sourceServiceName;
private String destServiceName;
private DetectPoint detectPoint;

private MeterEntity() {

}

public String id() {
switch (scopeType) {
case SERVICE:
Expand Down Expand Up @@ -76,43 +79,54 @@ public String destServiceId() {
return IDManager.ServiceID.buildId(destServiceName, true);
}

public static void setNamingControl(final NamingControl namingControl) {
NAMING_CONTROL = namingControl;
}

public void setServiceName(final String serviceName) {
this.serviceName = NAMING_CONTROL.formatServiceName(serviceName);
}

/**
* Create a service level meter entity.
*/
public static MeterEntity newService(String serviceName) {
return MeterEntity.builder().scopeType(ScopeType.SERVICE).serviceName(serviceName).build();
final MeterEntity meterEntity = new MeterEntity();
meterEntity.scopeType = ScopeType.SERVICE;
meterEntity.serviceName = NAMING_CONTROL.formatServiceName(serviceName);
return meterEntity;
}

/**
* Create a service instance level meter entity.
*/
public static MeterEntity newServiceInstance(String serviceName, String serviceInstance) {
return MeterEntity.builder()
.scopeType(ScopeType.SERVICE_INSTANCE)
.serviceName(serviceName)
.instanceName(serviceInstance)
.build();
final MeterEntity meterEntity = new MeterEntity();
meterEntity.scopeType = ScopeType.SERVICE_INSTANCE;
meterEntity.serviceName = NAMING_CONTROL.formatServiceName(serviceName);
meterEntity.instanceName = NAMING_CONTROL.formatInstanceName(serviceInstance);
return meterEntity;
}

/**
* Create an endpoint level meter entity.
*/
public static MeterEntity newEndpoint(String serviceName, String endpointName) {
return MeterEntity.builder()
.scopeType(ScopeType.ENDPOINT)
.serviceName(serviceName)
.endpointName(endpointName)
.build();
final MeterEntity meterEntity = new MeterEntity();
meterEntity.scopeType = ScopeType.ENDPOINT;
meterEntity.serviceName = NAMING_CONTROL.formatServiceName(serviceName);
meterEntity.endpointName = NAMING_CONTROL.formatEndpointName(serviceName, endpointName);
return meterEntity;
}

public static MeterEntity newServiceRelation(String sourceServiceName,
String destServiceName,
DetectPoint detectPoint) {
return MeterEntity.builder()
.scopeType(ScopeType.SERVICE_RELATION)
.sourceServiceName(sourceServiceName)
.destServiceName(destServiceName)
.detectPoint(detectPoint)
.build();
final MeterEntity meterEntity = new MeterEntity();
meterEntity.scopeType = ScopeType.SERVICE_RELATION;
meterEntity.sourceServiceName = NAMING_CONTROL.formatServiceName(sourceServiceName);
meterEntity.destServiceName = NAMING_CONTROL.formatServiceName(destServiceName);
meterEntity.detectPoint = detectPoint;
return meterEntity;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,14 @@
import java.util.stream.IntStream;
import org.apache.skywalking.oap.server.core.analysis.meter.MeterEntity;
import org.apache.skywalking.oap.server.core.analysis.metrics.DataTable;
import org.apache.skywalking.oap.server.core.config.NamingControl;
import org.apache.skywalking.oap.server.core.config.group.EndpointNameGrouping;
import org.apache.skywalking.oap.server.core.query.type.Bucket;
import org.apache.skywalking.oap.server.core.query.type.HeatMap;
import org.apache.skywalking.oap.server.core.storage.StorageHashMapBuilder;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;

import static org.apache.skywalking.oap.server.core.analysis.meter.function.HistogramFunction.DATASET;
Expand All @@ -52,6 +56,17 @@ public class HistogramFunctionTest {
10
};

@BeforeClass
public static void setup() {
MeterEntity.setNamingControl(
new NamingControl(512, 512, 512, new EndpointNameGrouping()));
}

@AfterClass
public static void tearDown() {
MeterEntity.setNamingControl(null);
}

@Test
public void testFunction() {
HistogramFunctionInst inst = new HistogramFunctionInst();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,12 @@
import org.apache.skywalking.oap.server.core.analysis.meter.MeterEntity;
import org.apache.skywalking.oap.server.core.analysis.metrics.DataTable;
import org.apache.skywalking.oap.server.core.analysis.metrics.IntList;
import org.apache.skywalking.oap.server.core.config.NamingControl;
import org.apache.skywalking.oap.server.core.config.group.EndpointNameGrouping;
import org.apache.skywalking.oap.server.core.storage.StorageHashMapBuilder;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;

public class PercentileFunctionTest {
Expand All @@ -46,6 +50,17 @@ public class PercentileFunctionTest {
90
};

@BeforeClass
public static void setup() {
MeterEntity.setNamingControl(
new NamingControl(512, 512, 512, new EndpointNameGrouping()));
}

@AfterClass
public static void tearDown() {
MeterEntity.setNamingControl(null);
}

@Test
public void testFunction() {
PercentileFunctionInst inst = new PercentileFunctionInst();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,14 @@
import org.apache.skywalking.oap.server.core.analysis.meter.function.AcceptableValue;
import org.apache.skywalking.oap.server.core.analysis.meter.function.BucketedValues;
import org.apache.skywalking.oap.server.core.analysis.metrics.DataTable;
import org.apache.skywalking.oap.server.core.config.NamingControl;
import org.apache.skywalking.oap.server.core.config.group.EndpointNameGrouping;
import org.apache.skywalking.oap.server.core.query.type.Bucket;
import org.apache.skywalking.oap.server.core.query.type.HeatMap;
import org.apache.skywalking.oap.server.core.storage.StorageHashMapBuilder;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;

import static org.apache.skywalking.oap.server.core.analysis.meter.function.avg.AvgHistogramFunction.DATASET;
Expand All @@ -49,6 +53,17 @@ public class AvgHistogramFunctionTest {
10
};

@BeforeClass
public static void setup() {
MeterEntity.setNamingControl(
new NamingControl(512, 512, 512, new EndpointNameGrouping()));
}

@AfterClass
public static void tearDown() {
MeterEntity.setNamingControl(null);
}

@Test
public void testFunction() {
HistogramFunctionInst inst = new HistogramFunctionInst();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,12 @@
import org.apache.skywalking.oap.server.core.analysis.meter.function.PercentileArgument;
import org.apache.skywalking.oap.server.core.analysis.metrics.DataTable;
import org.apache.skywalking.oap.server.core.analysis.metrics.IntList;
import org.apache.skywalking.oap.server.core.config.NamingControl;
import org.apache.skywalking.oap.server.core.config.group.EndpointNameGrouping;
import org.apache.skywalking.oap.server.core.storage.StorageHashMapBuilder;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;

import static org.junit.Assert.assertEquals;
Expand All @@ -45,6 +49,17 @@ public class AvgHistogramPercentileFunctionTest {
90
};

@BeforeClass
public static void setup() {
MeterEntity.setNamingControl(
new NamingControl(512, 512, 512, new EndpointNameGrouping()));
}

@AfterClass
public static void tearDown() {
MeterEntity.setNamingControl(null);
}

@Test
public void testFunction() {
PercentileFunctionInst inst = new PercentileFunctionInst();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,11 @@
import java.util.Map;
import org.apache.skywalking.oap.server.core.analysis.meter.MeterEntity;
import org.apache.skywalking.oap.server.core.analysis.metrics.DataTable;
import org.apache.skywalking.oap.server.core.config.NamingControl;
import org.apache.skywalking.oap.server.core.config.group.EndpointNameGrouping;
import org.apache.skywalking.oap.server.core.storage.StorageHashMapBuilder;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
Expand All @@ -43,6 +47,17 @@ public class AvgLabeledFunctionTest {
@Spy
private AvgLabeledFunction function;

@BeforeClass
public static void setup() {
MeterEntity.setNamingControl(
new NamingControl(512, 512, 512, new EndpointNameGrouping()));
}

@AfterClass
public static void tearDown() {
MeterEntity.setNamingControl(null);
}

@Test
public void testAccept() {
function.accept(MeterEntity.newService("request_count"), build(asList("200", "404"), asList(10L, 2L)));
Expand Down
Loading