@Override public boolean CheckNonTransactionalRule(ServicePolicy pol, List<NameValuePair> params, AtomicReference<String> nullableFaultMsg, boolean pooled) { if (nullableFaultMsg == null) { nullableFaultMsg = new AtomicReference<String>(); } NameValuePair GetNameValuePairByName = Utility.getNameValuePairByName(params, "value"); long rate = Long.parseLong(GetNameValuePairByName.getValue()); GetNameValuePairByName = Utility.getNameValuePairByName(params, "duration"); long duration = Long.parseLong(GetNameValuePairByName.getValue()); long faultrate = NonTransactionalSLAProcessor.GetDiskUsageOverTime(pol.getURL(),duration, pooled); if (faultrate > rate) { nullableFaultMsg.set("The measured Disk I/O rate" + faultrate + " is greater than " + rate + ", " + nullableFaultMsg.get()); return true; } return false; }
public static String getPolicyDisplayName(String uri){ ServicePolicy policy = SLACommon.LoadPolicyPooled(uri); if (policy==null){ //very unexpected return uri; } if (policy.getDisplayName()!=null && policy.getDisplayName().length()>0) return policy.getDisplayName(); return uri; } protected static boolean isPolicyTypeOf(String uri, PolicyType p) {
private FederationPolicy getOrCreateFedPol(ServicePolicy policy) { if (policy == null) { throw new IllegalArgumentException(); } if (policy.getFederationPolicyCollection() == null) { policy.setFederationPolicyCollection(new FederationPolicyCollection()); } for (int i = 0; i < policy.getFederationPolicyCollection().getFederationPolicy().size(); i++) { if (policy.getFederationPolicyCollection().getFederationPolicy().get(i).getImplementingClassName() != null && policy.getFederationPolicyCollection().getFederationPolicy().get(i).getImplementingClassName().equalsIgnoreCase("org.miloss.fgsms.uddipub.UddiPublisher")) { return policy.getFederationPolicyCollection().getFederationPolicy().get(i); } } FederationPolicy fp = new FederationPolicy(); fp.setImplementingClassName("org.miloss.fgsms.uddipub.UddiPublisher"); policy.getFederationPolicyCollection().getFederationPolicy().add(fp); return fp; } }
public static String GenerateLink(String relativeUrl, ServicePolicy pol) { if (pol.getPolicyType() == null || pol.getPolicyType() == PolicyType.TRANSACTIONAL) { return "<a href=\"" + relativeUrl + "/TransactionLogViewer.jsp?url=" + URLEncoder.encode(pol.getURL()) + "\">View recent transactions</a><br>" + "<a href=\"" + relativeUrl + "/availability.jsp?url=" + URLEncoder.encode(pol.getURL()) + "\">View availability data</a>"; } if (pol.getPolicyType() == PolicyType.STATISTICAL) { return "<a href=\"" + relativeUrl + "/messageBrokerDetail.jsp?url=" + URLEncoder.encode(pol.getURL()) + "\">View statistics</a><br>" + "<a href=\"" + relativeUrl + "/availability.jsp?url=" + URLEncoder.encode(pol.getURL()) + "\">View availability data</a>"; } if (pol.getPolicyType() == PolicyType.STATUS) { return "<a href=\"" + relativeUrl + "/availability.jsp?url=" + URLEncoder.encode(pol.getURL()) + "\">View availability data</a>"; } return "<a href=\"" + relativeUrl + "\">fgsms</a>"; }
return; if (pol.getServiceLevelAggrements() == null || pol.getServiceLevelAggrements().getSLA() == null || pol.getServiceLevelAggrements().getSLA().isEmpty()) { return; for (int i = 0; i < pol.getServiceLevelAggrements().getSLA().size(); i++) { boolean flag = false; if (pol.getServiceLevelAggrements().getSLA().get(i) == null) { continue; flag = ProcessRules(req, ref, pol.getServiceLevelAggrements().getSLA().get(i).getRule()); long time = System.currentTimeMillis(); try { log.log(Level.INFO, "SLA violation for the service at " + pol.getURL() + " Transaction ID: " + transactionid + " " + ref.get()); SLACommon.RecordSLAFault(ref, pol.getURL(), transactionid, time, incident, true); SLACommon.ProcessAlerts(ref.get(), ref.get() + "<br>" + GenerateLink(props.getProperty("fgsms.GUI.URL"), pol.getURL(), transactionid), pol.getURL(), transactionid, time, incident, true, false, pol.getServiceLevelAggrements().getSLA().get(i).getAction().getSLAAction(), pol.getServiceLevelAggrements().getSLA().get(i).getGuid(), pol, AlertType.Performance);
pol.setDataTTL(Helper.StringToDuration(request.getParameter("datattl"))); pol.setPolicyRefreshRate(Helper.StringToDuration(request.getParameter("refreshrate"))); pol.setExternalURL(null); } else { pol.setExternalURL(request.getParameter("externalurl")); pol.setDisplayName(null); } else { pol.setDisplayName(request.getParameter("displayName")); pol.setMachineName(null); } else { pol.setMachineName(request.getParameter("servername")); pol.setDomainName(null); } else { pol.setDomainName(request.getParameter("domainname")); pol.setBucketCategory(null); } else { pol.setBucketCategory(request.getParameter("bucket")); pol.setParentObject(null); } else { pol.setParentObject(request.getParameter("parentobject")); pol.setDescription(null);
if (policy.getPolicyType() == null) { throw new IllegalArgumentException("policy"); if (policy.getDataTTL() == null) { comm.setLong(2, 30 * 24 * 60 * 60); } else { comm.setLong(2, Utility.durationToTimeInMS(policy.getDataTTL())); if (policy.getLocation() != null) { comm.setDouble(3, policy.getLocation().getLatitude()); comm.setDouble(4, policy.getLocation().getLongitude()); } else { comm.setNull(3, Types.DOUBLE); comm.setNull(4, Types.DOUBLE); if (Utility.stringIsNullOrEmpty(policy.getDisplayName())) { comm.setNull(5, java.sql.Types.VARCHAR); } else { comm.setString(5, policy.getDisplayName()); comm.setInt(6, policy.getPolicyType().ordinal()); if (policy instanceof TransactionalWebServicePolicy) { TransactionalWebServicePolicy tp = (TransactionalWebServicePolicy) policy; if (Utility.stringIsNullOrEmpty(policy.getMachineName())) { comm.setString(8, UNSPECIFIED); } else { comm.setString(8, policy.getMachineName());
policy.setDataTTL(df.newDuration(retention)); policy.setDomainName(domainname); policy.setMachineName(hostname); policy.setPolicyType(p); policy.setURL(URL); policy.setParentObject(parentcomponent); policy.setAgentsEnabled(true);
GetProcessesListByMachineResponseMsg data = GetMachineInfo(policy.getMachineName(), policy.getDomainName()); if (!ConfirmDriveExists(data, partition)) { outError.set("The partition " + partition + " must exist on the machine being monitored. " + outError.get());
if (ret.getServiceLevelAggrements() == null) { ret.setServiceLevelAggrements(new ArrayOfSLA()); for (int i = 0; i < ret.getServiceLevelAggrements().getSLA().size(); i++) { if (ret.getServiceLevelAggrements().getSLA().get(i).getRule() instanceof SLARuleGeneric) { SLARuleGeneric r = (SLARuleGeneric) ret.getServiceLevelAggrements().getSLA().get(i).getRule(); if (r.getClassName().equalsIgnoreCase("org.miloss.fgsms.sla.rules.ChangeInAvailabilityStatus")) { existingSla = true; s.setAction(new ArrayOfSLAActionBaseType()); SLAAction e = Utility.newEmailAction(null, "Change of status for " + Utility.encodeHTML(ret.getURL()), "Change of status for " + Utility.encodeHTML(ret.getURL()) + ". This is the default status alert. This can be changed by changing the policy for this service."); s.getAction().getSLAAction().add(e); ret.getServiceLevelAggrements().getSLA().add(s); for (int i = 0; i < ret.getServiceLevelAggrements().getSLA().size(); i++) { if (ret.getServiceLevelAggrements().getSLA().get(i).getRule() instanceof SLARuleGeneric) { SLARuleGeneric r = (SLARuleGeneric) ret.getServiceLevelAggrements().getSLA().get(i).getRule(); if (r.getClassName().equalsIgnoreCase("org.miloss.fgsms.sla.rules.StaleData")) { existingSla = true; s.setGuid(UUID.randomUUID().toString()); s.setAction(new ArrayOfSLAActionBaseType()); SLAAction e = Utility.newEmailAction(null, "Stale Data Alert for " + Utility.encodeHTML(ret.getURL()), "Stale Data Alert for " + Utility.encodeHTML(ret.getURL()) + ". This is the default alert that indicates that either a server or agent is offline. This alert can be changed by changing the policy for this service."); ret.getServiceLevelAggrements().getSLA().add(s);
Name n = new Name(); n.setLang(PublicationConstants.lang); if (!Utility.stringIsNullOrEmpty(servicePolicy.getPolicy().getDisplayName())) { n.setValue(servicePolicy.getPolicy().getDisplayName()); } else { n.setValue(servicePolicy.getPolicy().getURL()); d.setValue(servicePolicy.getPolicy().getDescription()); svc.getDescription().add(d); if (!Utility.stringIsNullOrEmpty(servicePolicy.getPolicy().getPOC())) { d = new Description(); d.setLang(PublicationConstants.lang); d.setValue("POC: " + servicePolicy.getPolicy().getPOC()); svc.getDescription().add(d); ap.setValue(servicePolicy.getPolicy().getURL()); req.setClassification(servicePolicy.getClassification()); req.setPolicy(servicePolicy.getPolicy()); req.setURL(servicePolicy.getPolicy().getURL());
if (servicePolicyQueue.get(k).getServiceLevelAggrements() == null) { continue; if (servicePolicyQueue.get(k).getServiceLevelAggrements().getSLA().isEmpty()) { continue; for (int i = 0; i < servicePolicyQueue.get(k).getServiceLevelAggrements().getSLA().size(); i++) { boolean flag = false; StringBuffer faultMsg = new StringBuffer(); if (servicePolicyQueue.get(k).getServiceLevelAggrements().getSLA() == null) { continue; if (servicePolicyQueue.get(k).getServiceLevelAggrements().getSLA().get(i) == null) { continue; if (servicePolicyQueue.get(k).getServiceLevelAggrements().getSLA().get(i).getRule() == null) { continue; faultMsg, servicePolicyQueue.get(k).getServiceLevelAggrements().getSLA().get(i).getRule(), servicePolicyQueue.get(k).getPolicyType(), ispooled, servicePolicyQueue.get(k)); log.log(Level.WARN, "SLA Fault tripped for " + servicePolicyQueue.get(k).getURL() + " message: " + faultMsg); SLACommon.RecordSLAFault(new AtomicReference<String>(faultMsg.toString()), servicePolicyQueue.get(k).getURL(), null, System.currentTimeMillis(), incident, ispooled); SLACommon.ProcessAlerts(faultMsg.toString(), "<h2>" + Utility.encodeHTML(faultMsg.toString()) + "</h2>", servicePolicyQueue.get(k).getURL(), null, System.currentTimeMillis(), incident, ispooled, false, servicePolicyQueue.get(k).getServiceLevelAggrements().getSLA().get(i).getAction().getSLAAction(), servicePolicyQueue.get(k).getServiceLevelAggrements().getSLA().get(i).getGuid(), servicePolicyQueue.get(k), AlertType.Performance);
/** * does this policy have an email sla action? * * @param pc * @return */ public static boolean hasEmailSLA(ServicePolicy pc) { if (pc == null) { return false; } if (pc.getServiceLevelAggrements() == null || pc.getServiceLevelAggrements().getSLA().isEmpty()) { return false; } for (int i = 0; i < pc.getServiceLevelAggrements().getSLA().size(); i++) { if (pc.getServiceLevelAggrements().getSLA().get(i).getAction() != null && !pc.getServiceLevelAggrements().getSLA().get(i).getAction().getSLAAction().isEmpty()) { for (int k = 0; k < pc.getServiceLevelAggrements().getSLA().get(i).getAction().getSLAAction().size(); k++) { if (pc.getServiceLevelAggrements().getSLA().get(i).getAction().getSLAAction().get(k).getImplementingClassName().equals("org.miloss.fgsms.sla.actions.EmailAlerter")) { return true; } } } } return false; }
private FederationPolicy GetUddiFedPol(ServicePolicy p) { if (p == null) { return null; } if (p.getFederationPolicyCollection() == null) { return null; } for (int i = 0; i < p.getFederationPolicyCollection().getFederationPolicy().size(); i++) { if (p.getFederationPolicyCollection().getFederationPolicy().get(i).getImplementingClassName().equalsIgnoreCase("org.miloss.fgsms.uddipub.UddiPublisher")) { return p.getFederationPolicyCollection().getFederationPolicy().get(i); } } return null; }
ret.setInstalledMemory(this.getMachineInstalledRam(SLACommon.LoadPolicyPooled(request.getUri()).getMachineName())); ret.getProcessData().addAll(this.GetProcessPerformanceDataList(request.getUri(), request.getRange(), offset, records));
req.setBrokerHostname(p.getMachineName()); req.setDomain(p.getDomainName()); req.setClassification(SLACommon.GetClassLevel(pooled)); req.setOperationalStatus(ok);
SetupBundle(); ServicePolicy pol = SLACommon.getPolicy(uri, pooled); if (pol == null || pol.getServiceLevelAggrements() == null || pol.getServiceLevelAggrements().getSLA().isEmpty()) { return; for (int i = 0; i < pol.getServiceLevelAggrements().getSLA().size(); i++) { if (containsChangeInStatus(pol.getServiceLevelAggrements().getSLA().get(i).getRule())) { String msgplain = String.format(bundle.getString("StatusChangeEmailAlertPlain"), uri, s); String msghtml = String.format(bundle.getString("StatusChangeEmailAlertHtml"), Utility.encodeHTML(uri), oldmsg, s, (currenstatus ? "OK" : "NG")); false, pol.getServiceLevelAggrements().getSLA().get(i).getAction().getSLAAction(), pol.getServiceLevelAggrements().getSLA().get(i).getGuid(), pol, AlertType.Status);
@Override public boolean CheckNonTransactionalRule(ServicePolicy pol, List<NameValuePair> params, AtomicReference<String> nullableFaultMsg, boolean pooled) { if (nullableFaultMsg == null) { nullableFaultMsg = new AtomicReference<String>(); } NameValuePair GetNameValuePairByName = Utility.getNameValuePairByName(params, "value"); long rate = Long.parseLong(GetNameValuePairByName.getValue()); GetNameValuePairByName = Utility.getNameValuePairByName(params, "duration"); long duration = Long.parseLong(GetNameValuePairByName.getValue()); // long rate = x.getFaults();//) / (double) (Utility.durationToTimeInMS(x.getTime()))); long faultrate = NonTransactionalSLAProcessor.GrabFaultRate(duration, pol.getURL()); if (faultrate < rate) { nullableFaultMsg.set("Faults Over Time measured value of " + faultrate + " is less than " + rate + ", " + nullableFaultMsg.get()); return true; } return false; }
ServicePolicy md = SLACommon.LoadPolicyPooled(machines.getServiceType().get(i).getURL()); MachineData data = new MachineData(); data.setDomainName(md.getDomainName()); data.setHostname(md.getMachineName()); data.setMachinePerformanceData(getCurrentMachinePerformanceData((MachinePolicy) md)); ArrayOfServiceType processes = DASHelper.getServiceListfromPolicyDB(ctx, request.getClassification(), PolicyType.PROCESS, md.getMachineName()); if (processes != null) { for (int k = 0; k < processes.getServiceType().size(); k++) {
outmsg = new AtomicReference<String>(); if (pol.getServiceLevelAggrements() == null || pol.getServiceLevelAggrements().getSLA().isEmpty()) { return true; for (int i = 0; i < pol.getServiceLevelAggrements().getSLA().size(); i++) { if (Utility.stringIsNullOrEmpty(pol.getServiceLevelAggrements().getSLA().get(i).getGuid())) { outmsg.set("Each SLA must have a unique identifier, try UUID.randomUUID().toString() or Guid.newGuid().toString(). " + outmsg.get()); valid = false; if (pol.getServiceLevelAggrements().getSLA().get(i).getRule() == null) { outmsg.set("Each SLA must have a Rule. " + outmsg.get()); valid = false; valid = valid && (validateRulesRecursive(pol, outmsg, pol.getServiceLevelAggrements().getSLA().get(i).getRule())); if (pol.getServiceLevelAggrements().getSLA().get(i).getAction() == null || pol.getServiceLevelAggrements().getSLA().get(i).getAction().getSLAAction().isEmpty()) { outmsg.set("Each SLA must have at least one Action. " + outmsg.get()); valid = false; } else { valid = valid && validateActions(pol, outmsg, pol.getServiceLevelAggrements().getSLA().get(i).getAction().getSLAAction());