Skip to content

Conditions DSL ​

Conditions are simple expressions evaluated after each check. All conditions in a monitor must pass for the check to be considered successful.

Syntax ​

[VARIABLE] OPERATOR value
  • Variable — a bracketed keyword identifying what to check
  • Operator — ==, !=, <, >, <=, >=
  • Value — a string, number, or boolean

Variables ​

[STATUS] ​

HTTP status code as an integer. Only available on HTTP monitors.

yaml
conditions:
  - "[STATUS] == 200"
  - "[STATUS] < 400"
  - "[STATUS] != 503"

[RESPONSE_TIME] ​

Time in milliseconds from sending the request to receiving the response.

Available on both HTTP and TCP monitors.

yaml
conditions:
  - "[RESPONSE_TIME] < 500"
  - "[RESPONSE_TIME] < 2000"

[BODY] ​

Raw response body as a string (HTTP monitors only).

yaml
conditions:
  - "[BODY] == ok"

[BODY].path.to.field ​

JSON dot-path into the response body. UpSlim parses the body as JSON and extracts the value at the given path.

yaml
conditions:
  - "[BODY].status == healthy"
  - "[BODY].db.connected == true"
  - "[BODY].version == 1.0.0"

TIP

The response body is only read if at least one condition references [BODY]. This avoids unnecessary memory allocation for large responses.

[CONNECTED] ​

Whether the TCP connection was established successfully. Only available on TCP monitors.

yaml
conditions:
  - "[CONNECTED] == true"

Operators ​

OperatorDescription
==Equals
!=Not equals
<Less than
>Greater than
<=Less than or equal
>=Greater than or equal

Comparison operators (<, >, <=, >=) work on numbers. Equality operators work on strings, numbers, and booleans.

Multiple conditions ​

All conditions must pass. If any condition fails, the check is marked as failed and the failure reason reports which condition failed.

yaml
conditions:
  - "[STATUS] == 200"         # must pass
  - "[RESPONSE_TIME] < 500"  # must pass
  - "[BODY].ok == true"       # must pass

Failure log example:

WARN  Check FAILED monitor=api response_time_ms=612 reason=Some("[RESPONSE_TIME] < 500: got '612'")

Examples ​

HTTP health endpoint returning JSON ​

yaml
- name: api
  type: http
  url: "https://api.example.com/health"
  conditions:
    - "[STATUS] == 200"
    - "[RESPONSE_TIME] < 1000"
    - "[BODY].status == healthy"

HTTP with auth header ​

yaml
- name: internal-api
  type: http
  url: "https://internal.example.com/status"
  headers:
    Authorization: "Bearer ${API_TOKEN}"
  conditions:
    - "[STATUS] == 200"
    - "[BODY].ready == true"

TCP database check ​

yaml
- name: postgres
  type: tcp
  host: "db.internal"
  port: 5432
  timeout: 3s
  conditions:
    - "[CONNECTED] == true"
    - "[RESPONSE_TIME] < 100"

Released under the MIT License.