Skip to content

SLA reports

Preview feature

SLA reports (part of Reports) are off by default — menu entry, page and API are locked until a super admin enables the area under Admin → System → Preview features. The area is not stable yet.

How available was a check in a given period? /reports (default SLA tab).

Definition

Availability (%) = OK time ÷ monitored time × 100

What counts as available: exclusively time with status OK.

What counts as an outage:

  • WARNING and CRITICAL time (weighted the same — there's no option to exclude WARNING from the calculation)
  • NO_DATA time (agent/collector offline) — always counted as an outage

What drops out of the calculation entirely (counted neither as an outage nor as availability):

  • Time inside an active, planned downtime — this is fixed and not configurable
  • ACK phases still count as an outage — ACK is just a notification pause, not "the world was OK"

View

/reportsSLA:

Element Meaning
Period a day-range slider or a custom start/end
Tenant selection multi-select (super admin: cross-tenant; otherwise automatically limited to your own scope)
SLA target a freely settable comparison value (default 99.9%) — purely visual, not stored or validated
Exclusions individual hosts/checks can be removed from the view client-side, e.g. for a sample report

Output: a table with availability per row, expandable down to host level.

Example output

Tenant Acme — April 2026
─────────────────────────────────────────────────────────────────
Service                       Available   Downtime
api.acme.com / HTTP             99.92%     00:32h
api.acme.com / TLS cert        100.00%     -
db01.acme.local / Postgres     100.00%     -
sw-core / IF Gi1/0/1            99.45%     03:58h
sw-core / IF Gi1/0/2           100.00%     -
─────────────────────────────────────────────────────────────────
Tenant total                    99.83%     04:30h

Calculation

flowchart LR
    CR[check_results] --> RATIO[OK share per check]
    DT[active downtimes] --> EXCL[Exclude time]
    SH[state_history] --> ND[NO_DATA seconds]
    RATIO --> CALC[Availability %]
    EXCL --> CALC
    ND --> CALC

Endpoints

Endpoint Scope
GET /api/v1/services/{service_id}/sla a single check, regular tenant access
GET /api/v1/tenants/{tenant_id}/sla-report all checks of a tenant, regular tenant access
GET /api/v1/sla-report cross-tenant, super admin only

Period via start/end parameters, default the last 30 days.

Export

Format For
Browser view interactive, with exclusions
CSV generated client-side from the loaded view (UTF-8 with BOM, Excel-friendly)
PDF a separate route via PDF reports with report_type: sla

There's no dedicated server-side export endpoint for the SLA view — CSV is produced directly in the browser from the numbers already loaded.

Scheduled SLA PDFs

A monthly SLA PDF per tenant can be scheduled under PDF reports with report_type: sla — auto-generated and emailed.

Multiple SLA targets

When different checks have different expectations ("API: 99.9%, wiki: 99.0%"), use tags and filter the view separately per tag — the SLA target field is only a visual comparison value.

Next

  • PDF reports — the distribution workflow for SLA as PDF
  • Downtimes — how maintenance windows drop out of the calculation