ZooKeeper Dashboard
Author: Patrick Hunt (follow me on twitter)
Summary
This project uses Django and the zkpython bindings to provide a dashboard for a ZooKeeper ensemble (cluster).
- Cluster summary
- Individual server detail
- Client connection detail
- Navigate & examine the live znode hierarchy
This is a work in progress. Want more? Ping me on twitter or enter an issue on GitHub.
What’s Apache ZooKeeper?
From the official site: “ZooKeeper is a high-performance coordination service for distributed applications.”
It exposes common services – such as naming, configuration management, synchronization, and group services – in a simple interface so you don’t have to write them from scratch. You can use it off-the-shelf to implement consensus, group management, leader election, and presence protocols.
Overview
Django and the zkpython bindings are used to provide a dashboard for a ZooKeeper ensemble (cluster).
License
This project is licensed under the Apache License Version 2.0
Requirements
- Django 1.0+
Usage
Edit settings.py. The top of the file has the ZOOKEEPER specific settings.
- ZOOKEEPER_SERVERS – host:port(,host:port)* of all servers in your cluster. This is the same information that you provide in your ZooKeeper client configuration.
then start the django server
PYTHONPATH=lib.linux-i686-2.6 LD_LIBRARY_PATH=lib.linux-i686-2.6 ./manage.py runserver
Obviously the dashboard needs access to the serving cluster (it queries the server’s client port per ZOOKEEPER_SERVERS configuration).
Finally open a link in your browser to the server: http://127.0.0.1:8000/
Note: you may need to compile the zookeeper python binding yourself, this project includes only 32bit linux binaries. Additionally, the django – zookeeper bridge relies on some changes to the zkpython binding that are not yet released, so if you do compile yourself you will need to compile zkpython from the Apache ZooKeeper SVN trunk (this should be addressed as soon as ZooKeeper 3.3.0 is released).
ZooKeeper client output is written to “cli_log.txt”.
Limitations
ACLs are not yet fully supported. In particular the django server runs as an un-authenticated user. If nodes are protected by ACLs the server will not be able to access them.
Screenshots
Cluster Summary
Server Summary
ZNode tree
ACLs and child list not shown