Argus glue service for Zino
Project description
Zino ↔ Argus glue service
This is a glue service for integration between Argus, the alert aggregation server, and Zino, the network state monitor provided by Sikt.
This is still a work in progress and more information will be added here later.
Installing zino-argus-glue
From Python Package Index (PyPI)
$ pip install zino-argus-glue
...
$ zinoargus --help
usage: zinoargus [-h] [-v] [-c CONFIG_FILE]
options:
-h, --help show this help message and exit
-v, --verbose
-c CONFIG_FILE, --config-file CONFIG_FILE
$
From source (this repository)
$ pip install .
...
$ zinoargus --help
usage: zinoargus [-h] [-v] [-c CONFIG_FILE]
options:
-h, --help show this help message and exit
-v, --verbose
-c CONFIG_FILE, --config-file CONFIG_FILE
$
Configuring zino-argus-glue
The zino-argus-glue program needs to know how to connect to both a Zino API
server and an Argus API server in order to synchronize incidents from Zino to
Argus. Addresses and authentication tokens for these APIs are configured in
zinoargus.toml. zinoargus reads this file the current working directory,
or you can specify an alternate path to a configuration file using the -c
command line option. See zinoargus.toml.example
for an example configuration file.
Primary/secondary failover
zino-argus-glue can run as a secondary instance that monitors a primary Zino
server and only takes over Argus synchronization only when the primary becomes
unreachable. The secondary polls the primary's SNMP agent for its uptime at
regular intervals; after a configurable number of consecutive failures it
switches from STANDBY to ACTIVE and begins syncing. When the primary
recovers (the same number of consecutive successes), it switches back to
STANDBY.
A complete failover deployment therefore consists of two independent Zino
servers (each with its own state) and two zino-argus-glue instances. Each
glue instance connects to its own local Zino, and the secondary glue
additionally pings the primary Zino's SNMP agent to decide whether to be
active.
To enable failover, add a [failover] section to your configuration file:
[failover]
primary_server = "10.0.0.1"
primary_snmp_port = 8000
snmp_community = "public"
ping_timeout = 5
threshold = 10
primary_server— hostname or IP of the primary Zino's SNMP agent (required)primary_snmp_port— UDP port of the SNMP agent (default8000)snmp_community— SNMP community string (default"public")ping_timeout— timeout in seconds for each SNMP query (default5)threshold— number of consecutive failures before activating, and consecutive successes before standing down (default10)
When the [failover] section is omitted, the daemon runs in standalone
(always-active) mode, which is the default behavior.
Verifying failover manually
To exercise the failover logic end-to-end:
- Start the secondary
zino-argus-gluewith a[failover]section pointing at the primary Zino's SNMP agent. It should log that it is starting inSTANDBYmode. - Stop the primary Zino process. After
thresholdconsecutive ping failures the secondary should log a transition toACTIVEand begin syncing its own Zino's cases to Argus. - Restart the primary Zino. After
thresholdconsecutive successful pings the secondary should log a transition back toSTANDBYand stop syncing.
A low threshold (e.g. 3) is convenient for testing; production deployments
will typically want a higher value to avoid flapping.
Copying
Copyright 2025-2026 Sikt (The Norwegian Agency for Shared Services in Education and Research)
Licensed under the Apache License, Version 2.0; See LICENSE for a full copy of the License.
Developing Zino-Argus-Glue
Using towncrier to automatically produce the changelog
Before merging a pull request
To be able to automatically produce the changelog for a release one file for each
pull request (also called news fragment) needs to be added to the folder
changelog.d/.
The name of the file consists of three parts separated by a period:
- The identifier: the issue number
or the pull request number. If we don't want to add a link to the resulting changelog
entry then a
+followed by a unique short description. - The type of the change: we use
security,removed,deprecated,added,changedandfixed. - The file suffix, e.g.
.md, towncrier does not care which suffix a fragment has.
So an example for a file name related to an issue/pull request would be 214.added.md
or for a file without corresponding issue +fixed-pagination-bug.fixed.md.
This file can either be created manually with a file name as specified above and the changelog text as content or one can use towncrier to create such a file as following:
$ towncrier create -c "Changelog content" 214.added.md
When opening a pull request there will be a check to make sure that a news fragment is added and it will fail if it is missing.
Before a release
To add all content from the changelog.d/ folder to the changelog file simply run
$ towncrier build --version {version}
This will also delete all files in changelog.d/.
To preview what the addition to the changelog file would look like add the flag
--draft. This will not delete any files or change CHANGELOG.md. It will only output
the preview in the terminal.
A few other helpful flags:
date DATE- set the date of the release, default is todaykeep- do not delete the files inchangelog.d/
More information about towncrier.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file zino_argus_glue-0.4.0.tar.gz.
File metadata
- Download URL: zino_argus_glue-0.4.0.tar.gz
- Upload date:
- Size: 26.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9db058d1ee1875f0ba7af1c6b1da85a2522e9277627333d476d3a0dcbb77b023
|
|
| MD5 |
4705ef7828f4653ed3a53610c1153dfb
|
|
| BLAKE2b-256 |
debda7165481e08198e568a4d14ee7c98ab290ede6038d86cf96b497b72e7a66
|
File details
Details for the file zino_argus_glue-0.4.0-py3-none-any.whl.
File metadata
- Download URL: zino_argus_glue-0.4.0-py3-none-any.whl
- Upload date:
- Size: 20.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
998eadc6fa479f4abeae3cb3e4fda98aaeda19cad59f56859cbafb9b07392a98
|
|
| MD5 |
433795755ddb1fb01105f513d27f8a08
|
|
| BLAKE2b-256 |
e09f7af15cf47291475a831b49b3d380f6ab914ef87ebe6e2c894ba144f298a3
|