diff --git a/src/main/java/com/loafle/overflow/module/sensor/service/SensorService.java b/src/main/java/com/loafle/overflow/module/sensor/service/SensorService.java index 78badab..bb41817 100644 --- a/src/main/java/com/loafle/overflow/module/sensor/service/SensorService.java +++ b/src/main/java/com/loafle/overflow/module/sensor/service/SensorService.java @@ -7,6 +7,7 @@ import com.loafle.overflow.crawler.config.*; import com.loafle.overflow.module.domain.model.Domain; import com.loafle.overflow.module.infra.model.*; import com.loafle.overflow.module.infra.service.InfraService; +import com.loafle.overflow.module.meta.model.MetaCrawler; import com.loafle.overflow.module.meta.model.MetaSensorStatus; import com.loafle.overflow.module.meta.service.MetaSensorItemKeyService; import com.loafle.overflow.module.probe.model.Probe; @@ -48,7 +49,7 @@ public class SensorService { @Autowired private MetaSensorItemKeyService metaSensorItemKeyService; - private Map mappingMap = null; + private Map> mappingMap = null; public Sensor regist(Sensor sensor) { return this.sensorDAO.save(sensor); @@ -112,6 +113,8 @@ public class SensorService { public String generateSensorConfig(Sensor sensor) throws IOException { + + // Sensor dbSensor = this.sensorDAO.findOne(sensor.getId()); PageParams pageParams = new PageParams(); pageParams.setPageNo(0); @@ -129,6 +132,11 @@ public class SensorService { Infra infra = this.infraService.readByTarget(dbSensor.getTarget()); + // 7 = Infra OS Service + if(infra.getInfraType().getId() != 7) { + return null; + } + // InfraHost infraHost = this.getInfraHost(infra); com.loafle.overflow.module.infra.model.InfraService infraService = (com.loafle.overflow.module.infra.model.InfraService)infra; @@ -145,56 +153,39 @@ public class SensorService { target.setConnection(connection); - Map auth = new HashMap<>(); - auth.put("url", "jdbc:mysql://"+StringConvertor.intToIp(infraService.getHost().getIp())+":"+String.valueOf(infraService.getPort())); - auth.put("id", "docker"); // FIXME: Auth Info - auth.put("pw", "qwer5795QWER"); // FIXME: Auth Info + Map auth = this.getAuth(infraService); target.setAuth(auth); config.setTarget(target); + // FIXME: Interval Schedule schedule = new Schedule(); - schedule.setInterval("5"); // FIXME: Interval - + schedule.setInterval("5"); config.setSchedule(schedule); - Crawler crawler = new Crawler(); - crawler.setName(dbSensor.getCrawler().getName()); - crawler.setContainer("java_proxy"); // FIXME: if - + Crawler crawler = this.getCrawler(dbSensor.getCrawler()); config.setCrawler(crawler); - if(this.mappingMap == null) { - this.mappingMap = this.metaSensorItemKeyService.readAllByCrawler(dbSensor.getCrawler()); - } + Map KeyMap = this.initMappingMap(dbSensor.getCrawler()); Item item = new Item(); Keys keys = null; List keysList = new ArrayList<>(); for(SensorItem sItem : sensorItems) { keys = new Keys(); -// sItem.getItem().get keys.setMetric(sItem.getItem().getKey()); - keys.setKey(this.mappingMap.get(sItem.getItem().getId())); + keys.setKey(KeyMap.get(sItem.getItem().getId())); keysList.add(keys); } item.setKeys(keysList); QueryInfo queryInfo = new QueryInfo(); - queryInfo.setQuery("show status"); + MappingInfo mappingInfo = new MappingInfo(); + + this.setQueryAndMapping(dbSensor.getCrawler(), keysList, queryInfo, mappingInfo); item.setQueryInfo(queryInfo); - - MappingInfo mappingInfo = new MappingInfo(); - mappingInfo.setParseDirection("row"); - mappingInfo.setValueColumn("Value"); - - List keyColumns = new ArrayList<>(); - keyColumns.add("Variable_name"); - - mappingInfo.setKeyColumns(keyColumns); - item.setMappingInfo(mappingInfo); List itemList = new ArrayList<>(); @@ -208,6 +199,96 @@ public class SensorService { return objectMapper.writeValueAsString(config); } + private void setQueryAndMapping(MetaCrawler metaCrawler, List keysList, QueryInfo queryInfo, MappingInfo mappingInfo) { + + switch (metaCrawler.getId()) { + case 11: + { + String query = "show status where "; +// queryInfo.setQuery("show status where "); + + Keys keys = null; + for(int indexI = 0 ; indexI < keysList.size(); ++indexI) { + keys = keysList.get(indexI); + query += "variable_name = '"; + query += keys.getKey(); + query += "'"; + if(indexI + 1 < keysList.size()) { + query += " or "; + } + } + + queryInfo.setQuery(query); + + mappingInfo.setParseDirection("row"); + mappingInfo.setValueColumn("Value"); + + List keyColumns = new ArrayList<>(); + keyColumns.add("Variable_name"); + + mappingInfo.setKeyColumns(keyColumns); + } + break; + } + + } + + private Map initMappingMap(MetaCrawler metaCrawler) { + + if(this.mappingMap == null) { + this.mappingMap = new HashMap<>(); + } + + Map resultMap = this.mappingMap.get(metaCrawler.getId()); + + if(resultMap != null) { + return resultMap; + } + + resultMap = this.metaSensorItemKeyService.readAllByCrawler(metaCrawler); + this.mappingMap.put(metaCrawler.getId(), resultMap); + + return resultMap; + } + + private Map getAuth(com.loafle.overflow.module.infra.model.InfraService infraService) { + + Map auth = new HashMap<>(); + auth.put("url", "jdbc:mysql://"+StringConvertor.intToIp(infraService.getHost().getIp())+":"+String.valueOf(infraService.getPort())); + auth.put("id", "docker"); // FIXME: Auth Info + auth.put("pw", "qwer5795QWER"); // FIXME: Auth Info + + return auth; + } + + private Crawler getCrawler(MetaCrawler metaCrawler) { + + Crawler crawler = new Crawler(); + crawler.setName(metaCrawler.getName()); + + String container = ""; + + switch (metaCrawler.getId()) { + case 1: + break; + case 2: + case 9: + case 10: + case 11: + case 13: + case 15: + container = "java_proxy"; + break; + default: + container = "java_proxy"; + break; + } + + + crawler.setContainer(container); + + return crawler; + } private InfraHost getInfraHost(Infra infra) {