Eric,

Can you take a look at this... I thought we fixed the problem.

-EAD

Begin forwarded message:

From: Hrvoje Habjanić <[EMAIL PROTECTED]>
Date: November 17, 2007 10:19:44 AM EST
To: General discussion of using zenoss system <zenoss- [EMAIL PROTECTED]>
Subject: Re: [zenoss-users] Zenoss 2.1.1 threshold bug
Reply-To: General discussion of using zenoss system <[email protected] >

On Saturday 17 November 2007 01:20:39 Allen Sanabria wrote:
Happening to me as well. My scenerio, I removed the thresholds for load and
it is still reporting :(


Well, i did manage to solve my problem with attached patch. In short,
two "bugs" are fixed:
1. even disabled thresholds wehe still evaluated
2. type cast value for comparison with min/max values to float

In any case, i'm not zenoss programer, so this patch can be "dangerous", use
it on your own risk.

And secondly, it seems that thresholds are somehow "cached". Even deleting of *.zec files, and restarting zenoss didn't clear them. Only after zenperfsnmp config period they seem to be somehow "updated" or owerwriten in cache, so be prepared to see errors in logs for some time. They should go away later (at
least in my case).

H.

p.s. If anyone can foward this patch to dev list, i would be grateful.

On Friday 16 November 2007 05:40:43 pm Hrvoje Habjanić wrote:
Hi!

Im running 2.1.1, around 100 devices. Some of them have disabled
thresholds. That is, the thresholds should be disabled (they are disabled on web), BUT it seems that zenoss is ignoring "enabled" property, and
reporting alerts for them?!?
Can someone confirm this?

I did migrate from 2.0.6 -> 2.1.0 -> 2.1.1, and i don't expect that this
is the problem.

H.
_______________________________________________
zenoss-users mailing list
[email protected]
http://lists.zenoss.org/mailman/listinfo/zenoss-users

_______________________________________________
zenoss-users mailing list
[email protected]
http://lists.zenoss.org/mailman/listinfo/zenoss-users


--- zenoss/Products/ZenModel/MinMaxThreshold.py.orig	2007-11-16 22:16:18.000000000 +0100
+++ zenoss/Products/ZenModel/MinMaxThreshold.py	2007-11-16 22:06:16.000000000 +0100
@@ -84,7 +84,8 @@
                                       maxval=self.getMaxval(context),
                                       eventClass=self.eventClass,
                                       severity=self.severity,
-                                      escalateCount=self.escalateCount)
+                                      escalateCount=self.escalateCount,
+                                      enabled=self.enabled)
         return mmt
 
     def getMinval(self, context):
@@ -110,7 +111,7 @@
 class MinMaxThresholdInstance(ThresholdInstance):
     
     def __init__(self, id, context, dpNames,
-                 minval, maxval, eventClass, severity, escalateCount):
+                 minval, maxval, eventClass, severity, escalateCount,enabled):
         self._context = context
         self.id = id
         self.minimum = minval
@@ -119,6 +120,7 @@
         self.severity = severity
         self.escalateCount = escalateCount
         self.dataPointNames = dpNames
+        self.enabled = enabled
         self._rrdInfoCache = {}
 
     def name(self):
@@ -145,6 +147,8 @@
         """The given datapoints have been updated, so re-evaluate.
         returns events or an empty sequence"""
         result = []
+        if self.enabled == False:
+            return result
         for dp in self.dataPointNames:
             cycleTime, rrdType = self.rrdInfoCache(dp)
             startStop, names, values = \
@@ -160,6 +164,8 @@
         value to re-evalue the threshold."""
         result = []
         if value is None: return result
+        if self.enabled == False:
+            return result
         try:
             cycleTime, rrdType = self.rrdInfoCache(dataPoint)
         except Exception:
@@ -181,10 +187,10 @@
         if value is None:
             return []
         thresh = None
-        if self.maximum is not None and value > self.maximum:
+        if self.maximum is not None and float(value) > self.maximum:
             thresh = self.maximum
             how = 'exceeded'
-        if self.minimum is not None and value < self.minimum:
+        if self.minimum is not None and float(value) < self.minimum:
             thresh = self.minimum
             how = 'not met'
         label = self.context().componentName or ''
@@ -203,7 +209,7 @@
         else:
             if self.count != 0 and self.count is not None:
                 summary = '%s %s threshold restored current value: %.2f' % (
-                    self.context().deviceName, label, value)
+                    self.context().deviceName, label, float(value))
                 self.count = 0
                 return [dict(device=self.context().deviceName,
                              summary=summary,
_______________________________________________
zenoss-users mailing list
[email protected]
http://lists.zenoss.org/mailman/listinfo/zenoss-users

-EAD

Erik A. Dahl
Co-Founder and CTO, Zenoss Inc.
http://www.zenoss.com





_______________________________________________
zenoss-users mailing list
[email protected]
http://lists.zenoss.org/mailman/listinfo/zenoss-users

Reply via email to