平台
Ongrid 发两个平台故事截然不同的二进制。
ongrid(云端 manager)是 Linux + Docker 工作负载。它该住在容器里、 nginx 后面、MySQL 下面。没有一等 Windows 或 macOS 服务端构建。ongrid-edge(edge agent)是单个静态二进制,跑在每台你想观测的主 机上。开箱交叉编译四个目标:Linux 在 amd64 / arm64,macOS 在 amd64 / arm64。生产级安装只在 Linux + systemd;macOS 目标存在是为了开发者迭代 时能在 laptop 上跑 agent。
支持矩阵
| 组件 | linux/amd64 | linux/arm64 | darwin/amd64 | darwin/arm64 | Windows |
|---|---|---|---|---|---|
ongrid(manager 镜像) | yes | tested as build target | no | no | no |
ongrid-edge(二进制,受监管) | yes | yes | dev-only, manual | dev-only, manual | no |
promtail 插件(日志) | yes | yes | no(上游空白) | no(上游空白) | no |
node_exporter 插件(主机指标) | yes | yes | no(上游空白) | no(上游空白) | no |
process-exporter 插件(进程指标) | yes | yes | no(上游空白) | no(上游空白) | no |
otelcol-contrib 插件(链路) | yes | yes | no(未打包) | no(未打包) | no |
四个 edge 交叉编译目标直接从 Makefile 来:
build-edge-linux-amd64
build-edge-linux-arm64
build-edge-darwin-amd64
build-edge-darwin-arm64make build-edge-all 跑四个;make package 出 release tarball,把每个目 标加上仅 Linux 的插件二进制都打进去。
为什么没有 Windows / BSD edge?
agent 本身是纯 Go,能干净编译;空白是插件 bundle。promtail、node_exporter、 process-exporter、otelcol-contrib 在它们上游 release 里只发 Linux artifact。 没有这四个,Logs / Monitor / Traces 面板在 agent 连上后还是空着。我们宁可 不发一半工作的装机,也不抗一个隐藏禁用的平台。
如果你有强烈的 Windows 或 FreeBSD 用例,在 github.com/ongridio/ongrid 开 issue —— 可插拔 bundler 在 ADR-015 下跟踪。
云端要求
能跑 Docker Engine 24+ 和 Docker Compose v2 的地方都能装 manager。我们测:
- Ubuntu 22.04 LTS、24.04 LTS
- Debian 12(bookworm)
- RHEL 9、Rocky Linux 9、AlmaLinux 9
内存下限:4 GB。磁盘下限:20 GB(多数是 Prometheus + Loki 保留期,见 Linux(服务端))。
edge 端要求
官方 curl-pipe 安装器(deploy/install/edge/install.sh)显式只处理 Linux:
if [[ "$OS" != "linux" ]]; then
log_error "only linux is supported by this installer; got: $OS"
exit 1
fi那个安装器落下一个 systemd unit(/etc/systemd/system/ongrid-edge.service), 建一个系统用户 ongrid-edge,通过 systemd 监管 agent 带 Restart=always。 macOS host 仍可手工跑二进制开发 —— 见 macOS(edge dev) —— 但你拿不到监管的服务、journald 日志源、插件 bundle。
选页
- 装 manager?→ Linux(服务端)
- 在真 Linux host 上装 edge agent?→ Linux(edge)
- 在 Mac 上跑 agent 做开发?→ macOS(edge dev)
- 在 Kubernetes 上部署一切?→ Kubernetes
- 离线或私有容器 registry?→ 离线 / 私有化
版本策略
manager 和 agent 共享一个 VERSION 文件(/Users/.../ongrid/VERSION), 作为一个 tarball 发布。比 manager 老的 edge agent 会继续工作:每个 tunnel RPC 都带版本,manager 把未知 reply 字段当零值。比 manager 新的 edge agent 不支持 —— 先升 manager。
升级 讲 staged 交换然后回滚模型(ADR-024)。