[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