针对外部需求,数据预警在SmartbiX.SDK 项目下开放了部分接口供使用
一、基本使用示例
package smartbix.test.alarm; import static org.junit.Assert.assertTrue; import java.util.List; import java.util.Set; import java.util.stream.Collectors; import smartbi.sdk.ClientConnector; import smartbix.sdk.alarm.bean.IAlarmDTO; import smartbix.sdk.alarm.bean.IAlarmLogDTO; import smartbix.sdk.alarm.bean.IAlarmLogError; public class AlarmSDKDemo { public static void main(String[] args) { // 创建连接 String url = "http://localhost:8080/smartbi"; ClientConnector client = new ClientConnector(url); client.open("admin", "admin"); // 创建预警服务 AlarmService alarmService = new AlarmService(client); // 获取所有预警 List<IAlarmDTO> alarms = alarmService.getAllAlarms(); IAlarmDTO alarm = alarms.stream() .filter(a -> "ed1d4df5872d14d8869f952e5493e913".equals(a.getAlarmId())).findFirst().get(); System.out.println(alarm.getAlarmId()); // 分页获取预警 alarms = alarmService.getAlarms(100, 1000); System.out.println((alarms.size() >= 18)); alarm = alarms.stream() .filter(a -> "ed1d4df5872d14d8869f952e5493e913".equals(a.getAlarmId())).findFirst().get(); // 通过资源id获取预警 alarms = alarmService.getAlarmsByResourceId("b511005847cd8a6fa6bc22b3dad6181c"); System.out.println((alarms.size() >= 12)); Set<String> srcResourceIds = alarms.stream().map(IAlarmDTO::getSrcResourceId).collect(Collectors.toSet()); assertTrue(srcResourceIds.size() == 1); alarm = alarms.stream() .filter(a -> "ed1d4df5872d14d8869f952e5493e913".equals(a.getAlarmId())).findFirst().get(); // 通过预警id获取日志 List<IAlarmLogDTO> logs = alarmService.getAlarmLogs("I8a74290101940bea0bea0bd901940c1b79c70016"); System.out.println(logs.size() >= 141); Set<String> alarmIds = logs.stream().map(IAlarmLogDTO::getAlarmId).collect(Collectors.toSet()); System.out.println(alarmIds.size() == 1); IAlarmLogDTO log = logs.stream() .filter(l -> "I8a74eb5001942c802c807e9e0194306c3c4e2ae0".equals(l.getLogId())).findFirst().get(); System.out.println(log.getLogId()); // 通过预警id获取日志-分页 logs = alarmService.getAlarmLogs("I8a74290101940bea0bea0bd901940c1b79c70016", 130, 1000); System.out.println(logs.size() >= 11); alarmIds = logs.stream().map(IAlarmLogDTO::getAlarmId).collect(Collectors.toSet()); System.out.println(alarmIds.size() == 1); log = logs.stream() .filter(l -> "I8a74eb5001942c802c807e9e0194306c3c4e2ae0".equals(l.getLogId())).findFirst().get(); // 通过预警id获取渠道明细 String detail = alarmService.getLogTriggerDetail("I8a74290c01962803280329b301962d4f8a741893"); System.out.println(detail); // 通过预警id获取错误信息 IAlarmLogError error = alarmService.getLogError("I8a74290c01962803280329b301962d4f8a741893"); // 渠道错误信息 System.out.println(error.getChannelErrorMessages()); // 渠道执行过程中产生的堆栈异常 System.out.println(error.getChannelStacktraces()); // 获取本次预警的错误信息(一般是预警执行抛出了异常) System.out.println(error.getErrorMessage()); // 获取本次预警的错误信息(一般是预警执行抛出了异常) System.out.println(error.getStacktrace()); // 执行数据预警 alarmService.execute('ed1d4df5872d14d8869f952e5493e913'); } }