Heva-Co/piro

GitHub: Heva-Co/piro

Piro 是一个自托管的企业级状态页、服务可用性监控与事件响应平台,帮助团队在不依赖第三方 SaaS 的前提下全面掌控基础设施的运行状况。

Stars: 0 | Forks: 0

Piro

Piro

Enterprise-grade open-source status page and uptime monitoring

Release Release build CI License Issues

Documentation · Self-Hosting Guide · Report a Bug · Request a Feature

Piro 是一个**自托管的企业级状态页、正常运行时间监控平台和事件响应平台**,专为需要对自身基础设施拥有完全控制权的工程团队而构建。在你自己的服务器上运行它,连接来自任何区域的分布式 worker,并为你的用户提供对各项服务的实时可见性——无需将数据发送给第三方。 该项目由 [Heva](https://heva.co) 开发,并作为开源软件发布,旨在让每个团队都能用上之前仅在昂贵的 SaaS 平台中才有的监控工具。 ## 为什么选择开源? 监控和状态页属于关键基础设施。我们认为团队不应该在供应商锁定和从零开始构建之间做出艰难选择。Piro 是我们为社区做出的贡献——它是一个可直接投入生产、支持自托管的替代方案,可完美替代 StatusPage、Instatus 或 Betterstack,并且完全归你所有。 我们最初是为自己的需求构建了它,并在 Heva 内部运行以监控我们自己的服务。在核心功能达到稳定且完善之后,我们决定将其开源。我们欢迎各种贡献、bug 报告,以及能让软件变得更好的真实反馈。 ## 功能 ### 核心平台 - **多区域监控** — 将轻量级的 worker 部署到任何云平台、本地服务器或裸机设备上。worker 通过 SignalR 反向连接到 API,并且可以跨区域独立进行扩缩容 - **公开状态页** — 完全支持自定义品牌、实时的状态页,包含正常运行时间历史记录、延迟趋势和事件时间线 - **事件管理** — 结构化的事件管理,包含时间线更新、严重级别和手动将告警关联至事件——由你决定何时将一个告警转化为面向客户的事件,而绝不自动转化 - **维护窗口** — 安排维护窗口,并在窗口期间自动发送通知和抑制状态变更 - **配置即代码** — 使用 YAML 定义你整个监控环境的设置,并通过管理面板或 API 导入;对你的可观测性配置进行版本控制 ### 值班与升级 - **值班日程** — 基于 RRULE 的轮班层级,支持换班、感知时区,并以甘特图风格的可视化日历呈现 - **升级策略** — 针对每个服务的策略,包含有序步骤、延迟以及在无人响应后的重新升级;同一个策略可被任意数量的服务重复使用 - **个人值班日历** — 每个用户都能在自己的个人资料中看到即将到来的轮班以及“正在值班”的指示器 - **已验证的通知渠道** — 个人告警渠道(Email、Telegram、通过 Twilio 发送的 SMS、ntfy)在使用其进行寻呼前,需要输入一次性验证码进行确认,这样输入错误绝不会再导致遗漏寻呼 ### 告警 - **灵活的告警规则** — 对状态、延迟或正常运行时间百分比配置阈值,并可通过调整失败/成功阈值来减少噪音 - **个性化、按优先级分发** — 每个值班的用户均可配置自己按优先级排序的通知渠道列表;升级机制会按优先级顺序尝试这些渠道,如果所有配置的渠道均失败,则回退至发送邮件 - **自定义模板** — 每个渠道(Email、Telegram、SMS、Pushover、ntfy 等)均支持基于 Scriban 的消息模板 ### 企业与安全 - **OIDC / SSO** — 支持 Google、Microsoft 或任何标准 OIDC/OAuth2 提供商的单点登录;可强制执行仅限 SSO 登录的策略 - **RBAC** — 包含 Owner、Admin 和 Member 角色,支持基于邮件的邀请;权限模型具备审计就绪能力 - **API 优先** — 完整的 REST API,附带 OpenAPI 3.1 规范;所有的管理操作均支持通过代码以编程方式调用 - **自托管** — 你的数据始终保留在你自己的基础设施上;无需任何强制遥测(可在设置中选择退出) - **品牌定制** — 上传 logo、favicon 和社交预览图;自定义站点名称、URL 和 meta 标签 ### 路线图 以下功能计划在即将发布的版本中推出: - **语音通话告警** — 通过 Twilio Programmable Voice 针对关键事件进行直接电话寻呼,作为现有 SMS 渠道的补充 - **SLA / 正常运行时间报告** — 针对每个服务、每个时间范围导出正常运行时间的 SLA 报告 - **合成事务监控** — 多步骤的 HTTP 序列(登录 → 操作 → 断言),用于端到端检查 - **状态页订阅** — 供最终用户接收事件更新的邮件和 webhook 订阅 - **审计日志** — 为合规需求提供完整的管理员操作审计追踪 - **双重身份验证** — 针对本地账户的基于 TOTP 的 2FA ## 架构 ``` Browser ──▶ nginx (proxy) ──▶ Next.js public status page (apps/web) ──▶ Vite admin panel (apps/admin) ──▶ Piro API (ASP.NET Core 10) ──▶ PostgreSQL │ SignalR ┌────────────┼────────────┐ ▼ ▼ ▼ Worker (EU) Worker (US) Worker (custom) ``` API 可以在进程内执行检查(单区域部署),也可以通过 SignalR 将检查任务分发给独立的 worker 以实现多区域覆盖。worker 是无状态、完全独立的二进制文件——它们接收检查任务,执行 HTTP / DNS / SSL / TCP / 心跳 检查,并实时将结果流式传输回来。 ## Docker 镜像 | 镜像 | 最新版本 | 平台 | |---|---|---| | `ghcr.io/heva-co/piro-api` | `latest` | `linux/amd64`, `linux/arm64` | | `ghcr.io/heva-co/piro-worker` | `latest` | `linux/amd64`, `linux/arm64` | | `ghcr.io/heva-co/piro-web` | `latest` | `linux/amd64` | | `ghcr.io/heva-co/piro-proxy` | `latest` | `linux/amd64` | 针对 Linux、macOS 和 Windows 的预编译二进制文件可在 [Releases](https://github.com/Heva-Co/piro/releases) 页面获取。完全独立,无需额外安装运行时。 → **[自托管指南](https://github.com/Heva-Co/piro/wiki/Self-Hosting)** — Docker Compose 快速入门和完整的配置参考。 ## 安全 请**不要**通过 GitHub issues 报告安全漏洞。请改为发送邮件至 [devops@heva.co](mailto:devops@heva.co)。我们的目标是在 48 小时内回复。 ## 许可证 Piro 是开源软件,基于 [GNU Affero General Public License v3.0](LICENSE) (AGPL-3.0) 发布。 **你可以自由地:**在你自己的基础设施上部署 Piro,在内部使用它,并为内部使用进行私有修改——没有任何发布的义务。 **你不可以:**在未按相同许可协议发布你所作修改的前提下,将 Piro 作为面向第三方的付费或公共托管服务来运营。如果你向他人提供 Piro 服务(无论是否修改过),AGPL 都要求你必须公开你的源代码。 Copyright © 2025 [Heva Inc.](https://heva.co)
Heva 用 ♥ 构建 · devops@heva.co
标签:uptime监控, 测试用例, 状态页, 网络测绘, 自动化攻击, 自托管, 请求拦截, 运维监控