Skip to main content

Robust network management system for large backbone networks

Project description

Zino 2

build badge codecov badge Code style: Ruff rtfd badge Python 3.9 Python 3.10 Python 3.11 Python 3.12

This is the modern Python re-implementation of the battle-proven Zino network state monitor, first implemented in Tcl/Scotty at Uninett in the 1990s.

Development of Zino 2.0 is fully sponsored by NORDUnet, on behalf of the nordic NRENs.

Table of contents

What is Zino?

Zino Is Not OpenView.

Zino is an SNMP network monitor that began its life at Uninett in the mid 1990s. It was a homegrown system written in Tcl, specifically to monitor the routers of the Norwegian national research network (NREN), a large backbone network that connects the widely geographically dispersed higher education and research institutions of Norway. Uninett was also part of NORDUnet, the collaboration that interconnects the NRENs of the Nordic countries, and Zino is also utilized to monitor the NORDUnet backbone.

Here's a quote about its features from the README file of the original Tcl codebase:

 o Trap-driven polling; receives and interprets traps.
 o Periodic status polling (by default low frequency).
 o A simplistic event handling system.
 o A simple SMTP-like client/server protocol.
 o A TK-based user interface.

all in a little under 5000 lines of Tcl.

This project aims to port all this to Python, except for the TK-based user interface. The Python implementation keeps backwards compatibility with the "simple SMTP-like client/server protocol", so that the existing user interface clients can be re-used (such as Ritz and cuRitz).

Zino is essentially a small program that can run in the background, monitoring your router network for:

  • Link state
  • BGP session state
  • BFD session state
  • Juniper chassis alarms

All changes will result in an "event" (aka a "case"), in which Zino will log all further related changes until the case is manually closed by a human operator via the server protocol on port 8001 (essentially through some user interface).

Notifications are typically achieved by having a client program to fetch active events from the Zino server and decide from that which notifications need to be sent.

Zino has very few dependencies, other than the Python packages required to run it. Zino serializes its running state to a JSON file on disk, and can resume its work from this file when restarted.

Redundancy can thus be achieved by running two or more Zino servers in parallel. A typical solution is for one server to be the "master", and the other to be a "hot standby". To ensure the master and the standby are mostly in sync, a typical solution is to transfer the state dump from the master to the standby every 24 hours and then restarting the standby from the master's state dump. Zino clients can be typically be configured to automatically switch to using a standby server if the master is unavailable.

Installing Zino

You need a supported Python version, and these days a virtualenv for dependencies. You also need to choose one of two supported SNMP libraries, by default it is backed by a C-library, Net-SNMP.

We recommend you create a user to own zino's files instead of having everything be owned by root

See Installation for the full details.

Configuring Zino

Zino must have at minimum one configuration file: polldevs.cf, which keeps track of at least one SNMP-enabled router to monitor. See Configuring for the details.

Using Zino

This package only represents the Zino server backend. In order to meaningfully interface with Zino as a user, you will want a remote interface to Zino. Several remote interfaces exist.

  • curitz is a curses-based terminal application to interface with Zino. It is currently the best client for day-to-day use.

  • Ritz is the original Remote Interface To Zino. It is an X11 desktop application written in Tcl/Tk. Unfortunately, the source code isn't currently available.

  • Howitz is a web-based remote interface to Zino that was originally written as part of the Zino 2.0 project. However, it has since been discontinued in favor of integration with Argus using the zino-argus glue service.

Developing Zino

Contributions are welcome, at this point especially bug reports (patches welcome), missing documentation, how to's and usage tips!

See Developing Zino for tips, expectations and assumptions.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zino-2.5.1.tar.gz (611.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

zino-2.5.1-py3-none-any.whl (574.5 kB view details)

Uploaded Python 3

File details

Details for the file zino-2.5.1.tar.gz.

File metadata

  • Download URL: zino-2.5.1.tar.gz
  • Upload date:
  • Size: 611.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"NixOS","version":"25.11","id":"xantusia","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for zino-2.5.1.tar.gz
Algorithm Hash digest
SHA256 3dec78552de5b1d9d7e6d7443eb145a043afd03de4b8b1fbd92ef2d63429001b
MD5 e56e2cbf84ec8bee9f1213be2a9b5080
BLAKE2b-256 c2ceef898516d15822a9f9859b1449bd30cb26f6c007bd647792bb827d20913d

See more details on using hashes here.

File details

Details for the file zino-2.5.1-py3-none-any.whl.

File metadata

  • Download URL: zino-2.5.1-py3-none-any.whl
  • Upload date:
  • Size: 574.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"NixOS","version":"25.11","id":"xantusia","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for zino-2.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 58e26fe6f5fa29a75c0f13e1428d6b44f130a7c2c11495a3b27ab416e439a2e4
MD5 1b4712ae4b7e338b7b03f44701d10920
BLAKE2b-256 8e4e21ac6f36535906f2f0c500d15cf2e8d9465734679d649ace8adcf4f7155f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page