parent
36d0eb5f69
commit
3863aa71ee
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -49,6 +49,8 @@ public abstract class AlarmAssertWorker<INPUT extends StreamData & Metric, OUTPU
|
|||
|
||||
protected abstract OUTPUT newAlarmObject(String id, INPUT inputMetric);
|
||||
|
||||
protected abstract void generateAlarmContent(OUTPUT alarm, double threshold);
|
||||
|
||||
protected abstract Double calleeErrorRateThreshold();
|
||||
|
||||
protected abstract Double callerErrorRateThreshold();
|
||||
|
|
@ -64,7 +66,7 @@ public abstract class AlarmAssertWorker<INPUT extends StreamData & Metric, OUTPU
|
|||
alarm.setAlarmType(AlarmType.ERROR_RATE.getValue());
|
||||
alarm.setLastTimeBucket(inputMetric.getTimeBucket());
|
||||
alarm.setSourceValue(MetricSource.Callee.getValue());
|
||||
alarm.setAlarmContent("");
|
||||
generateAlarmContent(alarm, calleeErrorRateThreshold());
|
||||
|
||||
onNext(alarm);
|
||||
}
|
||||
|
|
@ -75,7 +77,7 @@ public abstract class AlarmAssertWorker<INPUT extends StreamData & Metric, OUTPU
|
|||
alarm.setAlarmType(AlarmType.ERROR_RATE.getValue());
|
||||
alarm.setLastTimeBucket(inputMetric.getTimeBucket());
|
||||
alarm.setSourceValue(MetricSource.Caller.getValue());
|
||||
alarm.setAlarmContent("");
|
||||
generateAlarmContent(alarm, callerErrorRateThreshold());
|
||||
|
||||
onNext(alarm);
|
||||
}
|
||||
|
|
@ -100,7 +102,7 @@ public abstract class AlarmAssertWorker<INPUT extends StreamData & Metric, OUTPU
|
|||
alarm.setAlarmType(AlarmType.SLOW_RTT.getValue());
|
||||
alarm.setLastTimeBucket(inputMetric.getTimeBucket());
|
||||
alarm.setSourceValue(MetricSource.Callee.getValue());
|
||||
alarm.setAlarmContent("");
|
||||
generateAlarmContent(alarm, calleeAverageResponseTimeThreshold());
|
||||
|
||||
onNext(alarm);
|
||||
}
|
||||
|
|
@ -111,7 +113,7 @@ public abstract class AlarmAssertWorker<INPUT extends StreamData & Metric, OUTPU
|
|||
alarm.setAlarmType(AlarmType.SLOW_RTT.getValue());
|
||||
alarm.setLastTimeBucket(inputMetric.getTimeBucket());
|
||||
alarm.setSourceValue(MetricSource.Caller.getValue());
|
||||
alarm.setAlarmContent("");
|
||||
generateAlarmContent(alarm, callerAverageResponseTimeThreshold());
|
||||
|
||||
onNext(alarm);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,12 +21,17 @@ package org.apache.skywalking.apm.collector.analysis.alarm.provider.worker.appli
|
|||
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
|
||||
|
|
@ -34,10 +39,12 @@ import org.apache.skywalking.apm.collector.storage.table.application.Application
|
|||
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() {
|
||||
|
|
@ -51,6 +58,21 @@ public class ApplicationMetricAlarmAssertWorker extends AlarmAssertWorker<Applic
|
|||
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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,22 +21,29 @@ package org.apache.skywalking.apm.collector.analysis.alarm.provider.worker.appli
|
|||
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);
|
||||
}
|
||||
|
||||
|
|
@ -52,6 +59,21 @@ public class ApplicationReferenceMetricAlarmAssertWorker extends AlarmAssertWork
|
|||
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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@
|
|||
|
||||
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;
|
||||
|
|
@ -25,18 +27,26 @@ 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);
|
||||
}
|
||||
|
||||
|
|
@ -52,6 +62,26 @@ public class InstanceMetricAlarmAssertWorker extends AlarmAssertWorker<InstanceM
|
|||
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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@
|
|||
|
||||
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;
|
||||
|
|
@ -25,18 +27,26 @@ import org.apache.skywalking.apm.collector.configuration.ConfigurationModule;
|
|||
import org.apache.skywalking.apm.collector.configuration.service.IInstanceReferenceAlarmRuleConfig;
|
||||
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.InstanceReferenceAlarm;
|
||||
import org.apache.skywalking.apm.collector.storage.table.instance.InstanceReferenceMetric;
|
||||
import org.apache.skywalking.apm.collector.storage.table.register.Instance;
|
||||
|
||||
/**
|
||||
* @author peng-yongsheng
|
||||
*/
|
||||
public class InstanceReferenceMetricAlarmAssertWorker extends AlarmAssertWorker<InstanceReferenceMetric, InstanceReferenceAlarm> {
|
||||
|
||||
private Gson gson = new Gson();
|
||||
private final IInstanceUIDAO instanceDAO;
|
||||
private final IInstanceReferenceAlarmRuleConfig instanceReferenceAlarmRuleConfig;
|
||||
|
||||
public InstanceReferenceMetricAlarmAssertWorker(ModuleManager moduleManager) {
|
||||
super(moduleManager);
|
||||
this.instanceDAO = moduleManager.find(StorageModule.NAME).getService(IInstanceUIDAO.class);
|
||||
this.instanceReferenceAlarmRuleConfig = moduleManager.find(ConfigurationModule.NAME).getService(IInstanceReferenceAlarmRuleConfig.class);
|
||||
}
|
||||
|
||||
|
|
@ -54,6 +64,26 @@ public class InstanceReferenceMetricAlarmAssertWorker extends AlarmAssertWorker<
|
|||
return instanceReferenceAlarm;
|
||||
}
|
||||
|
||||
@Override protected void generateAlarmContent(InstanceReferenceAlarm alarm, double threshold) {
|
||||
Instance instance = instanceDAO.getInstance(alarm.getBehindInstanceId());
|
||||
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 + ".");
|
||||
} else if (AlarmType.SLOW_RTT.getValue() == alarm.getAlarmType()) {
|
||||
alarm.setAlarmContent("Response time of " + serverName + ", detected from " + clientOrServer + " side, is slower than " + threshold + ".");
|
||||
}
|
||||
}
|
||||
|
||||
@Override protected Double calleeErrorRateThreshold() {
|
||||
return instanceReferenceAlarmRuleConfig.calleeErrorRateThreshold();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,11 +21,16 @@ package org.apache.skywalking.apm.collector.analysis.alarm.provider.worker.servi
|
|||
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.ServiceNameCacheService;
|
||||
import org.apache.skywalking.apm.collector.configuration.ConfigurationModule;
|
||||
import org.apache.skywalking.apm.collector.configuration.service.IServiceAlarmRuleConfig;
|
||||
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.ServiceAlarm;
|
||||
import org.apache.skywalking.apm.collector.storage.table.register.ServiceName;
|
||||
import org.apache.skywalking.apm.collector.storage.table.service.ServiceMetric;
|
||||
|
||||
/**
|
||||
|
|
@ -33,10 +38,12 @@ import org.apache.skywalking.apm.collector.storage.table.service.ServiceMetric;
|
|||
*/
|
||||
public class ServiceMetricAlarmAssertWorker extends AlarmAssertWorker<ServiceMetric, ServiceAlarm> {
|
||||
|
||||
private final ServiceNameCacheService serviceNameCacheService;
|
||||
private final IServiceAlarmRuleConfig serviceAlarmRuleConfig;
|
||||
|
||||
public ServiceMetricAlarmAssertWorker(ModuleManager moduleManager) {
|
||||
super(moduleManager);
|
||||
this.serviceNameCacheService = moduleManager.find(CacheModule.NAME).getService(ServiceNameCacheService.class);
|
||||
this.serviceAlarmRuleConfig = moduleManager.find(ConfigurationModule.NAME).getService(IServiceAlarmRuleConfig.class);
|
||||
}
|
||||
|
||||
|
|
@ -53,6 +60,21 @@ public class ServiceMetricAlarmAssertWorker extends AlarmAssertWorker<ServiceMet
|
|||
return serviceAlarm;
|
||||
}
|
||||
|
||||
@Override protected void generateAlarmContent(ServiceAlarm alarm, double threshold) {
|
||||
ServiceName serviceName = serviceNameCacheService.get(alarm.getServiceId());
|
||||
|
||||
String clientOrServer = "server";
|
||||
if (MetricSource.Caller.getValue() == alarm.getSourceValue()) {
|
||||
clientOrServer = "client";
|
||||
}
|
||||
|
||||
if (AlarmType.ERROR_RATE.getValue() == alarm.getAlarmType()) {
|
||||
alarm.setAlarmContent("The success rate of " + serviceName.getServiceName() + ", detected from " + clientOrServer + " side, is lower than " + threshold + " rate.");
|
||||
} else if (AlarmType.SLOW_RTT.getValue() == alarm.getAlarmType()) {
|
||||
alarm.setAlarmContent("Response time of " + serviceName.getServiceName() + ", detected from " + clientOrServer + " side, is slower than " + threshold + " ms.");
|
||||
}
|
||||
}
|
||||
|
||||
@Override protected Double calleeErrorRateThreshold() {
|
||||
return serviceAlarmRuleConfig.calleeErrorRateThreshold();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,26 +21,29 @@ package org.apache.skywalking.apm.collector.analysis.alarm.provider.worker.servi
|
|||
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.ServiceNameCacheService;
|
||||
import org.apache.skywalking.apm.collector.configuration.ConfigurationModule;
|
||||
import org.apache.skywalking.apm.collector.configuration.service.IServiceReferenceAlarmRuleConfig;
|
||||
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.ServiceReferenceAlarm;
|
||||
import org.apache.skywalking.apm.collector.storage.table.register.ServiceName;
|
||||
import org.apache.skywalking.apm.collector.storage.table.service.ServiceReferenceMetric;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* @author peng-yongsheng
|
||||
*/
|
||||
public class ServiceReferenceMetricAlarmAssertWorker extends AlarmAssertWorker<ServiceReferenceMetric, ServiceReferenceAlarm> {
|
||||
|
||||
private final Logger logger = LoggerFactory.getLogger(ServiceReferenceMetricAlarmAssertWorker.class);
|
||||
|
||||
private final ServiceNameCacheService serviceNameCacheService;
|
||||
private final IServiceReferenceAlarmRuleConfig serviceReferenceAlarmRuleConfig;
|
||||
|
||||
public ServiceReferenceMetricAlarmAssertWorker(ModuleManager moduleManager) {
|
||||
ServiceReferenceMetricAlarmAssertWorker(ModuleManager moduleManager) {
|
||||
super(moduleManager);
|
||||
this.serviceNameCacheService = moduleManager.find(CacheModule.NAME).getService(ServiceNameCacheService.class);
|
||||
this.serviceReferenceAlarmRuleConfig = moduleManager.find(ConfigurationModule.NAME).getService(IServiceReferenceAlarmRuleConfig.class);
|
||||
}
|
||||
|
||||
|
|
@ -60,6 +63,21 @@ public class ServiceReferenceMetricAlarmAssertWorker extends AlarmAssertWorker<S
|
|||
return serviceReferenceAlarm;
|
||||
}
|
||||
|
||||
@Override protected void generateAlarmContent(ServiceReferenceAlarm alarm, double threshold) {
|
||||
ServiceName serviceName = serviceNameCacheService.get(alarm.getBehindServiceId());
|
||||
|
||||
String clientOrServer = "server";
|
||||
if (MetricSource.Caller.getValue() == alarm.getSourceValue()) {
|
||||
clientOrServer = "client";
|
||||
}
|
||||
|
||||
if (AlarmType.ERROR_RATE.getValue() == alarm.getAlarmType()) {
|
||||
alarm.setAlarmContent("The success rate of " + serviceName.getServiceName() + ", detected from " + clientOrServer + " side, is lower than " + threshold + " rate.");
|
||||
} else if (AlarmType.SLOW_RTT.getValue() == alarm.getAlarmType()) {
|
||||
alarm.setAlarmContent("Response time of " + serviceName.getServiceName() + ", detected from " + clientOrServer + " side, is slower than " + threshold + " ms.");
|
||||
}
|
||||
}
|
||||
|
||||
@Override protected Double calleeErrorRateThreshold() {
|
||||
return serviceReferenceAlarmRuleConfig.calleeErrorRateThreshold();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,5 +27,5 @@ import org.apache.skywalking.apm.collector.storage.ui.alarm.Alarm;
|
|||
*/
|
||||
public interface IApplicationAlarmUIDAO extends DAO {
|
||||
|
||||
Alarm loadAlarmList(String keyword, long start, long end, int limit, int from) throws ParseException;
|
||||
Alarm loadAlarmList(String keyword, long startTimeBucket, long endTimeBucket, int limit, int from) throws ParseException;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,5 +27,5 @@ import org.apache.skywalking.apm.collector.storage.ui.alarm.Alarm;
|
|||
*/
|
||||
public interface IInstanceAlarmUIDAO extends DAO {
|
||||
|
||||
Alarm loadAlarmList(String keyword, long start, long end, int limit, int from) throws ParseException;
|
||||
Alarm loadAlarmList(String keyword, long startTimeBucket, long endTimeBucket, int limit, int from) throws ParseException;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,5 +27,5 @@ import org.apache.skywalking.apm.collector.storage.ui.alarm.Alarm;
|
|||
*/
|
||||
public interface IServiceAlarmUIDAO extends DAO {
|
||||
|
||||
Alarm loadAlarmList(String keyword, long start, long end, int limit, int from) throws ParseException;
|
||||
Alarm loadAlarmList(String keyword, long startTimeBucket, long endTimeBucket, int limit, int from) throws ParseException;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,18 +22,18 @@ package org.apache.skywalking.apm.collector.storage.ui.alarm;
|
|||
* @author peng-yongsheng
|
||||
*/
|
||||
public class AlarmItem {
|
||||
private String id;
|
||||
private int id;
|
||||
private String title;
|
||||
private String content;
|
||||
private String startTime;
|
||||
private AlarmType alarmType;
|
||||
private CauseType causeType;
|
||||
|
||||
public String getId() {
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -46,13 +46,14 @@ public class ApplicationAlarmEsUIDAO extends EsDAO implements IApplicationAlarmU
|
|||
}
|
||||
|
||||
@Override
|
||||
public Alarm loadAlarmList(String keyword, long start, long end, int limit, int from) throws ParseException {
|
||||
public Alarm loadAlarmList(String keyword, long startTimeBucket, long endTimeBucket, int limit,
|
||||
int from) throws ParseException {
|
||||
SearchRequestBuilder searchRequestBuilder = getClient().prepareSearch(ApplicationAlarmTable.TABLE);
|
||||
searchRequestBuilder.setTypes(ApplicationAlarmTable.TABLE_TYPE);
|
||||
searchRequestBuilder.setSearchType(SearchType.DFS_QUERY_THEN_FETCH);
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must().add(QueryBuilders.rangeQuery(ApplicationAlarmTable.COLUMN_LAST_TIME_BUCKET).gte(start).lte(end));
|
||||
boolQueryBuilder.must().add(QueryBuilders.rangeQuery(ApplicationAlarmTable.COLUMN_LAST_TIME_BUCKET).gte(startTimeBucket).lte(endTimeBucket));
|
||||
if (StringUtils.isNotEmpty(keyword)) {
|
||||
boolQueryBuilder.must().add(QueryBuilders.matchQuery(ApplicationAlarmTable.COLUMN_ALARM_CONTENT, keyword));
|
||||
}
|
||||
|
|
@ -68,8 +69,7 @@ public class ApplicationAlarmEsUIDAO extends EsDAO implements IApplicationAlarmU
|
|||
alarm.setTotal((int)searchResponse.getHits().getTotalHits());
|
||||
for (SearchHit searchHit : searchHits) {
|
||||
AlarmItem alarmItem = new AlarmItem();
|
||||
alarmItem.setId(searchHit.getId());
|
||||
alarmItem.setTitle((String)searchHit.getSource().get(ApplicationAlarmTable.COLUMN_ALARM_CONTENT));
|
||||
alarmItem.setId(((Number)searchHit.getSource().get(ApplicationAlarmTable.COLUMN_APPLICATION_ID)).intValue());
|
||||
alarmItem.setContent((String)searchHit.getSource().get(ApplicationAlarmTable.COLUMN_ALARM_CONTENT));
|
||||
|
||||
long lastTimeBucket = ((Number)searchHit.getSource().get(ApplicationAlarmTable.COLUMN_LAST_TIME_BUCKET)).longValue();
|
||||
|
|
|
|||
|
|
@ -46,13 +46,14 @@ public class InstanceAlarmEsUIDAO extends EsDAO implements IInstanceAlarmUIDAO {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Alarm loadAlarmList(String keyword, long start, long end, int limit, int from) throws ParseException {
|
||||
public Alarm loadAlarmList(String keyword, long startTimeBucket, long endTimeBucket, int limit,
|
||||
int from) throws ParseException {
|
||||
SearchRequestBuilder searchRequestBuilder = getClient().prepareSearch(InstanceAlarmTable.TABLE);
|
||||
searchRequestBuilder.setTypes(InstanceAlarmTable.TABLE_TYPE);
|
||||
searchRequestBuilder.setSearchType(SearchType.DFS_QUERY_THEN_FETCH);
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must().add(QueryBuilders.rangeQuery(InstanceAlarmTable.COLUMN_LAST_TIME_BUCKET).gte(start).lte(end));
|
||||
boolQueryBuilder.must().add(QueryBuilders.rangeQuery(InstanceAlarmTable.COLUMN_LAST_TIME_BUCKET).gte(startTimeBucket).lte(endTimeBucket));
|
||||
if (StringUtils.isNotEmpty(keyword)) {
|
||||
boolQueryBuilder.must().add(QueryBuilders.matchQuery(InstanceAlarmTable.COLUMN_ALARM_CONTENT, keyword));
|
||||
}
|
||||
|
|
@ -68,7 +69,7 @@ public class InstanceAlarmEsUIDAO extends EsDAO implements IInstanceAlarmUIDAO {
|
|||
alarm.setTotal((int)searchResponse.getHits().getTotalHits());
|
||||
for (SearchHit searchHit : searchHits) {
|
||||
AlarmItem alarmItem = new AlarmItem();
|
||||
alarmItem.setId(searchHit.getId());
|
||||
alarmItem.setId(((Number)searchHit.getSource().get(InstanceAlarmTable.COLUMN_INSTANCE_ID)).intValue());
|
||||
alarmItem.setTitle((String)searchHit.getSource().get(InstanceAlarmTable.COLUMN_ALARM_CONTENT));
|
||||
alarmItem.setContent((String)searchHit.getSource().get(InstanceAlarmTable.COLUMN_ALARM_CONTENT));
|
||||
|
||||
|
|
|
|||
|
|
@ -46,13 +46,14 @@ public class ServiceAlarmEsUIDAO extends EsDAO implements IServiceAlarmUIDAO {
|
|||
}
|
||||
|
||||
@Override
|
||||
public Alarm loadAlarmList(String keyword, long start, long end, int limit, int from) throws ParseException {
|
||||
public Alarm loadAlarmList(String keyword, long startTimeBucket, long endTimeBucket, int limit,
|
||||
int from) throws ParseException {
|
||||
SearchRequestBuilder searchRequestBuilder = getClient().prepareSearch(ServiceAlarmTable.TABLE);
|
||||
searchRequestBuilder.setTypes(ServiceAlarmTable.TABLE_TYPE);
|
||||
searchRequestBuilder.setSearchType(SearchType.DFS_QUERY_THEN_FETCH);
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must().add(QueryBuilders.rangeQuery(ServiceAlarmTable.COLUMN_LAST_TIME_BUCKET).gte(start).lte(end));
|
||||
boolQueryBuilder.must().add(QueryBuilders.rangeQuery(ServiceAlarmTable.COLUMN_LAST_TIME_BUCKET).gte(startTimeBucket).lte(endTimeBucket));
|
||||
if (StringUtils.isNotEmpty(keyword)) {
|
||||
boolQueryBuilder.must().add(QueryBuilders.matchQuery(ServiceAlarmTable.COLUMN_ALARM_CONTENT, keyword));
|
||||
}
|
||||
|
|
@ -68,7 +69,7 @@ public class ServiceAlarmEsUIDAO extends EsDAO implements IServiceAlarmUIDAO {
|
|||
alarm.setTotal((int)searchResponse.getHits().getTotalHits());
|
||||
for (SearchHit searchHit : searchHits) {
|
||||
AlarmItem alarmItem = new AlarmItem();
|
||||
alarmItem.setId(searchHit.getId());
|
||||
alarmItem.setId(((Number)searchHit.getSource().get(ServiceAlarmTable.COLUMN_SERVICE_ID)).intValue());
|
||||
alarmItem.setTitle((String)searchHit.getSource().get(ServiceAlarmTable.COLUMN_ALARM_CONTENT));
|
||||
alarmItem.setContent((String)searchHit.getSource().get(ServiceAlarmTable.COLUMN_ALARM_CONTENT));
|
||||
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ public class ApplicationAlarmH2UIDAO extends H2DAO implements IApplicationAlarmU
|
|||
}
|
||||
|
||||
@Override
|
||||
public Alarm loadAlarmList(String keyword, long start, long end, int limit, int from) throws ParseException {
|
||||
public Alarm loadAlarmList(String keyword, long startTimeBucket, long endTimeBucket, int limit, int from) throws ParseException {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ public class InstanceAlarmH2UIDAO extends H2DAO implements IInstanceAlarmUIDAO {
|
|||
super(client);
|
||||
}
|
||||
|
||||
@Override public Alarm loadAlarmList(String keyword, long start, long end, int limit, int from) {
|
||||
@Override public Alarm loadAlarmList(String keyword, long startTimeBucket, long endTimeBucket, int limit, int from) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ public class ServiceAlarmH2UIDAO extends H2DAO implements IServiceAlarmUIDAO {
|
|||
super(client);
|
||||
}
|
||||
|
||||
@Override public Alarm loadAlarmList(String keyword, long start, long end, int limit, int from) {
|
||||
@Override public Alarm loadAlarmList(String keyword, long startTimeBucket, long endTimeBucket, int limit, int from) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -51,18 +51,18 @@ public class AlarmQuery implements Query {
|
|||
|
||||
public Alarm loadAlarmList(String keyword, AlarmType alarmType, Duration duration,
|
||||
Pagination paging) throws ParseException {
|
||||
long start = DurationUtils.INSTANCE.durationToSecondTimeBucket(duration.getStep(), duration.getStart()) / 100;
|
||||
long end = DurationUtils.INSTANCE.durationToSecondTimeBucket(duration.getStep(), duration.getEnd()) / 100;
|
||||
long startTimeBucket = DurationUtils.INSTANCE.durationToSecondTimeBucket(duration.getStep(), duration.getStart()) / 100;
|
||||
long endTimeBucket = DurationUtils.INSTANCE.durationToSecondTimeBucket(duration.getStep(), duration.getEnd()) / 100;
|
||||
|
||||
PaginationUtils.Page page = PaginationUtils.INSTANCE.exchange(paging);
|
||||
|
||||
switch (alarmType) {
|
||||
case APPLICATION:
|
||||
return getAlarmService().loadApplicationAlarmList(keyword, start, end, page.getLimit(), page.getFrom());
|
||||
return getAlarmService().loadApplicationAlarmList(keyword, startTimeBucket, endTimeBucket, page.getLimit(), page.getFrom());
|
||||
case SERVER:
|
||||
return getAlarmService().loadInstanceAlarmList(keyword, start, end, page.getLimit(), page.getFrom());
|
||||
return getAlarmService().loadInstanceAlarmList(keyword, startTimeBucket, endTimeBucket, page.getLimit(), page.getFrom());
|
||||
case SERVICE:
|
||||
return getAlarmService().loadServiceAlarmList(keyword, start, end, page.getLimit(), page.getFrom());
|
||||
return getAlarmService().loadServiceAlarmList(keyword, startTimeBucket, endTimeBucket, page.getLimit(), page.getFrom());
|
||||
default:
|
||||
return new Alarm();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -122,10 +122,10 @@ public class OverViewLayerQuery implements Query {
|
|||
}
|
||||
|
||||
public ConjecturalAppBrief getConjecturalApps(Duration duration) throws ParseException {
|
||||
long start = DurationUtils.INSTANCE.durationToSecondTimeBucket(duration.getStep(), duration.getStart());
|
||||
long end = DurationUtils.INSTANCE.durationToSecondTimeBucket(duration.getStep(), duration.getEnd());
|
||||
long startSecondTimeBucket = DurationUtils.INSTANCE.durationToSecondTimeBucket(duration.getStep(), duration.getStart());
|
||||
long endSecondTimeBucket = DurationUtils.INSTANCE.durationToSecondTimeBucket(duration.getStep(), duration.getEnd());
|
||||
|
||||
return getApplicationService().getConjecturalApps(duration.getStep(), start, end);
|
||||
return getApplicationService().getConjecturalApps(duration.getStep(), startSecondTimeBucket, endSecondTimeBucket);
|
||||
}
|
||||
|
||||
public List<ServiceMetric> getTopNSlowService(Duration duration, int topN) throws ParseException {
|
||||
|
|
|
|||
|
|
@ -18,17 +18,25 @@
|
|||
|
||||
package org.apache.skywalking.apm.collector.ui.service;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonObject;
|
||||
import java.text.ParseException;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import org.apache.skywalking.apm.collector.cache.CacheModule;
|
||||
import org.apache.skywalking.apm.collector.cache.service.ApplicationCacheService;
|
||||
import org.apache.skywalking.apm.collector.cache.service.ServiceNameCacheService;
|
||||
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.IApplicationAlarmListUIDAO;
|
||||
import org.apache.skywalking.apm.collector.storage.dao.ui.IApplicationAlarmUIDAO;
|
||||
import org.apache.skywalking.apm.collector.storage.dao.ui.IInstanceAlarmUIDAO;
|
||||
import org.apache.skywalking.apm.collector.storage.dao.ui.IInstanceUIDAO;
|
||||
import org.apache.skywalking.apm.collector.storage.dao.ui.IServiceAlarmUIDAO;
|
||||
import org.apache.skywalking.apm.collector.storage.table.register.Instance;
|
||||
import org.apache.skywalking.apm.collector.storage.table.register.ServiceName;
|
||||
import org.apache.skywalking.apm.collector.storage.ui.alarm.Alarm;
|
||||
import org.apache.skywalking.apm.collector.storage.ui.application.Application;
|
||||
import org.apache.skywalking.apm.collector.storage.ui.common.Step;
|
||||
|
|
@ -45,11 +53,16 @@ public class AlarmService {
|
|||
|
||||
private final Logger logger = LoggerFactory.getLogger(AlarmService.class);
|
||||
|
||||
private final Gson gson = new Gson();
|
||||
private final IInstanceUIDAO instanceDAO;
|
||||
private final IApplicationAlarmUIDAO applicationAlarmUIDAO;
|
||||
private final IInstanceAlarmUIDAO instanceAlarmUIDAO;
|
||||
private final IServiceAlarmUIDAO serviceAlarmUIDAO;
|
||||
private final IApplicationAlarmListUIDAO applicationAlarmListUIDAO;
|
||||
private final ApplicationCacheService applicationCacheService;
|
||||
private final ServiceNameCacheService serviceNameCacheService;
|
||||
private static final String RESPONSE_TIME_ALARM = " response time alarm.";
|
||||
private static final String SUCCESS_RATE_ALARM = " success rate alarm.";
|
||||
|
||||
public AlarmService(ModuleManager moduleManager) {
|
||||
this.instanceDAO = moduleManager.find(StorageModule.NAME).getService(IInstanceUIDAO.class);
|
||||
|
|
@ -57,24 +70,66 @@ public class AlarmService {
|
|||
this.instanceAlarmUIDAO = moduleManager.find(StorageModule.NAME).getService(IInstanceAlarmUIDAO.class);
|
||||
this.serviceAlarmUIDAO = moduleManager.find(StorageModule.NAME).getService(IServiceAlarmUIDAO.class);
|
||||
this.applicationAlarmListUIDAO = moduleManager.find(StorageModule.NAME).getService(IApplicationAlarmListUIDAO.class);
|
||||
this.applicationCacheService = moduleManager.find(CacheModule.NAME).getService(ApplicationCacheService.class);
|
||||
this.serviceNameCacheService = moduleManager.find(CacheModule.NAME).getService(ServiceNameCacheService.class);
|
||||
}
|
||||
|
||||
public Alarm loadApplicationAlarmList(String keyword, long start, long end,
|
||||
public Alarm loadApplicationAlarmList(String keyword, long startTimeBucket, long endTimeBucket,
|
||||
int limit, int from) throws ParseException {
|
||||
logger.debug("keyword: {}, start: {}, end: {}, limit: {}, from: {}", keyword, start, end, limit, from);
|
||||
return applicationAlarmUIDAO.loadAlarmList(keyword, start, end, limit, from);
|
||||
logger.debug("keyword: {}, startTimeBucket: {}, endTimeBucket: {}, limit: {}, from: {}", keyword, startTimeBucket, endTimeBucket, limit, from);
|
||||
Alarm alarm = applicationAlarmUIDAO.loadAlarmList(keyword, startTimeBucket, endTimeBucket, limit, from);
|
||||
alarm.getItems().forEach(item -> {
|
||||
String applicationCode = applicationCacheService.getApplicationById(item.getId()).getApplicationCode();
|
||||
switch (item.getCauseType()) {
|
||||
case SLOW_RESPONSE:
|
||||
item.setTitle("Application " + applicationCode + RESPONSE_TIME_ALARM);
|
||||
break;
|
||||
case LOW_SUCCESS_RATE:
|
||||
item.setTitle("Application " + applicationCode + SUCCESS_RATE_ALARM);
|
||||
break;
|
||||
}
|
||||
});
|
||||
return alarm;
|
||||
}
|
||||
|
||||
public Alarm loadInstanceAlarmList(String keyword, long start, long end,
|
||||
public Alarm loadInstanceAlarmList(String keyword, long startTimeBucket, long endTimeBucket,
|
||||
int limit, int from) throws ParseException {
|
||||
logger.debug("keyword: {}, start: {}, end: {}, limit: {}, from: {}", keyword, start, end, limit, from);
|
||||
return instanceAlarmUIDAO.loadAlarmList(keyword, start, end, limit, from);
|
||||
logger.debug("keyword: {}, startTimeBucket: {}, endTimeBucket: {}, limit: {}, from: {}", keyword, startTimeBucket, endTimeBucket, limit, from);
|
||||
Alarm alarm = instanceAlarmUIDAO.loadAlarmList(keyword, startTimeBucket, endTimeBucket, limit, from);
|
||||
alarm.getItems().forEach(item -> {
|
||||
Instance instance = instanceDAO.getInstance(item.getId());
|
||||
String applicationCode = applicationCacheService.getApplicationById(instance.getApplicationId()).getApplicationCode();
|
||||
String serverName = buildServerName(instance.getOsInfo());
|
||||
switch (item.getCauseType()) {
|
||||
case SLOW_RESPONSE:
|
||||
item.setTitle("Server " + serverName + " of Application " + applicationCode + RESPONSE_TIME_ALARM);
|
||||
break;
|
||||
case LOW_SUCCESS_RATE:
|
||||
item.setTitle("Server " + serverName + " of Application " + applicationCode + SUCCESS_RATE_ALARM);
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
return alarm;
|
||||
}
|
||||
|
||||
public Alarm loadServiceAlarmList(String keyword, long start, long end,
|
||||
public Alarm loadServiceAlarmList(String keyword, long startTimeBucket, long endTimeBucket,
|
||||
int limit, int from) throws ParseException {
|
||||
logger.debug("keyword: {}, start: {}, end: {}, limit: {}, from: {}", keyword, start, end, limit, from);
|
||||
return serviceAlarmUIDAO.loadAlarmList(keyword, start, end, limit, from);
|
||||
logger.debug("keyword: {}, startTimeBucket: {}, endTimeBucket: {}, limit: {}, from: {}", keyword, startTimeBucket, endTimeBucket, limit, from);
|
||||
Alarm alarm = serviceAlarmUIDAO.loadAlarmList(keyword, startTimeBucket, endTimeBucket, limit, from);
|
||||
alarm.getItems().forEach(item -> {
|
||||
ServiceName serviceName = serviceNameCacheService.get(item.getId());
|
||||
String applicationCode = applicationCacheService.getApplicationById(serviceName.getApplicationId()).getApplicationCode();
|
||||
switch (item.getCauseType()) {
|
||||
case SLOW_RESPONSE:
|
||||
item.setTitle("Service " + serviceName.getServiceName() + " of Application " + applicationCode + RESPONSE_TIME_ALARM);
|
||||
break;
|
||||
case LOW_SUCCESS_RATE:
|
||||
item.setTitle("Service " + serviceName.getServiceName() + " of Application " + applicationCode + SUCCESS_RATE_ALARM);
|
||||
break;
|
||||
}
|
||||
});
|
||||
return alarm;
|
||||
}
|
||||
|
||||
public AlarmTrend getApplicationAlarmTrend(Step step, long startTimeBucket, long endTimeBucket,
|
||||
|
|
@ -95,4 +150,13 @@ public class AlarmService {
|
|||
});
|
||||
return alarmTrend;
|
||||
}
|
||||
|
||||
private String buildServerName(String osInfoJson) {
|
||||
JsonObject osInfo = gson.fromJson(osInfoJson, JsonObject.class);
|
||||
String serverName = Const.UNKNOWN;
|
||||
if (osInfo.has("hostName")) {
|
||||
serverName = osInfo.get("hostName").getAsString();
|
||||
}
|
||||
return serverName;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -112,7 +112,7 @@ public class ApplicationService {
|
|||
return applicationThroughput;
|
||||
}
|
||||
|
||||
public ConjecturalAppBrief getConjecturalApps(Step step, long start, long end) throws ParseException {
|
||||
public ConjecturalAppBrief getConjecturalApps(Step step, long startSecondTimeBucket, long endSecondTimeBucket) throws ParseException {
|
||||
List<ConjecturalApp> conjecturalApps = networkAddressUIDAO.getConjecturalApps();
|
||||
conjecturalApps.forEach(conjecturalApp -> {
|
||||
String name = ServerTypeDefine.getInstance().getServerType(conjecturalApp.getId());
|
||||
|
|
|
|||
|
|
@ -146,7 +146,8 @@ public class ServerService {
|
|||
return gcTrend;
|
||||
}
|
||||
|
||||
public MemoryTrend getMemoryTrend(int instanceId, Step step, long startTimeBucket, long endTimeBucket) throws ParseException {
|
||||
public MemoryTrend getMemoryTrend(int instanceId, Step step, long startTimeBucket,
|
||||
long endTimeBucket) throws ParseException {
|
||||
MemoryTrend memoryTrend = new MemoryTrend();
|
||||
List<DurationPoint> durationPoints = DurationUtils.INSTANCE.getDurationPoints(step, startTimeBucket, endTimeBucket);
|
||||
IMemoryMetricUIDAO.Trend heapMemoryTrend = memoryMetricUIDAO.getHeapMemoryTrend(instanceId, step, durationPoints);
|
||||
|
|
|
|||
Loading…
Reference in New Issue