Sample Formulas for Creating Service Level Indicators (SLIs) | Honeycomb

Sample Formulas for Creating Service Level Indicators (SLIs)

These examples show how to identify the different types of criteria and qualifiers, and resulting formulas when creating a derived column for an SLI.

No Qualifier 

For all events, return true if duration_ms < 1000.

LT($duration_ms, 1000)

Qualifier is trace roots 

A trace root does not have a parent. This SLI returns true for trace roots whose response duration is under 100, false for trace roots whose duration is over 100, and null for non-roots.

IF(
  NOT(EXISTS($trace.parent_id)),
  LT($duration_ms, 100)
)

Criterion is Based on Both Duration and Error 

Our qualifier here is whether request.path is /home. If it is, then this SLI only returns true if both duration_ms is under 100, and there is no error message.

IF(
  EQUALS($request.path, "/home"),
  AND(
    LT($duration_ms, 100),
    NOT(EXISTS($app.error)),
  )
)

Complex Criterion, Complex Qualifier 

The qualifier here is events that hit the “/main” endpoint, using the method post, and are not marked as error code 401.

The criterion is that events must have a status code of 200. In addition, if they are part of a batch, then data processing must have taken less than 5 ms per item.

IF(
  AND(
    EQUALS($request.path, "main"),
    EQUALS($request.method, "POST"),
    NOT(EQUALS($response.status_code, 401))
  ),
  AND(
    EQUALS($response.status_code, 200),
    LT(
      DIV(
        $duration_ms,
        IF($app.batch, $app.batch_total_datapoints, 5)
      ),
      5
    )
  )
)