迁移cloudTower监控告警
parent
7383eaaec2
commit
e51c9dbcac
|
@ -74,6 +74,12 @@
|
||||||
<artifactId>snakeyaml</artifactId>
|
<artifactId>snakeyaml</artifactId>
|
||||||
<version>1.25</version>
|
<version>1.25</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.bocloud</groupId>
|
||||||
|
<artifactId>bocloud.rpc</artifactId>
|
||||||
|
<version>5.6.0-HBCL-RELEASE</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
|
@ -20,6 +20,7 @@ import com.bocloud.common.utils.MapTools;
|
||||||
import com.bocloud.ims.entity.CloudServer;
|
import com.bocloud.ims.entity.CloudServer;
|
||||||
import com.bocloud.ims.entity.Server;
|
import com.bocloud.ims.entity.Server;
|
||||||
import com.bocloud.ims.enums.CloudProvider;
|
import com.bocloud.ims.enums.CloudProvider;
|
||||||
|
import com.bocloud.rpc.interfaces.ims.ImsRpcService;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
@ -95,6 +96,8 @@ public class AnalysisServiceImpl implements AnalysisService {
|
||||||
private AnalysisRuleRepository analysisRuleRepository;
|
private AnalysisRuleRepository analysisRuleRepository;
|
||||||
@Autowired
|
@Autowired
|
||||||
private AmqpTemplate amqpTemplate;
|
private AmqpTemplate amqpTemplate;
|
||||||
|
@Autowired
|
||||||
|
private ImsRpcService imsRpcService;
|
||||||
|
|
||||||
private static Map<String, String> vmVcenterMetricMap = new HashMap<>(8);
|
private static Map<String, String> vmVcenterMetricMap = new HashMap<>(8);
|
||||||
private static Map<String, String> hostVcenterMetricMap = new HashMap<>(4);
|
private static Map<String, String> 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(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");
|
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(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
|
@Override
|
||||||
|
@ -163,12 +166,12 @@ public class AnalysisServiceImpl implements AnalysisService {
|
||||||
return snapshot;
|
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();
|
AnalysisSnapshot snapshot = new AnalysisSnapshot();
|
||||||
List<String> tags = this.queryHostTagsFromPrometheus(start, end, flag, vendorType, params);
|
List<String> tags = this.queryHostTagsFromPrometheus(start, end, flag, vendorType, params);
|
||||||
Map<String, JSONObject> paramMap = convertParamMap(params);
|
Map<String, JSONObject> paramMap = convertParamMap(params);
|
||||||
//列表数据
|
//列表数据
|
||||||
List<JSONObject> list = hostAnalysisList(paramMap, start, end, tags, vendorType);
|
List<JSONObject> list = hostAnalysisList(paramMap, start, end, tags, vendorType, vendorId);
|
||||||
JSONObject result = new JSONObject();
|
JSONObject result = new JSONObject();
|
||||||
result.put("list", list);
|
result.put("list", list);
|
||||||
List<JSONObject> charts = tops(paramMap, type, start, end, new HashSet<>(), tags, vendorType);
|
List<JSONObject> charts = tops(paramMap, type, start, end, new HashSet<>(), tags, vendorType);
|
||||||
|
@ -641,7 +644,7 @@ public class AnalysisServiceImpl implements AnalysisService {
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<JSONObject> hostAnalysisList(Map<String, JSONObject> paramMap, Date start, Date end, List<String> tags, String vendorType) {
|
private List<JSONObject> hostAnalysisList(Map<String, JSONObject> paramMap, Date start, Date end, List<String> tags, String vendorType, Long vendorId) {
|
||||||
if (ListTool.isEmpty(tags)) {
|
if (ListTool.isEmpty(tags)) {
|
||||||
return new ArrayList<>();
|
return new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
@ -649,9 +652,18 @@ public class AnalysisServiceImpl implements AnalysisService {
|
||||||
List<Param> hostParams = Lists.newArrayList();
|
List<Param> hostParams = Lists.newArrayList();
|
||||||
String key = vendorType.equals(OPENSTACK.name()) ? "id" : vendorType.equals(VMWARE.name()) ? "name" : "hostname";
|
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));
|
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));
|
BocloudResult serverResult = new BocloudResult();
|
||||||
|
List<Server> serverList = new ArrayList<>();
|
||||||
List<Server> serverList = ((JSONObject) serverResult.getData()).getJSONArray(Common.ROWS).toJavaList(Server.class);
|
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<JSONObject> list = new ArrayList<>(serverList.size());
|
List<JSONObject> list = new ArrayList<>(serverList.size());
|
||||||
for (Server server : serverList) {
|
for (Server server : serverList) {
|
||||||
JSONObject jsonObject = new JSONObject();
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
|
|
@ -246,6 +246,7 @@ public class HostServiceImpl implements HostService, InitializingBean {
|
||||||
// 查询主机cpu平均使用情况
|
// 查询主机cpu平均使用情况
|
||||||
Double cpuUsage = prometheusService
|
Double cpuUsage = prometheusService
|
||||||
.simpleQuery("vsphere_host_cpu_usage_average{cpu='instance-total',source='" + name + "'}");
|
.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("cpuUsed", cpuUsed != null ? cpuUsed : "");
|
||||||
result.put("cpuUsage", cpuUsage != null ? cpuUsage : "");
|
result.put("cpuUsage", cpuUsage != null ? cpuUsage : "");
|
||||||
if (null != serverConfig) {
|
if (null != serverConfig) {
|
||||||
|
@ -258,10 +259,10 @@ public class HostServiceImpl implements HostService, InitializingBean {
|
||||||
} else if ("mem".equals(type)) {
|
} else if ("mem".equals(type)) {
|
||||||
Double memUsed = prometheusService
|
Double memUsed = prometheusService
|
||||||
.simpleQuery("round(vsphere_host_mem_consumed_average{source='" + name + "'}/ 1024 / 1024,0.01)");
|
.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() : "");
|
result.put("memTotalCapacity", serverConfig != null ? serverConfig.getMemoryCapacity() : "");
|
||||||
if (null != serverConfig && null != memUsed) {
|
if (null != serverConfig && result.containsKey("memUsed")) {
|
||||||
result.put("memFree", Double.parseDouble(format.format(serverConfig.getMemoryCapacity() - memUsed)));
|
result.put("memFree", Double.parseDouble(format.format(serverConfig.getMemoryCapacity() - Double.valueOf(result.get("memUsed").toString()))));
|
||||||
}
|
}
|
||||||
} else if ("disk".equals(type)) {
|
} else if ("disk".equals(type)) {
|
||||||
if (serverConfig != null) {
|
if (serverConfig != null) {
|
||||||
|
|
|
@ -84,7 +84,7 @@ public class AnalysisHandleRunable implements Runnable {
|
||||||
snapshot = monitorAnalysisService.vmAnalysis(JSONObject.parseArray(analysaisRule.getRules()), type, start, end, flag, vendor.getType(), token);
|
snapshot = monitorAnalysisService.vmAnalysis(JSONObject.parseArray(analysaisRule.getRules()), type, start, end, flag, vendor.getType(), token);
|
||||||
break;
|
break;
|
||||||
case "serverCapacityExpansion":
|
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;
|
break;
|
||||||
default:
|
default:
|
||||||
logger.error("未知的类型");
|
logger.error("未知的类型");
|
||||||
|
|
Loading…
Reference in New Issue