-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Arael Espinosa edited this page Apr 23, 2026
·
4 revisions
Piro is an open-source, self-hosted status page and uptime monitoring platform. It lets you track the health of your services, notify your team when things go wrong, and keep your users informed through a public status page.
- HTTP checks — monitor endpoints with configurable expected status codes, keywords, and response time thresholds
- TCP checks — verify that a port is open and accepting connections
- Ping checks — ICMP ping with latency tracking
- DNS checks — validate DNS resolution and record values
- SSL checks — track certificate validity and expiry
- Deploy remote workers (
Piro.Worker) in different regions — each runs checks independently and reports back - Multi-region checks fan out to all connected workers; results are aggregated (worst-status wins)
- The API itself can act as a local worker via
PIRO_API_WORKER=true - Workers report their version and heartbeat in real time
- Configurable alert configs per check: thresholds for failure/recovery, severity levels
- Triggers: Email, Webhook, Slack, Telegram — attach triggers to individual checks or globally
- Incident management — auto-create incidents from alerts, track resolution
- Public-facing status page showing service health at a glance
- Maintenance windows — schedule downtime and suppress alerts
- YAML import — define your entire monitoring setup as code and import it
- API keys — authenticate external integrations
- Serilog structured logging — persisted to PostgreSQL, visible in the admin UI
-
OpenAPI 3.1 spec at
/openapi/v1.jsonwith Swagger UI at/swagger - Real-time admin UI via SignalR — Workers page updates instantly on connect/disconnect
┌─────────────────────────────────────┐
│ Piro.Api (ASP.NET Core) │
│ REST API · SignalR Hubs · Quartz │
│ PostgreSQL (EF Core) · Serilog │
└────────────┬──────────┬─────────────┘
│ │ SignalR /hub/worker
┌────────┘ └──────────────────────┐
│ In-process │
│ (PIRO_API_WORKER=true) ┌────────┴────────┐
│ │ Piro.Worker │
│ │ (remote agent) │
└─────────────────────────────────┴─────────────────┘
↑ both feed into MultiRegionBatchTracker
┌──────────────────────────────┐
│ SvelteKit Frontend │
│ Admin UI · Public status │
│ SignalR /hub/admin (RT) │
└──────────────────────────────┘