PDF reports¶
Preview feature
PDF reports are off by default — menu item, page and API are blocked until a super admin enables the area under Admin → System → Preview features. The area is not yet stable.
Status reports as PDF — generated automatically on a schedule and sent by email, or manually on demand.
PDF reports are part of the Reports feature, included in every edition (/reports → tab PDF Reports, next to SLA Reports). The tab has the sub-tabs Schedules and History.
Report types¶
| Type | Content |
|---|---|
| Executive | Management summary: health score, highlights, availability, incidents, capacity forecasts |
| Technical | additionally SLA detail table, performance charts, capacity, anomalies |
sla |
overall availability, SLA per service, incidents, assessment — selectable via the API only |
Custom templates cannot be uploaded — the types are built into the product.
Scheduled reports¶
New Schedule:
| Field | Meaning |
|---|---|
| Name | "Acme SLA April" |
| Report Type | Executive / Technical |
| Frequency | Daily, Weekly, Monthly, Quarterly, Yearly with day and time — or Custom (cron expression, e.g. 0 8 * * 1 = Mondays at 08:00; weekday 0 and 7 = Sunday) |
| Timezone | pre-filled with the instance timezone (Admin → Notifications → E-mail & Messages), otherwise UTC |
| Recipients (To), CC (optional) | mail addresses |
| Branding | company name, primary colour, footer text |
| Cover Text (optional) | text above the report |
| Enabled | turn the schedule on/off |
Via the API you can additionally set a subset (scope: hosts and/or tags), BCC recipients and a logo. With tags the report contains devices that carry at least one of the tags; combined with hosts, only devices matching both are included. The subset also applies to anomalies and forecasts.
Example (API):
name: "Acme Monthly SLA"
report_type: sla
cron_expression: "0 6 1 * *" # first day of the month at 06:00
scope:
tags: ["customer-acme"]
recipients:
to: ["acme-ops@example.com"]
cc: ["acme-management@example.com"]
timezone: "Europe/Rome"
Manual generation¶
Generate now opens the dialog "Generate Report Now" with the same parameters and Generate & Send. Without recipients the report is only generated, not sent; the PDF is then available for download under History ("Download PDF").
Render pipeline¶
flowchart LR
SCHED[Schedule] --> DATA[Fetch data]
DATA --> HTML[Render HTML]
HTML --> PDF[PDF via WeasyPrint]
PDF --> STORE[Storage]
PDF --> MAIL[Email with attachment]
The PDFs are produced by WeasyPrint (currently version 70) — no headless browser involved. Device and company names from the branding are never interpreted as code.
Logo¶
A custom logo per schedule (PNG/JPG/SVG, max. 2 MB) can currently only be uploaded via the API (POST /api/v1/reports/upload-logo).
Storage¶
Generated PDFs and uploaded logos live on the instance's persistent storage (a dedicated Docker volume) and survive updates. PDFs are kept for 90 days and then cleaned up automatically; the period is fixed. They can be browsed and downloaded under History.
Mail delivery¶
PDF as attachment, body as a short HTML summary with company name/colour from the branding. If no SMTP server is configured, the delivery is marked as failed. Failed deliveries can be sent again under History ("Resend", sends the existing PDF with a short text) or regenerated ("Retry", with the schedule's branding, subset and timezone). Manual generation, resend and retry are recorded in the audit log with their recipients.
Permissions¶
| Permission | Effect |
|---|---|
reports.view |
see schedules and history, download PDFs |
reports.export |
create and edit schedules, generate, upload a logo, resend, retry |
reports.delete |
delete a schedule |
The interface shows the "New Schedule" and "Generate now" buttons to admins only.
Related¶
- SLA reports — availability interactively and as CSV
- Audit log — a separate area, not part of PDF reports