Skip to content

Commit

Permalink
Merge branch 'master' into jedis
Browse files Browse the repository at this point in the history
  • Loading branch information
lytscu committed Mar 5, 2018
2 parents 6dafc2e + 9e9c08d commit 49cd58f
Show file tree
Hide file tree
Showing 86 changed files with 817 additions and 188 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,5 @@ target/
*~
packages/
**/dependency-reduced-pom.xml
/skywalking-agent/
/dist/
9 changes: 0 additions & 9 deletions apm-application-toolkit/apm-toolkit-log4j-1.x/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -59,13 +59,4 @@
</plugin>
</plugins>
</build>

<distributionManagement>
<repository>
<id>bintray-wu-sheng-sky-walking-repository</id>
<name>wu-sheng-sky-walking-repository</name>
<url>https://api.bintray.com/maven/wu-sheng/skywalking/org.apache.skywalking.apm-toolkit-log4j-1.x/;publish=1
</url>
</repository>
</distributionManagement>
</project>
8 changes: 0 additions & 8 deletions apm-application-toolkit/apm-toolkit-log4j-2.x/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -60,12 +60,4 @@
</plugins>
</build>

<distributionManagement>
<repository>
<id>bintray-wu-sheng-sky-walking-repository</id>
<name>wu-sheng-sky-walking-repository</name>
<url>https://api.bintray.com/maven/wu-sheng/skywalking/org.apache.skywalking.apm-toolkit-log4j-2.x/;publish=1
</url>
</repository>
</distributionManagement>
</project>
9 changes: 0 additions & 9 deletions apm-application-toolkit/apm-toolkit-logback-1.x/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -59,13 +59,4 @@
</plugin>
</plugins>
</build>

<distributionManagement>
<repository>
<id>bintray-wu-sheng-sky-walking-repository</id>
<name>wu-sheng-sky-walking-repository</name>
<url>https://api.bintray.com/maven/wu-sheng/skywalking/org.apache.skywalking.apm-toolkit-logback-1.x/;publish=1
</url>
</repository>
</distributionManagement>
</project>
9 changes: 1 addition & 8 deletions apm-application-toolkit/apm-toolkit-opentracing/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,5 @@
</dependency>
</dependencies>

<distributionManagement>
<repository>
<id>bintray-wu-sheng-sky-walking-repository</id>
<name>wu-sheng-sky-walking-repository</name>
<url>https://api.bintray.com/maven/wu-sheng/skywalking/org.apache.skywalking.apm-toolkit-opentracing/;publish=1
</url>
</repository>
</distributionManagement>

</project>
9 changes: 0 additions & 9 deletions apm-application-toolkit/apm-toolkit-trace/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,4 @@
</plugins>
</build>

<distributionManagement>
<repository>
<id>bintray-wu-sheng-sky-walking-repository</id>
<name>wu-sheng-sky-walking-repository</name>
<url>
https://api.bintray.com/maven/wu-sheng/skywalking/org.apache.skywalking.apm-toolkit-trace/;publish=1
</url>
</repository>
</distributionManagement>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@
import org.apache.skywalking.apm.collector.analysis.jvm.define.service.IGCMetricService;
import org.apache.skywalking.apm.collector.analysis.jvm.define.service.IMemoryMetricService;
import org.apache.skywalking.apm.collector.analysis.jvm.define.service.IMemoryPoolMetricService;
import org.apache.skywalking.apm.collector.analysis.metric.define.AnalysisMetricModule;
import org.apache.skywalking.apm.collector.analysis.metric.define.service.IInstanceHeartBeatService;
import org.apache.skywalking.apm.collector.core.module.ModuleManager;
import org.apache.skywalking.apm.collector.core.util.TimeBucketUtils;
import org.apache.skywalking.apm.collector.server.grpc.GRPCHandler;
Expand All @@ -49,12 +51,14 @@ public class JVMMetricsServiceHandler extends JVMMetricsServiceGrpc.JVMMetricsSe
private final IGCMetricService gcMetricService;
private final IMemoryMetricService memoryMetricService;
private final IMemoryPoolMetricService memoryPoolMetricService;
private final IInstanceHeartBeatService instanceHeartBeatService;

public JVMMetricsServiceHandler(ModuleManager moduleManager) {
this.cpuMetricService = moduleManager.find(AnalysisJVMModule.NAME).getService(ICpuMetricService.class);
this.gcMetricService = moduleManager.find(AnalysisJVMModule.NAME).getService(IGCMetricService.class);
this.memoryMetricService = moduleManager.find(AnalysisJVMModule.NAME).getService(IMemoryMetricService.class);
this.memoryPoolMetricService = moduleManager.find(AnalysisJVMModule.NAME).getService(IMemoryPoolMetricService.class);
this.instanceHeartBeatService = moduleManager.find(AnalysisMetricModule.NAME).getService(IInstanceHeartBeatService.class);
}

@Override public void collect(JVMMetrics request, StreamObserver<Downstream> responseObserver) {
Expand All @@ -67,6 +71,7 @@ public JVMMetricsServiceHandler(ModuleManager moduleManager) {
sendToMemoryMetricService(instanceId, time, metric.getMemoryList());
sendToMemoryPoolMetricService(instanceId, time, metric.getMemoryPoolList());
sendToGCMetricService(instanceId, time, metric.getGcList());
sendToInstanceHeartBeatService(instanceId, metric.getTime());
});

responseObserver.onNext(Downstream.newBuilder().build());
Expand All @@ -90,4 +95,8 @@ private void sendToCpuMetricService(int instanceId, long timeBucket, CPU cpu) {
private void sendToGCMetricService(int instanceId, long timeBucket, List<GC> gcs) {
gcs.forEach(gc -> gcMetricService.send(instanceId, timeBucket, gc.getPhraseValue(), gc.getCount(), gc.getTime()));
}

private void sendToInstanceHeartBeatService(int instanceId, long heartBeatTime) {
instanceHeartBeatService.heartBeat(instanceId, heartBeatTime);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ public ServiceNameDiscoveryServiceHandler(ModuleManager moduleManager) {
int applicationId = serviceNameElement.getApplicationId();
String serviceName = serviceNameElement.getServiceName();
int srcSpanType = serviceNameElement.getSrcSpanTypeValue();
int serviceId = serviceNameService.getOrCreate(applicationId, srcSpanType, serviceName);
int serviceId = serviceNameService.get(applicationId, srcSpanType, serviceName);

if (serviceId != 0) {
ServiceNameMappingElement.Builder mappingElement = ServiceNameMappingElement.newBuilder();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,11 @@
<artifactId>collector-storage-define</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>collector-cache-define</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>analysis-worker-model</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ public AlarmAssertWorker(ModuleManager moduleManager) {

protected abstract OUTPUT newAlarmObject(String id, INPUT inputMetric);

protected abstract void generateAlarmContent(OUTPUT alarm, double threshold);

protected abstract Double calleeErrorRateThreshold();

protected abstract Double callerErrorRateThreshold();
Expand All @@ -64,7 +66,7 @@ private void errorRateAlarmAssert(INPUT inputMetric) {
alarm.setAlarmType(AlarmType.ERROR_RATE.getValue());
alarm.setLastTimeBucket(inputMetric.getTimeBucket());
alarm.setSourceValue(MetricSource.Callee.getValue());
alarm.setAlarmContent("");
generateAlarmContent(alarm, calleeErrorRateThreshold());

onNext(alarm);
}
Expand All @@ -75,7 +77,7 @@ private void errorRateAlarmAssert(INPUT inputMetric) {
alarm.setAlarmType(AlarmType.ERROR_RATE.getValue());
alarm.setLastTimeBucket(inputMetric.getTimeBucket());
alarm.setSourceValue(MetricSource.Caller.getValue());
alarm.setAlarmContent("");
generateAlarmContent(alarm, callerErrorRateThreshold());

onNext(alarm);
}
Expand All @@ -100,7 +102,7 @@ private void averageResponseTimeAlarmAssert(INPUT inputMetric) {
alarm.setAlarmType(AlarmType.SLOW_RTT.getValue());
alarm.setLastTimeBucket(inputMetric.getTimeBucket());
alarm.setSourceValue(MetricSource.Callee.getValue());
alarm.setAlarmContent("");
generateAlarmContent(alarm, calleeAverageResponseTimeThreshold());

onNext(alarm);
}
Expand All @@ -111,7 +113,7 @@ private void averageResponseTimeAlarmAssert(INPUT inputMetric) {
alarm.setAlarmType(AlarmType.SLOW_RTT.getValue());
alarm.setLastTimeBucket(inputMetric.getTimeBucket());
alarm.setSourceValue(MetricSource.Caller.getValue());
alarm.setAlarmContent("");
generateAlarmContent(alarm, callerAverageResponseTimeThreshold());

onNext(alarm);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,23 +21,30 @@
import org.apache.skywalking.apm.collector.analysis.alarm.define.graph.AlarmWorkerIdDefine;
import org.apache.skywalking.apm.collector.analysis.alarm.provider.worker.AlarmAssertWorker;
import org.apache.skywalking.apm.collector.analysis.alarm.provider.worker.AlarmAssertWorkerProvider;
import org.apache.skywalking.apm.collector.cache.CacheModule;
import org.apache.skywalking.apm.collector.cache.service.ApplicationCacheService;
import org.apache.skywalking.apm.collector.configuration.ConfigurationModule;
import org.apache.skywalking.apm.collector.configuration.service.IApplicationAlarmRuleConfig;
import org.apache.skywalking.apm.collector.core.module.ModuleManager;
import org.apache.skywalking.apm.collector.core.util.Const;
import org.apache.skywalking.apm.collector.storage.table.MetricSource;
import org.apache.skywalking.apm.collector.storage.table.alarm.AlarmType;
import org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarm;
import org.apache.skywalking.apm.collector.storage.table.application.ApplicationMetric;
import org.apache.skywalking.apm.collector.storage.table.register.Application;

/**
* @author peng-yongsheng
*/
public class ApplicationMetricAlarmAssertWorker extends AlarmAssertWorker<ApplicationMetric, ApplicationAlarm> {

private final IApplicationAlarmRuleConfig applicationAlarmRuleConfig;
private final ApplicationCacheService applicationCacheService;

public ApplicationMetricAlarmAssertWorker(ModuleManager moduleManager) {
super(moduleManager);
this.applicationAlarmRuleConfig = moduleManager.find(ConfigurationModule.NAME).getService(IApplicationAlarmRuleConfig.class);
this.applicationCacheService = moduleManager.find(CacheModule.NAME).getService(ApplicationCacheService.class);
}

@Override public int id() {
Expand All @@ -51,6 +58,21 @@ public ApplicationMetricAlarmAssertWorker(ModuleManager moduleManager) {
return applicationAlarm;
}

@Override protected void generateAlarmContent(ApplicationAlarm alarm, double threshold) {
Application application = applicationCacheService.getApplicationById(alarm.getApplicationId());

String clientOrServer = "server";
if (MetricSource.Caller.getValue() == alarm.getSourceValue()) {
clientOrServer = "client";
}

if (AlarmType.ERROR_RATE.getValue() == alarm.getAlarmType()) {
alarm.setAlarmContent("The success rate of " + application.getApplicationCode() + ", detected from " + clientOrServer + " side, is lower than " + threshold + " rate.");
} else if (AlarmType.SLOW_RTT.getValue() == alarm.getAlarmType()) {
alarm.setAlarmContent("Response time of " + application.getApplicationCode() + ", detected from " + clientOrServer + " side, is slower than " + threshold + " ms.");
}
}

@Override protected Double calleeErrorRateThreshold() {
return applicationAlarmRuleConfig.calleeErrorRateThreshold();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,22 +21,29 @@
import org.apache.skywalking.apm.collector.analysis.alarm.define.graph.AlarmWorkerIdDefine;
import org.apache.skywalking.apm.collector.analysis.alarm.provider.worker.AlarmAssertWorker;
import org.apache.skywalking.apm.collector.analysis.alarm.provider.worker.AlarmAssertWorkerProvider;
import org.apache.skywalking.apm.collector.cache.CacheModule;
import org.apache.skywalking.apm.collector.cache.service.ApplicationCacheService;
import org.apache.skywalking.apm.collector.configuration.ConfigurationModule;
import org.apache.skywalking.apm.collector.configuration.service.IApplicationReferenceAlarmRuleConfig;
import org.apache.skywalking.apm.collector.core.module.ModuleManager;
import org.apache.skywalking.apm.collector.core.util.Const;
import org.apache.skywalking.apm.collector.storage.table.MetricSource;
import org.apache.skywalking.apm.collector.storage.table.alarm.AlarmType;
import org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationReferenceAlarm;
import org.apache.skywalking.apm.collector.storage.table.application.ApplicationReferenceMetric;
import org.apache.skywalking.apm.collector.storage.table.register.Application;

/**
* @author peng-yongsheng
*/
public class ApplicationReferenceMetricAlarmAssertWorker extends AlarmAssertWorker<ApplicationReferenceMetric, ApplicationReferenceAlarm> {

private final ApplicationCacheService applicationCacheService;
private final IApplicationReferenceAlarmRuleConfig applicationReferenceAlarmRuleConfig;

public ApplicationReferenceMetricAlarmAssertWorker(ModuleManager moduleManager) {
super(moduleManager);
this.applicationCacheService = moduleManager.find(CacheModule.NAME).getService(ApplicationCacheService.class);
this.applicationReferenceAlarmRuleConfig = moduleManager.find(ConfigurationModule.NAME).getService(IApplicationReferenceAlarmRuleConfig.class);
}

Expand All @@ -52,6 +59,21 @@ public ApplicationReferenceMetricAlarmAssertWorker(ModuleManager moduleManager)
return applicationReferenceAlarm;
}

@Override protected void generateAlarmContent(ApplicationReferenceAlarm alarm, double threshold) {
Application application = applicationCacheService.getApplicationById(alarm.getBehindApplicationId());

String clientOrServer = "server";
if (MetricSource.Caller.getValue() == alarm.getSourceValue()) {
clientOrServer = "client";
}

if (AlarmType.ERROR_RATE.getValue() == alarm.getAlarmType()) {
alarm.setAlarmContent("The success rate of " + application.getApplicationCode() + ", detected from " + clientOrServer + " side, is lower than " + threshold + " rate.");
} else if (AlarmType.SLOW_RTT.getValue() == alarm.getAlarmType()) {
alarm.setAlarmContent("Response time of " + application.getApplicationCode() + ", detected from " + clientOrServer + " side, is slower than " + threshold + " ms.");
}
}

@Override protected Double calleeErrorRateThreshold() {
return applicationReferenceAlarmRuleConfig.calleeErrorRateThreshold();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,25 +18,35 @@

package org.apache.skywalking.apm.collector.analysis.alarm.provider.worker.instance;

import com.google.gson.Gson;
import com.google.gson.JsonObject;
import org.apache.skywalking.apm.collector.analysis.alarm.define.graph.AlarmWorkerIdDefine;
import org.apache.skywalking.apm.collector.analysis.alarm.provider.worker.AlarmAssertWorker;
import org.apache.skywalking.apm.collector.analysis.alarm.provider.worker.AlarmAssertWorkerProvider;
import org.apache.skywalking.apm.collector.configuration.ConfigurationModule;
import org.apache.skywalking.apm.collector.configuration.service.IInstanceAlarmRuleConfig;
import org.apache.skywalking.apm.collector.core.module.ModuleManager;
import org.apache.skywalking.apm.collector.core.util.Const;
import org.apache.skywalking.apm.collector.storage.StorageModule;
import org.apache.skywalking.apm.collector.storage.dao.ui.IInstanceUIDAO;
import org.apache.skywalking.apm.collector.storage.table.MetricSource;
import org.apache.skywalking.apm.collector.storage.table.alarm.AlarmType;
import org.apache.skywalking.apm.collector.storage.table.alarm.InstanceAlarm;
import org.apache.skywalking.apm.collector.storage.table.instance.InstanceMetric;
import org.apache.skywalking.apm.collector.storage.table.register.Instance;

/**
* @author peng-yongsheng
*/
public class InstanceMetricAlarmAssertWorker extends AlarmAssertWorker<InstanceMetric, InstanceAlarm> {

private final Gson gson = new Gson();
private final IInstanceUIDAO instanceDAO;
private final IInstanceAlarmRuleConfig instanceAlarmRuleConfig;

public InstanceMetricAlarmAssertWorker(ModuleManager moduleManager) {
super(moduleManager);
this.instanceDAO = moduleManager.find(StorageModule.NAME).getService(IInstanceUIDAO.class);
this.instanceAlarmRuleConfig = moduleManager.find(ConfigurationModule.NAME).getService(IInstanceAlarmRuleConfig.class);
}

Expand All @@ -52,6 +62,26 @@ public InstanceMetricAlarmAssertWorker(ModuleManager moduleManager) {
return instanceAlarm;
}

@Override protected void generateAlarmContent(InstanceAlarm alarm, double threshold) {
Instance instance = instanceDAO.getInstance(alarm.getInstanceId());
JsonObject osInfo = gson.fromJson(instance.getOsInfo(), JsonObject.class);
String serverName = Const.UNKNOWN;
if (osInfo.has("hostName")) {
serverName = osInfo.get("hostName").getAsString();
}

String clientOrServer = "server";
if (MetricSource.Caller.getValue() == alarm.getSourceValue()) {
clientOrServer = "client";
}

if (AlarmType.ERROR_RATE.getValue() == alarm.getAlarmType()) {
alarm.setAlarmContent("The success rate of " + serverName + ", detected from " + clientOrServer + " side, is lower than " + threshold + " rate.");
} else if (AlarmType.SLOW_RTT.getValue() == alarm.getAlarmType()) {
alarm.setAlarmContent("Response time of " + serverName + ", detected from " + clientOrServer + " side, is slower than " + threshold + " ms.");
}
}

@Override protected Double calleeErrorRateThreshold() {
return instanceAlarmRuleConfig.calleeErrorRateThreshold();
}
Expand Down

0 comments on commit 49cd58f

Please sign in to comment.