Updated Branches: refs/heads/master 90236a71a -> d98f31e86
Implemented a new functionality to log inside drools files Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/9113bc19 Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/9113bc19 Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/9113bc19 Branch: refs/heads/master Commit: 9113bc190e106a9df5ad7fb18532772892d1127a Parents: 22882d6 Author: Imesh Gunaratne <[email protected]> Authored: Thu Dec 26 00:14:56 2013 +0530 Committer: Imesh Gunaratne <[email protected]> Committed: Thu Dec 26 00:14:56 2013 +0530 ---------------------------------------------------------------------- .../rule/AutoscalerRuleEvaluator.java | 2 + .../apache/stratos/autoscaler/rule/RuleLog.java | 55 ++++++++++++++++++++ .../distribution/src/main/conf/mincheck.drl | 8 ++- .../distribution/src/main/conf/scaling.drl | 9 ++++ 4 files changed, 73 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9113bc19/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java index 789606f..21eedd5 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java @@ -104,11 +104,13 @@ public class AutoscalerRuleEvaluator { public StatefulKnowledgeSession getMinCheckStatefulSession() { StatefulKnowledgeSession ksession; ksession = minCheckKbase.newStatefulKnowledgeSession(); + ksession.setGlobal("log", RuleLog.getInstance()); return ksession; } public StatefulKnowledgeSession getScaleCheckStatefulSession() { StatefulKnowledgeSession ksession; ksession = scaleCheckKbase.newStatefulKnowledgeSession(); + ksession.setGlobal("log", RuleLog.getInstance()); return ksession; } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9113bc19/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleLog.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleLog.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleLog.java new file mode 100644 index 0000000..3cf21d2 --- /dev/null +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleLog.java @@ -0,0 +1,55 @@ +package org.apache.stratos.autoscaler.rule; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * Drools rule log for logging inside rule files. + */ +public class RuleLog { + private static final Log log = LogFactory.getLog(RuleLog.class); + + private static volatile RuleLog instance; + + private RuleLog() { + } + + public static RuleLog getInstance() { + if (instance == null) { + synchronized (RuleLog.class) { + if (instance == null) { + instance = new RuleLog(); + } + } + } + return instance; + } + + public boolean info(String value) { + if(log.isInfoEnabled()) { + log.info(value); + } + return true; + } + + public boolean debug(String value) { + if(log.isDebugEnabled()) { + log.debug(value); + } + return true; + } + + public boolean warn(String value) { + if(log.isWarnEnabled()) { + log.warn(value); + } + return true; + } + + public boolean error(String value) { + if(log.isErrorEnabled()) { + log.error(value); + } + return true; + } +} http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9113bc19/products/autoscaler/modules/distribution/src/main/conf/mincheck.drl ---------------------------------------------------------------------- diff --git a/products/autoscaler/modules/distribution/src/main/conf/mincheck.drl b/products/autoscaler/modules/distribution/src/main/conf/mincheck.drl index bef3370..083d6b2 100755 --- a/products/autoscaler/modules/distribution/src/main/conf/mincheck.drl +++ b/products/autoscaler/modules/distribution/src/main/conf/mincheck.drl @@ -40,7 +40,7 @@ import org.apache.stratos.autoscaler.partition.PartitionGroup; import org.apache.stratos.cloud.controller.deployment.partition.Partition; import org.apache.stratos.cloud.controller.pojo.MemberContext; - +global org.apache.stratos.autoscaler.rule.RuleLog log; global org.apache.stratos.autoscaler.policy.PolicyManager $manager; global org.apache.stratos.autoscaler.AutoscalerContext $context; global org.apache.commons.logging.Log log; @@ -53,7 +53,10 @@ global java.lang.String lbRef; rule "Minimum Rule" dialect "mvel" when + eval(log.debug("Running minimum rule")) $ctxt : PartitionContext () + eval(log.debug("total member count: " + $ctxt.getTotalMemberCount())) + eval(log.debug("minimum member count: " + $ctxt.getMinimumMemberCount())) eval($ctxt.getTotalMemberCount() < $ctxt.getMinimumMemberCount()) then @@ -64,9 +67,12 @@ end rule "Terminate Obsoleted Instances" dialect "mvel" when + eval(log.debug("Running obsolete instances rule")) $ctxt : PartitionContext () + eval(log.debug("obsolete member count: " + $ctxt.getObsoletedMembers().size())) eval($ctxt.getObsoletedMembers().size() > 0) memberId : String() from $ctxt.getObsoletedMembers() + eval(log.debug("member id: " + memberId)) eval($ctxt.removeObsoleteMember(memberId)) then $delegator.delegateTerminate(memberId); http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9113bc19/products/autoscaler/modules/distribution/src/main/conf/scaling.drl ---------------------------------------------------------------------- diff --git a/products/autoscaler/modules/distribution/src/main/conf/scaling.drl b/products/autoscaler/modules/distribution/src/main/conf/scaling.drl index 3e1fa9f..9f6eeed 100644 --- a/products/autoscaler/modules/distribution/src/main/conf/scaling.drl +++ b/products/autoscaler/modules/distribution/src/main/conf/scaling.drl @@ -45,6 +45,7 @@ import org.apache.stratos.cloud.controller.pojo.MemberContext; import org.apache.stratos.autoscaler.policy.model.LoadAverage import org.apache.stratos.autoscaler.policy.model.MemoryConsumption +global org.apache.stratos.autoscaler.rule.RuleLog log; global org.apache.stratos.autoscaler.rule.RuleTasksDelegator $delegator; global org.apache.stratos.autoscaler.policy.model.AutoscalePolicy autoscalePolicy; global java.lang.String clusterId; @@ -54,6 +55,7 @@ global java.lang.String lbRef; rule "Scaler-up Rule" dialect "mvel" when + eval(log.debug("Running scale up rule")) $networkPartitionContext : NetworkPartitionContext () $loadThresholds : LoadThresholds() from autoscalePolicy.getLoadThresholds() autoscaleAlgorithm : AutoscaleAlgorithm() from $delegator.getAutoscaleAlgorithm($networkPartitionContext.getPartitionAlgorithm()) @@ -64,6 +66,9 @@ dialect "mvel" partition : Partition() from autoscaleAlgorithm.getNextScaleUpPartition($networkPartitionContext, clusterId) predictedValue : Float() from $delegator.getPredictedValueForNextMinute(lbStatAverage, lbStatGradient, lbStatSecondDerivative, 1) + eval(log.debug("predicted-value: " + predictedValue)) + eval(log.debug("average-limit: " + averageLimit)) + eval(log.debug("scale-up-factor: " + $delegator.SCALE_UP_FACTOR)) eval(predictedValue > averageLimit * $delegator.SCALE_UP_FACTOR) then // if (predictedValue*scaleUpFactor > averageLimit){ @@ -80,6 +85,7 @@ end rule "Scaler-down Rule" dialect "mvel" when + eval(log.debug("Running scale down rule")) $networkPartitionContext : NetworkPartitionContext () $loadThresholds : LoadThresholds() from autoscalePolicy.getLoadThresholds() autoscaleAlgorithm : AutoscaleAlgorithm() from $delegator.getAutoscaleAlgorithm($networkPartitionContext.getPartitionAlgorithm()) @@ -90,6 +96,9 @@ dialect "mvel" partition : Partition() from autoscaleAlgorithm.getNextScaleDownPartition($networkPartitionContext, clusterId) predictedValue : Float() from $delegator.getPredictedValueForNextMinute(lbStatAverage, lbStatGradient, lbStatSecondDerivative, 1) + eval(log.debug("predicted-value: " + predictedValue)) + eval(log.debug("average-limit: " + averageLimit)) + eval(log.debug("scale-down-factor: " + $delegator.SCALE_DOWN_FACTOR)) eval(predictedValue < averageLimit * $delegator.SCALE_DOWN_FACTOR) then
