[Checkins] SVN: Products.ZNagios/trunk/Products/ZNagios/ enable registration of znagios probes as zc.monitor utilities

Jean-François Roche cvs-admin at zope.org
Tue Oct 30 15:42:05 UTC 2012


Log message for revision 128151:
  enable registration of znagios probes as zc.monitor utilities

Changed:
  U   Products.ZNagios/trunk/Products/ZNagios/__init__.py
  A   Products.ZNagios/trunk/Products/ZNagios/zcmonitor.py
  A   Products.ZNagios/trunk/Products/ZNagios/zcmonitor.zcml

-=-
Modified: Products.ZNagios/trunk/Products/ZNagios/__init__.py
===================================================================
--- Products.ZNagios/trunk/Products/ZNagios/__init__.py	2012-10-30 09:35:25 UTC (rev 128150)
+++ Products.ZNagios/trunk/Products/ZNagios/__init__.py	2012-10-30 15:42:05 UTC (rev 128151)
@@ -24,9 +24,9 @@
     return size
 
 
-def get_activity(db):
+def get_activity(db, delta=MUNIN_TIME_DELTA):
     now = float(DateTime.DateTime())
-    request = dict(chart_start=now-MUNIN_TIME_DELTA,
+    request = dict(chart_start=now-delta,
                    chart_end=now)
     return db.getActivityChartData(200, request)
 
@@ -52,6 +52,20 @@
         #Zope >= 2.11 does not store conflict_errors globally
         return Zope2.App.startup.zpublisher_exception_hook
 
+
+def uptime(app):
+    return app.Control_Panel.process_time().strip()
+
+
+def dbsize(app):
+    size = app.Control_Panel.db_size()
+    if size[-1] == "k":
+        size = float(size[:-1]) * 1024
+    else:
+        size = float(size[:-1]) * 1048576
+    return size
+
+
 def nagios(self):
     """A method to allow nagios checks with a bit more information.
 
@@ -61,14 +75,10 @@
     result = ""
 
     # Uptime
-    result += "uptime: %s\n" % self.Control_Panel.process_time().strip()
+    result += "uptime: %s\n" % uptime(self)
 
     # Database size
-    size = self.Control_Panel.db_size()
-    if size[-1] == "k":
-        size = float(size[:-1]) * 1024
-    else:
-        size = float(size[:-1]) * 1048576
+    size = dbsize(self)
     result += "database: %s\n" % int(size)
 
     # references

Added: Products.ZNagios/trunk/Products/ZNagios/zcmonitor.py
===================================================================
--- Products.ZNagios/trunk/Products/ZNagios/zcmonitor.py	                        (rev 0)
+++ Products.ZNagios/trunk/Products/ZNagios/zcmonitor.py	2012-10-30 15:42:05 UTC (rev 128151)
@@ -0,0 +1,65 @@
+# -*- coding: utf-8 -*-
+import time
+import zope.component
+import ZODB.interfaces
+from Zope2 import app as App
+
+from Products.ZNagios import get_refcount, get_conflictInfo, get_activity
+
+
+def zc_uptime(connection, database='main'):
+    """uptime of the zope instance in seconds"""
+    app = App()
+    elapsed = time.time() - app.Control_Panel.process_start
+    print >> connection, elapsed
+    app._p_jar.close()
+
+
+def zc_dbsize(connection, database='main'):
+    """size of the database (default=main) in Ko"""
+    db = zope.component.getUtility(ZODB.interfaces.IDatabase, database)
+    print >> connection, '%.1f Ko' % (db.getSize() / 1024.0)
+
+
+def zc_objectcount(connection, database='main'):
+    """number of object in the database (default=main)"""
+    db = zope.component.getUtility(ZODB.interfaces.IDatabase, database)
+    print >> connection, db.objectCount()
+
+
+def zc_refcount(connection):
+    """the total amount of object reference counts"""
+    app = App()
+    print >> connection, get_refcount(app)
+    app._p_jar.close()
+
+
+def zc_errorcount(connection, objectId=None):
+    """number of error present in error_log (default in the root).
+
+    You can also provide the objectId of the object that contains another error_log
+    """
+    app = App()
+    if objectId is not None:
+        app = getattr(app, objectId)
+    print >> connection, len(app.error_log._getLog())
+    app._p_jar.close()
+
+
+def zc_conflictcount(connection):
+    """number of all conflict errors since startup"""
+    print >> connection, get_conflictInfo().conflict_errors
+
+
+def zc_unresolved_conflictcount(connection):
+    """number of all unresolved conflict errors since startup"""
+    print >> connection, get_conflictInfo().unresolved_conflict_errors
+
+
+def zc_dbactivity(connection, database='main', last_minutes=60 * 5):
+    """number of load, store and connections on database (default=main) for the last x minutes (default=5)"""
+    app = App()
+    db = app.Control_Panel.Database[database]
+    activity = get_activity(db)
+    print >> connection, activity['total_load_count'], " ", activity['total_store_count'], " ", activity['total_connections']
+    app._p_jar.close()

Added: Products.ZNagios/trunk/Products/ZNagios/zcmonitor.zcml
===================================================================
--- Products.ZNagios/trunk/Products/ZNagios/zcmonitor.zcml	                        (rev 0)
+++ Products.ZNagios/trunk/Products/ZNagios/zcmonitor.zcml	2012-10-30 15:42:05 UTC (rev 128151)
@@ -0,0 +1,43 @@
+<configure xmlns="http://namespaces.zope.org/zope">
+
+   <utility
+     component=".zcmonitor.zc_uptime"
+     provides="zc.z3monitor.interfaces.IZ3MonitorPlugin"
+     name="uptime" />
+
+   <utility
+     component=".zcmonitor.zc_dbsize"
+     provides="zc.z3monitor.interfaces.IZ3MonitorPlugin"
+     name="dbsize" />
+
+   <utility
+     component=".zcmonitor.zc_refcount"
+     provides="zc.z3monitor.interfaces.IZ3MonitorPlugin"
+     name="refcount" />
+
+   <utility
+     component=".zcmonitor.zc_objectcount"
+     provides="zc.z3monitor.interfaces.IZ3MonitorPlugin"
+     name="objectcount" />
+
+   <utility
+     component=".zcmonitor.zc_errorcount"
+     provides="zc.z3monitor.interfaces.IZ3MonitorPlugin"
+     name="errorcount" />
+
+   <utility
+     component=".zcmonitor.zc_conflictcount"
+     provides="zc.z3monitor.interfaces.IZ3MonitorPlugin"
+     name="conflictcount" />
+
+   <utility
+     component=".zcmonitor.zc_unresolved_conflictcount"
+     provides="zc.z3monitor.interfaces.IZ3MonitorPlugin"
+     name="unresolved_conflictcount" />
+
+   <utility
+     component=".zcmonitor.zc_dbactivity"
+     provides="zc.z3monitor.interfaces.IZ3MonitorPlugin"
+     name="dbactivity" />
+
+</configure>



More information about the checkins mailing list