Data Assessment using KPIs

KPIs can be used to evaluate landscape components (typically items, but also groups) based on their properties. The result is a status represented by colors (ordinal):

  • UNKNOWN (order 0): status could not be determined
  • GREEN (order 1): everything OK
  • YELLOW (order 2): ignorable warning
  • ORANGE (order 3): warning
  • RED (order 4): error
  • BROWN (order 5): fubar

Built in KPIs

Scaling

This KPI evaluates the scale label and tries to find bottlenecks where providers for many items are down or not scaled.

  • red if 0 as provider for other items
  • yellow if scaled to 0 without relations
  • orange of scaled to 0 as data sink
  • unknown if no label or not a number
  • green if scaled higher than 1
  • yellow if a bottleneck (more than 1 item depends on it)

Lifecycle

This KPI evaluates the lifecycle label for “official” values.

  • PRODUCTION turns the KPI value to GREEN
  • END_OF_LIFE turns it to ORANGE

Other

  • health (examines the health label on items)
  • condition (K8s condition true/false evaluation)

By default all shipped KPIs (Key Performance Indicators) are disabled. Set enabled to true in the config to enable them.

1
2
3
4
5
6
7
8
 identifier: kpi_example

config:
  kpis:
    lifecycle:
      enabled: true
    scaling:
      enabled: true

Custom KPIs

Custom KPIs can be configured in the landscape config using ranges and/or matchers (regular expressions) and applied to everything having labels. In the example below a KPI monthlyCosts is defined, using ranges on the label costs, and the KPI myEval evaluates a label foo.

  • Both ranges (inclusive lower and upper limits) and matchers are separated by semicolon.
  • The displayed message can be customized by a template. The placeholder for the value is ‘%s’.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
 identifier: kpi_example
 name: Using KPIs for data assessment

 config:
   kpis:
     monthlyCosts:
       description: Evaluates the monthly maintenance costs
       label: costs
       messageTemplate: "Monthly costs: $%s"
       ranges:
         GREEN: 0;99.999999
         YELLOW: 100;199.999999
         RED: 200;499.999999
         BROWN: 500;1000000
     myEval:
       description: evaluate the label "foo"
       label: foo
       matches:
         GREEN: "OK;good;nice"
         RED: "BAD;err.*"
     health:
       description: can be overridden

The pet clinic demo uses a custom KPI which evaluates radiation levels. In this simulation a sensor item (see xray group) collects a made up radiation (in mrem) in a label also named radiation. This label is then examined by the custom KPI. See https://github.com/dedica-team/nivio/blob/develop/src/test/resources/example/pet_clinic.yml