A Control System for Distributed Applications
Project description
Supvisors
Supvisors is a Control System for Distributed Applications, based on multiple instances of Supervisor.
The main features are:
- a new web-based dashboard that replaces the default dashboard of Supervisor,
- an extended XML-RPC API to control applications and multiple Supervisor instances,
- the definition of a rules file to handle:
- the starting sequence of the applications,
- the stopping sequence of the applications,
- the starting strategy of the processes,
- the strategy to apply when a process crashes.
Supervisor Enhancements
Supvisors proposes a contribution to the following Supervisor issues:
- #122 - supervisord Starts All Processes at the Same Time
- #456 - Add the ability to set different "restart policies" on process workers
- #520 - allow a program to wait for another to stop before being stopped?
- #723 - Restart waits for all processes to stop before starting any
- #874 - Bring down one process when other process gets killed in a group
- #1023 - Pass arguments to program when starting a job?
- #1150 - Why do event listeners not report the process exit status when stopped/crashed?
Supported Platforms
Supvisors has been tested and is known to run on Linux (CentOS 8.3). It will likely work fine on most UNIX systems.
Supvisors will not run at all under any version of Windows.
Supvisors >= 0.2 works with Python 3.6 or later.
Supvisors 0.1 (available on PyPi) works with Python 2.7 (and former versions of Supervisor, i.e. 3.3.0) but is not maintained anymore.
Dependencies
Supvisors has dependencies on:
Package | Release | Optional |
---|---|---|
Supervisor | 4.2.1 | |
PyZMQ | 20.0.0 | |
psutil | 5.7.3 | X |
netifaces | 0.10.9 | X |
matplotlib | 3.3.3 | X |
lxml | 4.6.2 | X |
Please note that some of these dependencies may have their own dependencies.
Versions are given for information. Although Supvisors has been developed and tested with these releases, the minimal release of each dependency is unknown. Other releases are likely working as well.
Installation
Supvisors can be installed with pip install
:
# minimal install (including Supervisor and PyZMQ)
[bash] > pip install supvisors
# extra install for all optional dependencies
[bash] > pip install supvisors[all]
Documentation
You can view the current Supvisors documentation here.
You will find detailed installation and configuration documentation.
Reporting Bugs and Viewing the Source Repository
Please report bugs in the Github issue tracker.
You can view the source repository for Supvisors.
Contributing
Not opened yet.
Change Log
0.7 (2021-08-15)
-
Fixed
Issue #92 <https://github.com/julien6387/supvisors/issues/92>
_. The Master drives the state of all Supvisors instances and a simplified state machine has been assigned to non-master Supvisors instances. The loss of the Master instance is managed in all relevant states. -
Fixed issue about applications that would be started automatically whereas their
start_sequence
is 0. The regression has been introduced during the implementation of applications repair in Supvisors 0.6. -
Enable stop sequence on unmanaged applications.
-
In the application navigation part of the Web UI, add a red light to applications having a failure raised.
-
New application rules
distributed
andaddresses
added to the Supvisors rules file. Non-distributed applications have all their processes started on the same node chosen in accordance with theaddresses
and thestarting_strategy
. -
Starting strategy added to the application rules.
-
Fixed issue when choosing node in
Starter
. The starting strategies considers the current load of the nodes and includes the requests that have not been satisfied yet. -
Fixed issue with infinite process restart when the process crashes and
RESTART_PROCESS
is set on the program in the Supvisors rules file. When the process crashes, only the Supervisorautorestart
applies. The SupvisorsRESTART_PROCESS
applies only when the node becomes inactive. -
Fixed exception when forcing the state on a process that is unknown to the local Supervisor.
-
Promote the
RESTART_PROCESS
intoRESTART_APPLICATION
if the application is stopped. -
For the Master election, give a priority to nodes declared in the
forced_synchro_if
option if used. -
When using the
forced_synchro_if
option and whenauto_fence
is activated, do not isolate nodes as long assynchro_timeout
has not passed. -
In the
INITALIZATION
state, skip the synchronization phase upon notification of a known Master and adopt it. -
Add reciprocity to isolation even if
auto_fence
is not activated. -
In the process description of the Web UI Application page, add information about the node_name. In particular, it is useful to know where the process was running when it is stopped.
-
Start adding use cases to documentation, inspired by real examples.
-
Documentation updated.
0.6 (2021-08-01)
-
Applications that are not declared in the rules file are not managed. Unmanaged applications have no start/stop sequence, no state and status (always STOPPED) and Supvisors does not raise a conflict if multiple instances are running over multiple nodes.
-
Improve Supvisors stability when dealing with remote programs undefined locally.
-
Add expand / shrink actions to applications to the
ProcAddressView
of the Web UI. -
Upon authorization of a new node in Supvisors, back to
DEPLOYMENT
state to repair applications. -
Add RPC
change_log_level
to dynamically change the Supvisors logger level. -
Application state is evaluated only against the starting sequence of its processes.
-
Fixed blocking issue when Master is stopped while in
DEPLOYMENT
state. -
Fixed issue with applications that would not fully stop when using the
STOP_APPLICATION
starting failure strategy. -
Fixed issue related to
Issue #85 <https://github.com/julien6387/supvisors/issues/85>
_. An exception was raised when the programprocnum
was greater than the list of applicable nodes. -
Fixed
Issue #91 <https://github.com/julien6387/supvisors/issues/91>
_. Fix CSS style on the process tables in HTML. -
Fixed
Issue #90 <https://github.com/julien6387/supvisors/issues/90>
_. The Supvisors Master node drives the transition toOPERATION
. -
In the Web UI, set the process state color to
FATAL
when the process has exited unexpectedly. -
Change the default expected loading to
0
in the program rules. -
Python
Enum
used for enumerations (not available in Python 2.7). -
Remove
supvisors_shortcuts
from source code to get rid of IDE warnings. -
All unit tests updated from
unittest
topytest
. -
Include this Change Log to documentation.
-
Documentation updated.
0.5 (2021-03-01)
-
New option
force_synchro_if
to force the end of the synchronization phase when a subset of nodes are active. -
New starting strategy
LOCAL
added to command the starting of an application on the local node only. -
Fixed
Issue #87 <https://github.com/julien6387/supvisors/issues/87>
_. Under particular circumstances, Supvisors could have multiple Master nodes. -
Fixed
Issue #86 <https://github.com/julien6387/supvisors/issues/86>
_. The starting and stopping sequences may fail and block when a sub-sequence includes only failed programs. -
Fixed
Issue #85 <https://github.com/julien6387/supvisors/issues/85>
_. When using#
in theaddress_list
program rule of the Supvisors rules file, a subset of nodes can optionally be defined. -
Fixed
Issue #84 <https://github.com/julien6387/supvisors/issues/84>
_. In the Supvisors rules file, program rules can be defined using both model reference and attributes. -
The Web UI uses the default starting strategy of the configuration file.
-
The layout of Web UI statistics sections has been rearranged.
-
Fixed CSS style missing for
CHECKING
node state in tables. -
Star added to the node box of the Master instance on the main page.
-
Type annotations are added progressively in source code.
-
Start switching from
unittest
topytest
. -
Logs (especially
debug
andtrace
) updated to remove printed objects. -
Documentation updated.
0.4 (2021-02-14)
-
Auto-refresh button added to all pages.
-
Web UI Main page reworked by adding a subdivision of application in node boxes.
-
Fixed exception when exiting using
Ctrl+c
from shell. -
Fixed exception when rules files is not provided.
-
Documentation updated.
0.3 (2020-12-29)
-
Fixed
Issue #81 <https://github.com/julien6387/supvisors/issues/81>
_. When Supvisors logfile is set toAUTO
, Supvisors uses the same logger as Supervisor. -
Fixed
Issue #79 <https://github.com/julien6387/supvisors/issues/79>
_. WhenFATAL
orUNKNOWN
Process state is forced by Supvisors,spawnerr
was missing in the listener payload. -
Useless folder
rsc_ref
deleted. -
design
folder moved to a dedicated GitHub repository. -
100% coverage reached in unit tests.
-
Documentation updated.
0.2 (2020-12-14)
-
Migration to Python 3.6. Versions of dependencies are refreshed, more particularly Supervisor 4.2.1.
-
CSS of Web UI updated / simplified.
-
New action added to Host Process page of WebUI:
tail -f stderr
button. -
New information actions added to Application page of WebUI:
description
field.clear logs
,tail -f stdout
,tail -f stderr
buttons.
-
Fixed
Issue #75 <https://github.com/julien6387/supvisors/issues/75>
_. Supvisors takes into account theusername
and thepassword
ofinet_http_server
in thesupervisord
section. -
Fixed
Issue #17 <https://github.com/julien6387/supvisors/issues/17>
_. The user selections on the web UI are passed to the URL. -
Fixed
Issue #72 <https://github.com/julien6387/supvisors/issues/72>
_. The extra arguments are shared between all Supvisors instances. -
README.rst
replaced withREADME.md
. -
Coverage improved in tests.
-
Docs target added to Travis-CI.
-
Documentation formatting issues fixed.
0.1 (2017-08-11)
Initial release.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.