Skip to main content
Ent Pro
This feature is available as part of the Honeycomb Enterprise and Pro plans.
These examples show how to identify different types of criteria and qualifiers when creating SLIs. Each example includes how to formulate the SLI when using the Build Query mode or the Write Formula mode.

No Qualifier

For all events, return true if duration_ms < 1000.

Build Query

Total (Valid) EventsSuccessful Events
duration_ms < 1000

Write Formula as a Calculated Field

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.

Build Query

Total (Valid) EventsSuccessful Events
trace.parent_id does-not-existduration_ms < 100

Write Formula as a Calculated Field

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.

Build Query

Total (Valid) EventsSuccessful Events
request.path = /homeduration_ms < 100
app.error does-not-exist

Write Formula as a Calculated Field

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.

Build Query

This example is not supported in the Build Query mode because the DIV() and IF() operators are only supported within a calculated field.

Write Formula as a Calculated Field

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