watchflare-io/watchflare

GitHub: watchflare-io/watchflare

自托管的主机监控平台,提供实时系统指标采集、软件包清单追踪和阈值告警,支持 Docker 或单一二进制部署。

Stars: 2 | Forks: 0

# Watchflare 自托管服务器监控。提供实时指标、软件包清单和告警功能。支持通过 Docker 部署或作为单一二进制文件运行。 [![发布](https://img.shields.io/github/v/release/watchflare-io/watchflare?label=release)](https://github.com/watchflare-io/watchflare/releases) [![许可证: AGPL-3.0](https://img.shields.io/badge/license-AGPL--3.0-blue)](LICENSE) [![Go](https://img.shields.io/badge/go-1.26+-00ADD8?logo=go&logoColor=white)](https://go.dev) [![Docker 镜像](https://img.shields.io/badge/docker-ghcr.io-2496ED?logo=docker&logoColor=white)](https://github.com/watchflare-io/watchflare/pkgs/container/watchflare)

Watchflare dashboard with global KPIs, package status, alerts, and live charts

Watchflare 实时收集系统指标,维护跨服务器的完整软件包清单,并在超过阈值或主机离线时发送告警。完全自托管:Hub 和数据库运行在您选择的基础设施上。 ``` your-server-1 your-server-2 your-server-3 [ Agent ] [ Agent ] [ Agent ] | | | └──────────────────────┴──────────────────────┘ | gRPC / TLS 1.3 | [ Hub ] dashboard + TimescaleDB ``` ## 为什么选择 Watchflare? - **零依赖部署。** 一个 Go 二进制文件内嵌了整个 Web UI,无需 Nginx 或 Node。反向代理是可选的,但建议用于 HTTPS 终结。 - **灵活的 TLS。** Hub 在首次运行时会生成自己的 PKI,或者您也可以提供来自现有 CA 的证书。Agent 在注册时会固定该 CA。 - **高可用 Agent。** 当无法连接到 Hub 时,预写日志(WAL)会在本地缓存指标,并在重新连接时重放。确保数据无缺失。 - **实时指标。** 主机状态每 5 秒刷新一次,系统指标每 30 秒刷新一次,所有数据均通过 SSE 实时流式传输到仪表板。TimescaleDB 连续聚合功能确保 1 小时、12 小时、24 小时、7 天和 30 天范围内的历史图表保持快速响应。 - **容器指标。** 支持 Docker 和 Podman 运行时的每个容器的 CPU、内存和网络指标。通过 `--containers` 安装标志启用。 - **软件包清单。** 跟踪约 30 种包管理器的已安装软件包,提供每日增量同步、过期检测和安全标记。 - **自托管。** Hub、数据库和 Agent 全部运行在您控制的基础设施上。基于 AGPL-3.0 许可证。 ## 监控内容 | 类别 | 指标 | |----------|---------| | **CPU** | 使用率 %, iowait, steal (虚拟机) | | **内存** | 已用, 可用, buffers, cached | | **Swap** | 已用, 总计 | | **磁盘** | 总计, 已用, 读/写吞吐量 | | **网络** | 入站/出站带宽 | | **温度** | 物理主机上的 CPU 和传感器读数(电池、存储等) | | **系统** | 运行时间, 负载平均值 (1/5/15 分钟), 进程数 | | **容器** | 每个容器的 CPU、内存、网络 (Docker, Podman) | | **软件包** | 已安装的软件包、版本、过期检测(约 30 种包管理器) | ## 截图 ### 主机概览 一目了然地查看每台主机的实时 CPU、内存、磁盘、网络、温度、Agent 版本以及软件包状态(过期 + 安全计数)。 Hosts list with multi-host metrics ### 主机详情 深入查看任意主机的完整系统指标和实时图表。TimescaleDB 连续聚合功能让从 1 小时到 30 天的缩放操作瞬间完成。 Host overview page with live charts ### 软件包清单 跟踪您整个集群中安装的每个软件包。检测约 30 种包管理器(apt、dnf、pacman、brew、npm、pip、cargo 等)的过期版本和安全更新。 Package inventory with outdated and security flags ### 可配置的告警规则 通过简洁的抽屉界面为每台主机设置阈值。包括主机离线、CPU、内存、磁盘使用率等。 Alert rules drawer ## 快速开始 **要求:** Docker 和 Docker Compose v2+。 ``` mkdir watchflare && cd watchflare && \ curl -sSLO https://get.watchflare.io/hub/docker-compose.yml ``` 然后生成三个所需的密钥: ``` printf "POSTGRES_PASSWORD=%s\nJWT_SECRET=%s\nSMTP_ENCRYPTION_KEY=%s\n" \ "$(openssl rand -base64 32)" \ "$(openssl rand -base64 32)" \ "$(openssl rand -base64 32)" > .env ``` 启动技术栈: ``` docker compose up -d ``` 打开 `http://your-host:8080`。首次加载时,您将被重定向以创建管理员帐户。 **二进制安装 (Linux):** 从 [GitHub 发布页面](https://github.com/watchflare-io/watchflare/releases) 下载预构建的二进制文件,并按照[二进制安装指南](https://docs.watchflare.io/hub/binary-install/)进行操作。 ## 安装 Agent 在仪表板中,创建一个主机并复制注册令牌(Token)。然后在目标机器上运行: **Linux:** ``` curl -sSL https://get.watchflare.io | sudo bash -s -- \ --token wf_reg_YOUR_TOKEN \ --host YOUR_HUB_IP \ --port 50051 ``` **macOS (通过 Homebrew):** ``` curl -sSL https://get.watchflare.io/brew | bash -s -- \ --token wf_reg_YOUR_TOKEN \ --host YOUR_HUB_IP \ --port 50051 ``` 安装程序将注册 Agent,写入配置,并启动服务。几秒钟后,该主机将在仪表板中显示为在线状态。 ## 技术栈 | 组件 | 技术 | |-----------|------------| | Hub | Go, Gin, gRPC, GORM | | 前端 | SvelteKit 5, Tailwind CSS v4, uPlot | | 数据库 | PostgreSQL + TimescaleDB | | Agent | Go, gopsutil | | 安全 | TLS 1.3, HMAC-SHA256, JWT, bcrypt | ## 文档 完整文档请访问 **[docs.watchflare.io](https://docs.watchflare.io)** - [架构概览](https://docs.watchflare.io/get-started/architecture/) - [Hub 配置参考](https://docs.watchflare.io/reference/hub-env/) - [Agent 安装 (Linux)](https://docs.watchflare.io/agent/install/linux/) - [Agent 安装 (macOS)](https://docs.watchflare.io/agent/install/macos/) - [告警与通知](https://docs.watchflare.io/monitoring/alerts-notifications/) - [软件包清单](https://docs.watchflare.io/monitoring/packages/) ## 开发 ``` # 1. 仅启动数据库 docker compose -f docker-compose-postgres.yml up -d # 2. Hub (终端 1) cd backend && go run . # 3. Frontend (终端 2) cd frontend && npm install && npm run dev # http://localhost:5173 ``` 复制 `.env.example` 到 `.env`,并将 `POSTGRES_PASSWORD`、`JWT_SECRET` 和 `SMTP_ENCRYPTION_KEY` 设置为随机字符串(使用 `openssl rand -base64 32` 分别生成)。首次启动时,Hub 会重定向您以创建管理员帐户。 查看 [CONTRIBUTING.md](CONTRIBUTING.md) 获取完整的贡献指南。 ## 许可证 [AGPL-3.0](LICENSE)
标签:Docker, EVTX分析, Go, Python工具, Ruby工具, 安全防御评估, 日志审计, 测试用例, 系统指标, 自托管, 请求拦截, 运维监控