Network monitoring system written in Python and Django, designed to be extensible, programmable, scalable and easy to use by end users: once the system is configured, monitoring checks, alerts and metric collection happens automatically.
Disabling a check for any metric which is listed in OPENWISP_MONITORING_CRITICAL_DEVICE_METRICS (by defaults lists only ping), should put the device in unkown status.
If we don't do this, the device will show its status as "ok", even though ping checks are not performed anymore, and hence the system cannot be sure the device is really reachable. This will be confusing.
We shall add a data migration which can fix this retroactively for checks which have been already disabled.
Here's more details about how this should be implemented:
In the device page, there's a "Checks" tab, from which ping checks can be disabled (remove the "active" flag and save).
Checks can be also deleted, I think we should listen also for this kind of signal.
We shall add a receiver function which listens to the change and delete signals of Check
The receiver shall evaluate the check to see whether this is a cheeck for one of the metrics listed in OPENWISP_MONITORING_CRITICAL_DEVICE_METRICS, if not, it shall return without doing anything, otherwise it proceeds
The next step is to get the device and flag its status to Unknown.
Disabling a check for any metric which is listed in
OPENWISP_MONITORING_CRITICAL_DEVICE_METRICS
(by defaults lists only ping), should put the device in unkown status.If we don't do this, the device will show its status as "ok", even though ping checks are not performed anymore, and hence the system cannot be sure the device is really reachable. This will be confusing.
We shall add a data migration which can fix this retroactively for checks which have been already disabled.
Here's more details about how this should be implemented:
Check
OPENWISP_MONITORING_CRITICAL_DEVICE_METRICS
, if not, it shall return without doing anything, otherwise it proceeds