meerkat-dashboard/meerkat

Dashboard / check behaviour for soft and hard states

s2156945 opened this issue · 2 comments

Is your feature request related to a problem? Please describe.
Icinga has a feature around "soft" and "hard" states. This is for a reason, e.g. don't wake me up for transient conditions

Currently meerkat displays "soft" states

Describe the solution you'd like

My order of preference; 1 is by far the most important

  1. installation-level choice of hard/soft state
  2. dashboard-level choice of hard/soft state (installation level turn off/on?)
  3. element-level choice of hard/soft state (installation level turn off/on + dashboard level turn on/off?)
  4. more nuanced display of hard/soft state, e.g. if the hard state is OK but the soft state is critical
    i. green fading right to red; OR
    ii. outline border around green background for cards;
  5. different alert sounds for soft and hard states
  6. choice of nuanced behaviours at each level like 1/2/3

If all 6 were implemented then at each level the choices for look could be:

  • soft: (current behaviour) soft states are displayed on the dashboard
  • hard: only hard states are displayed on the dashboard
  • fade: the hard state color is on the left, fading to the soft state colour on the right
  • outline: the hard state color is used for the fill, the soft state colour is used for the border for cards/svgs/lines
  • flash: flash between hard state (long) and soft state (short) e.g. 2 seconds / 1 second or 2.5 seconds 0.5 seconds
  • blur: items with a soft state have a gaussian blur
  • (other)

Choices for sound:

  • soft: (current behaviour) make sounds for soft changes
  • hard: only make sounds for hard state change
  • quiet: make quieter sounds for soft state changes
  • fast: pitch and speed change the sounds for soft changes
  • individual: have different sounds for the soft and hard transitions
  • (other)

more nuanced display of hard/soft state, e.g. if the hard state is OK but the soft state is critical

Hard and soft states aren't separate states Icinga holds for a host/service, rather it an extra value on top of the current host/service state;

A host/service that is current critical is critical, on top of this it is either soft OR hard.

A first step for this feature set would be a drop down value (defaulting to global/dashboard default) for SOFT or HARD that only changes the state based on the appropriate threshold.

check_attempt and max_check_attempts are part of host/service attributes, not the last_check_result so aren't available to event streams.
There is a another var in the check_result of event streams vars_after.state_type that may relate to SOFT/HARD state.
vars_after.attempt also exists in event streams, if we want to determine SOFT/HARD state and nothing else contains the data we need a option could be a make a api call and cache the max_check_attempts and then compare the event vars_after.attempt value to that.