diff --git a/bocloud.cms.service/pom.xml b/bocloud.cms.service/pom.xml index 68b992c..c6aca01 100644 --- a/bocloud.cms.service/pom.xml +++ b/bocloud.cms.service/pom.xml @@ -74,6 +74,12 @@ snakeyaml 1.25 + + com.bocloud + bocloud.rpc + 5.6.0-HBCL-RELEASE + compile + \ No newline at end of file diff --git a/bocloud.cms.service/src/main/java/com/bocloud/cms/service/AnalysisServiceImpl.java b/bocloud.cms.service/src/main/java/com/bocloud/cms/service/AnalysisServiceImpl.java index c7dc5e6..7ae3894 100644 --- a/bocloud.cms.service/src/main/java/com/bocloud/cms/service/AnalysisServiceImpl.java +++ b/bocloud.cms.service/src/main/java/com/bocloud/cms/service/AnalysisServiceImpl.java @@ -20,6 +20,7 @@ import com.bocloud.common.utils.MapTools; import com.bocloud.ims.entity.CloudServer; import com.bocloud.ims.entity.Server; import com.bocloud.ims.enums.CloudProvider; +import com.bocloud.rpc.interfaces.ims.ImsRpcService; import com.google.common.collect.Lists; import com.google.common.util.concurrent.ThreadFactoryBuilder; import org.apache.commons.lang3.StringUtils; @@ -95,6 +96,8 @@ public class AnalysisServiceImpl implements AnalysisService { private AnalysisRuleRepository analysisRuleRepository; @Autowired private AmqpTemplate amqpTemplate; + @Autowired + private ImsRpcService imsRpcService; private static Map vmVcenterMetricMap = new HashMap<>(8); private static Map hostVcenterMetricMap = new HashMap<>(4); @@ -132,7 +135,7 @@ public class AnalysisServiceImpl implements AnalysisService { vmCloudTowerMetricMap.put(CPU_USAGE_AVERAGE, "bocloud_cloudtower_vm_elf_vm_cpu_overall_usage_percent"); vmCloudTowerMetricMap.put(MEM_USAGE_AVERAGE, "bocloud_cloudtower_vm_elf_vm_memory_usage_percent"); hostCLoudTowerMetricMap.put(CPU_USAGE_AVERAGE, "bocloud_cloudtower_host_host_cpu_overall_usage_percent"); - hostCLoudTowerMetricMap.put(MEM_USAGE_AVERAGE, "bocloud_cloudtower_vm_elf_vm_cpu_overall_usage_percent"); + hostCLoudTowerMetricMap.put(MEM_USAGE_AVERAGE, "bocloud_cloudtower_host_host_memory_usage_percent"); } @Override @@ -163,12 +166,12 @@ public class AnalysisServiceImpl implements AnalysisService { return snapshot; } - public AnalysisSnapshot hostAnalysis(JSONArray params, String type, Date start, Date end, String flag, String vendorType) { + public AnalysisSnapshot hostAnalysis(JSONArray params, String type, Date start, Date end, String flag, String vendorType, Long vendorId) { AnalysisSnapshot snapshot = new AnalysisSnapshot(); List tags = this.queryHostTagsFromPrometheus(start, end, flag, vendorType, params); Map paramMap = convertParamMap(params); //列表数据 - List list = hostAnalysisList(paramMap, start, end, tags, vendorType); + List list = hostAnalysisList(paramMap, start, end, tags, vendorType, vendorId); JSONObject result = new JSONObject(); result.put("list", list); List charts = tops(paramMap, type, start, end, new HashSet<>(), tags, vendorType); @@ -641,7 +644,7 @@ public class AnalysisServiceImpl implements AnalysisService { return list; } - private List hostAnalysisList(Map paramMap, Date start, Date end, List tags, String vendorType) { + private List hostAnalysisList(Map paramMap, Date start, Date end, List tags, String vendorType, Long vendorId) { if (ListTool.isEmpty(tags)) { return new ArrayList<>(); } @@ -649,9 +652,18 @@ public class AnalysisServiceImpl implements AnalysisService { List hostParams = Lists.newArrayList(); String key = vendorType.equals(OPENSTACK.name()) ? "id" : vendorType.equals(VMWARE.name()) ? "name" : "hostname"; hostParams.add(new Param(MapTools.simpleMap(key, JSONObject.toJSONString(tags).substring(1, JSONObject.toJSONString(tags).length() - 1)), Sign.IN)); - BocloudResult serverResult = this.imsServerService.list(new Pager(1, Integer.MAX_VALUE, hostParams, null)); - - List serverList = ((JSONObject) serverResult.getData()).getJSONArray(Common.ROWS).toJavaList(Server.class); + BocloudResult serverResult = new BocloudResult(); + List serverList = new ArrayList<>(); + if (CLOUDTOWER.name().equals(vendorType)) { + JSONArray serverArray = JSONArray.parseArray(JSONObject.toJSONString(imsRpcService.getServerByName(tags, vendorId))); + for (Object o : serverArray) { + Server server = JSONObject.parseObject(o.toString(), Server.class); + serverList.add(server); + } + } else { + serverResult = this.imsServerService.list(new Pager(1, Integer.MAX_VALUE, hostParams, null)); + serverList = ((JSONObject) serverResult.getData()).getJSONArray(Common.ROWS).toJavaList(Server.class); + } List list = new ArrayList<>(serverList.size()); for (Server server : serverList) { JSONObject jsonObject = new JSONObject(); diff --git a/bocloud.cms.service/src/main/java/com/bocloud/cms/service/HostServiceImpl.java b/bocloud.cms.service/src/main/java/com/bocloud/cms/service/HostServiceImpl.java index 97603d4..6570604 100644 --- a/bocloud.cms.service/src/main/java/com/bocloud/cms/service/HostServiceImpl.java +++ b/bocloud.cms.service/src/main/java/com/bocloud/cms/service/HostServiceImpl.java @@ -246,6 +246,7 @@ public class HostServiceImpl implements HostService, InitializingBean { // 查询主机cpu平均使用情况 Double cpuUsage = prometheusService .simpleQuery("vsphere_host_cpu_usage_average{cpu='instance-total',source='" + name + "'}"); + cpuUsed = cpuUsed != null ? cpuUsed : serverConfig.getCpuUsed(); result.put("cpuUsed", cpuUsed != null ? cpuUsed : ""); result.put("cpuUsage", cpuUsage != null ? cpuUsage : ""); if (null != serverConfig) { @@ -258,10 +259,10 @@ public class HostServiceImpl implements HostService, InitializingBean { } else if ("mem".equals(type)) { Double memUsed = prometheusService .simpleQuery("round(vsphere_host_mem_consumed_average{source='" + name + "'}/ 1024 / 1024,0.01)"); - result.put("memUsed", memUsed != null ? memUsed : ""); + result.put("memUsed", memUsed != null ? memUsed : serverConfig.getMemUsed()); result.put("memTotalCapacity", serverConfig != null ? serverConfig.getMemoryCapacity() : ""); - if (null != serverConfig && null != memUsed) { - result.put("memFree", Double.parseDouble(format.format(serverConfig.getMemoryCapacity() - memUsed))); + if (null != serverConfig && result.containsKey("memUsed")) { + result.put("memFree", Double.parseDouble(format.format(serverConfig.getMemoryCapacity() - Double.valueOf(result.get("memUsed").toString())))); } } else if ("disk".equals(type)) { if (serverConfig != null) { diff --git a/bocloud.cms.service/src/main/java/com/bocloud/cms/service/core/AnalysisHandleRunable.java b/bocloud.cms.service/src/main/java/com/bocloud/cms/service/core/AnalysisHandleRunable.java index e63136f..2e19de6 100644 --- a/bocloud.cms.service/src/main/java/com/bocloud/cms/service/core/AnalysisHandleRunable.java +++ b/bocloud.cms.service/src/main/java/com/bocloud/cms/service/core/AnalysisHandleRunable.java @@ -84,7 +84,7 @@ public class AnalysisHandleRunable implements Runnable { snapshot = monitorAnalysisService.vmAnalysis(JSONObject.parseArray(analysaisRule.getRules()), type, start, end, flag, vendor.getType(), token); break; case "serverCapacityExpansion": - snapshot = monitorAnalysisService.hostAnalysis(JSONObject.parseArray(analysaisRule.getRules()), type, start, end, flag, vendor.getType()); + snapshot = monitorAnalysisService.hostAnalysis(JSONObject.parseArray(analysaisRule.getRules()), type, start, end, flag, vendor.getType(), vendor.getId()); break; default: logger.error("未知的类型");