{% macro ago(path) -%} {% set value = igor.database.getValue(path, token) %} {% if value %} {% set value = int(float(igor.database.getValue('igor_timestamp()-igor_timestamp('+path+')', token))) %} {% if value < 60 %} {{value}}s {% else %} {% set value = value // 60 %} {% if value < 60 %} {{value}}m {% else %} {% set value = value // 60 %} {% if value < 60 %} {{value}}h {% else %} {% set value = value // 24 %} {% if value < 60 %} {{value}}d {% else %} {% set value = value // 7 %} {{value}}w {% endif %} {% endif %} {% endif %} {% endif %} {% endif %} {%- endmacro %} {% macro muted(entry) -%} {% set m = igor.database.getValue(entry, token) %} {% if m %} {{igor.database.getValue('igor_dateTime(' + entry + ')', token)}} {% endif %} {%- endmacro %}

Igor System Health

Igor has been running since {{igor.database.getValue('igor_dateTime(/data/services/igor/startTime)', token)}}, and was rebooted {{igor.database.getValue('/data/services/igor/rebootCount', token)}} times during its lifetime.

Exceptional conditions

{% set messages = igor.database.getValues('/data/environment/systemHealth/messages/*', token) %} {% if messages %}

The following exceptional conditions (for services, sensors and actuators) are currently noted:

If have have the correct permissions you can clear all messages. {% else %}

Igor is currently not aware of any exceptional conditions (for services, sensors and actuators).

{% endif %}

Igor selfcheck status

{% set functionalities = igor.database.getElements('/data/status/igor/*', 'get', token) %} {% for s in functionalities %} {% set msg = igor.database.getValue('/data/status/igor/' + s.tagName + '/errorMessage', token) %} {% if msg %} {% else %} {% endif %} {% endfor %}
Functionality Alive? Last Attempt Last Success Last Failure Current Error Ignored until Ignore for:
{{s.tagName}} {{igor.database.getValue('/data/status/igor/' + s.tagName + '/alive', token)}} {{ago('/data/status/igor/' + s.tagName + '/lastActivity')}} {{ago('/data/status/igor/' + s.tagName + '/lastSuccess')}} {{ago('/data/status/igor/' + s.tagName + '/lastFailure')}}{{msg}} {{muted('/data/status/igor/' + s.tagName + '/ignoreErrorUntil')}} 1h 1d 1w 1m

Service status

{% set services = igor.database.getElements('/data/status/services/*', 'get', token) %} {% for s in services %} {% set msg = igor.database.getValue('/data/status/services/' + s.tagName + '/errorMessage', token) %} {% if msg %} {% else %} {% endif %} {% endfor %}
Service Alive? Last Attempt Last Success Last Failure Current Error Ignored until Ignore for:
{{s.tagName}} {{igor.database.getValue('/data/status/services/' + s.tagName + '/alive', token)}} {{ago('/data/status/services/' + s.tagName + '/lastActivity')}} {{ago('/data/status/services/' + s.tagName + '/lastSuccess')}} {{ago('/data/status/services/' + s.tagName + '/lastFailure')}}{{msg}} {{muted('/data/status/services/' + s.tagName + '/ignoreErrorUntil')}} 1h 1d 1w 1m

Sensor status

{% set sensors = igor.database.getElements('/data/status/sensors/*', 'get', token) %} {% for s in sensors %} {% set msg = igor.database.getValue('/data/status/sensors/' + s.tagName + '/errorMessage', token) %} {% if msg %} {% else %} {% endif %} {% endfor %}
Sensor Class Alive? Last Activity Last Success Last Failure Current Error Ignored until Ignore for:
{{s.tagName}} {{igor.database.getValue('/data/status/sensors/' + s.tagName + '/alive', token)}} {{ago('/data/status/sensors/' + s.tagName + '/lastActivity')}} {{ago('/data/status/sensors/' + s.tagName + '/lastSuccess')}} {{ago('/data/status/sensors/' + s.tagName + '/lastFailure')}}{{msg}} {{muted('/data/status/sensors/' + s.tagName + '/ignoreErrorUntil')}} 1h 1d 1w 1m

Device status

{% set devices = igor.database.getElements('/data/status/devices/*', 'get', token) %} {% for s in devices %} {% set msg = igor.database.getValue('/data/status/devices/' + s.tagName + '/errorMessage', token) %} {% if msg %} {% else %} {% endif %} {% endfor %}
Device Alive? Last Activity Last Success Last Failure Current Error Ignored until Ignore for:
{{s.tagName}} {{igor.database.getValue('/data/status/devices/' + s.tagName + '/alive', token)}} {{ago('/data/status/devices/' + s.tagName + '/lastActivity')}} {{ago('/data/status/devices/' + s.tagName + '/lastSuccess')}} {{ago('/data/status/devices/' + s.tagName + '/lastFailure')}}{{msg}} {{muted('/data/status/devices/' + s.tagName + '/ignoreErrorUntil')}} 1h 1d 1w 1m

{% if returnTo %} Return to {{returnTo}}.
{% endif %} Return to Igor homepage