ZEO Server: Error: u'monitor-address' is not a known key name

Hi everyone,

I added the monitor-address option as described in https://pypi.org/project/plone.recipe.zeoserver to my buildout.cfg option like this:

recipe = plone.recipe.zeoserver
zeo-address =
monitor-address =

The buildout run succeeds, but when I start the ZEO Server I get this error:

$ bin/zeoserver fg
Error: u'monitor-address' is not a known key name
For help, use bin/zeoserver -h

This worked in a previous Plone 4.3.19 setup, but not anymore for Plone 5.2.1.
Is this option replaced or completely removed?

I used this option to monitor the ZEO Server in Munin.

Thanks for your help,

Python 2 or 3? Works on Python 3...

I'm using Python 2 at the moment.
Strange error if this is related to the Python version.

Likely some code that is supposed to be Python 2 and 3 compatible...take the debugger and check in the sourcecode of the recipe...it's not that long.

Wrong assumption: the monitor server was removed in ZEO 5

As a consequence: the monitor-address configuration should be removed at some point from the zeoserver recipe.

Thanks for pointing that out @zopyx.

I was wondering if there is an alternative way to get these stats about cached objects etc.? I've seen that the plone/ansible.plone_server playbook includes five.z2monitor to the instances: https://github.com/plone/ansible.plone_server/blob/master/templates/buildout.cfg.j2#L237

However, this fails for me with the following error:

root@senaite:/home/senaite/senaitelims# bin/client1 monitor dbinfo
Traceback (most recent call last):
  File "/home/senaite/buildout-cache/eggs/zc.monitor-0.4.0.post1-py2.7.egg/zc/monitor/__init__.py", line 58, in handle_input
    res = command(connection, *args)
  File "/home/senaite/buildout-cache/eggs/zc.z3monitor-0.8.0-py2.7.egg/zc/z3monitor/__init__.py", line 110, in dbinfo
    db = zope.component.getUtility(ZODB.interfaces.IDatabase, database)
  File "/home/senaite/buildout-cache/eggs/zope.component-4.5-py2.7.egg/zope/component/_api.py", line 154, in getUtility
    raise ComponentLookupError(interface, name)
ComponentLookupError: (<InterfaceClass ZODB.interfaces.IDatabase>, '')
ComponentLookupError: (<InterfaceClass ZODB.interfaces.IDatabase>, '')

Also the repository seems to be archived?

So I assume this is no longer maintained...

Is anyone else monitoring the ZODB objects in Plone 5.2.1 on Zope 4 somehow?

Thanks, Ramon

The question is why it is no longer maintained. Guess: the whole stack of modules to support an extra zope thread to answer (monitor) request been deprecated because of the switch to wsgi?

@icemac as you archived the packages, is this the reason?

zc.monitor depends on zc.ngi which is not (yet?) ported to Python 3. So this whole monitor stack cannot be used on modern Python.

See https://github.com/zopefoundation/zc.monitor/issues/3

Is there any other solution other than going to wsgi?

We relied on the monitor port to do proper health checks from rancher and haproxy to zope. If you use the normal http port instead then any long requests results in the instance being marked as unhealthy instead of simply busy which has undesirable consequences.
All I need is a port that responds if the instance isn't completely locked up. Any ideas?