package com.sobey.cmop.mvc.service.iaas; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.sobey.cmop.mvc.comm.BaseSevcie; import com.sobey.cmop.mvc.constant.ApplyConstant; import com.sobey.cmop.mvc.entity.Apply; import com.sobey.cmop.mvc.entity.MonitorMail; import com.sobey.cmop.mvc.entity.MonitorPhone; import com.sobey.cmop.mvc.entity.User; /** * 监控相关的管理类.<br> * 主要用于ELB监控和Compute监控的新增. * * * @author liukai */ @Service @Transactional(readOnly = true) public class MonitorServcie extends BaseSevcie { private static Logger logger = LoggerFactory.getLogger(MonitorServcie.class); /** * * 保存1个或多个监控的服务申请.(在服务申请时调用)<br> * 包括ELB和Compute的监控 * * <pre> * 1.新增一个Apply * 2.新增邮件和电话监控列表 * 3.新增ELB监控或Compute监控 * </pre> * * @param apply * @param monitorMails * 监控邮件lb * @param monitorPhones * 监控手机列表 * @param elbIds * 监控的elbId数组 * @param computeIds * 监控的实例ComputeId数组 * @param cpuWarns * CPU占用报警数组 * @param cpuCriticals * CPU占用警告数组 * @param memoryWarns * 内存占用报警数组 * @param memoryCriticals * 内存占用警告数组 * @param pingLossWarns * 网络丢包报警数组 * @param pingLossCriticals * 网络丢包警告数组 * @param diskWarns * 硬盘可用报警数组 * @param diskCriticals * 硬盘可用警告数组 * @param pingDelayWarns * 网络延时率报警数组 * @param pingDelayCriticals * 网络延时率警告数组 * @param maxProcessWarns * 最大进程数报警数组 * @param maxProcessCriticals * 最大进程数警告数组 * @param ports * 监控端口数组 * @param processes * 监控进程数组 * @param mountPoints * 挂载路径数组 */ @Transactional(readOnly = false) public void saveMonitorToApply(Apply apply, String[] monitorMails, String[] monitorPhones, String[] elbIds, String[] computeIds, String[] cpuWarns, String[] cpuCriticals, String[] memoryWarns, String[] memoryCriticals, String[] pingLossWarns, String[] pingLossCriticals, String[] diskWarns, String[] diskCriticals, String[] pingDelayWarns, String[] pingDelayCriticals, String[] maxProcessWarns, String[] maxProcessCriticals, String[] ports, String[] processes, String[] mountPoints) { // Step1. 创建一个服务申请Apply comm.applyService.saveApplyByServiceType(apply, ApplyConstant.ServiceType.监控.toInteger()); // Step2. 创建邮件和电话监控列表 User user = comm.accountService.getCurrentUser(); for (int i = 0; i < monitorMails.length; i++) { MonitorMail monitorMail = new MonitorMail(); monitorMail.setApply(apply); monitorMail.setUser(user); monitorMail.setEmail(monitorMails[i]); comm.monitorMailService.saveOrUpdate(monitorMail); } for (int i = 0; i < monitorPhones.length; i++) { MonitorPhone monitorPhone = new MonitorPhone(); monitorPhone.setApply(apply); monitorPhone.setUser(user); monitorPhone.setTelephone(monitorPhones[i]); comm.monitorPhoneService.saveOrUpdate(monitorPhone); } // Step3. // 创建ELB监控 comm.monitorElbServcie.saveMonitorElbToApply(apply, elbIds); // 创建实例Compute监控 comm.monitorComputeServcie.saveMonitorComputeToApply(apply, computeIds, cpuWarns, cpuCriticals, memoryWarns, memoryCriticals, pingLossWarns, pingLossCriticals, diskWarns, diskCriticals, pingDelayWarns, pingDelayCriticals, maxProcessWarns, maxProcessCriticals, ports, processes, mountPoints); } }