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 an SLI derived column.

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
    )
  )
)

Did you find what you were looking for?