Rust 内核 · Apache-2.0 · 生产可用 Rust core · Apache-2.0 · Production ready

把可观测性
推到离用户最近的地方
Push observability
to where users are

VYQON 把 trace、metric、log 收进同一个内核,编译成单个二进制。冷启动 3ms,常驻内存 18MB,在任何边缘节点上都能跑。 VYQON unifies traces, metrics and logs in one Rust core, shipped as a single binary. 3ms cold start, 18MB resident — it runs on any edge node.

curl -fsSL https://vyqon.me/install.sh | sh
3ms
冷启动
cold start
18MB
常驻内存
RSS
1.2M/s
单核吞吐
per core
0-dep
运行时依赖
runtime deps

// 01

为什么再造一个引擎Why another engine

传统可观测性栈把采集、传输、存储拆成三个进程、四种协议、五份配置。你在中心机房调好的一切,搬到边缘就会因为内存和冷启动而全线崩塌。VYQON 的出发点是:边缘不是数据中心的缩小版。 Classic stacks split collection, transport and storage into three processes, four protocols and five config files. Everything tuned for a central datacenter collapses at the edge on memory and cold start. VYQON starts from one premise: the edge is not a small datacenter.

所以我们把三个职责压进一个内核,用 Rust 写成零依赖二进制:没有 sidecar,没有 agent 编排,没有“先把数据发到中心再想怎么存”。采样、聚合、降维在数据产生的那台机器上就完成。 So we compressed all three into one core and wrote it as a dependency-free Rust binary: no sidecar, no agent orchestration, no “ship everything to the centre and figure out storage later”. Sampling, aggregation and reduction happen on the machine where the data is born.

  • 单二进制,无 libc 之外依赖Single binary, no deps beyond libc
  • OTLP / Prometheus / 自研二进制协议全支持OTLP, Prometheus and a wire-efficient binary protocol
  • 断网时本地 WAL 缓冲,恢复后自动补传Local WAL buffering, automatic replay after a partition
  • 尾部采样在本地完成,省 90% 带宽Tail sampling locally — up to 90% less egress
  • WASM 插件沙箱,扩展无需重编译WASM plugin sandbox, extend without recompiling

// 02

能力Capabilities

Unified Ingest

同一管线吃下 OTLP、Prometheus 抓取与结构化日志,字段自动归一,不用维护三套采集器。One pipeline for OTLP, Prometheus scrapes and structured logs. Fields are normalised automatically — no three collectors to babysit.

Local Sampling

基于规则的头部/尾部采样在本地执行,错误链路 100% 保留,正常链路按预算砍。Rule-driven head and tail sampling runs locally: 100% of error traces kept, healthy traffic trimmed to budget.

Durable Buffer

本地 WAL + 背压感知的重放器。出口断 6 小时,数据一条不丢,也不会把磁盘写爆。A local WAL with a back-pressure aware replayer. Six hours of egress outage loses nothing and never fills the disk.

Query & Alert

内建 PromQL 子集与流式告警规则,规则热加载,不需要额外的 Alertmanager。A PromQL subset plus streaming alert rules, hot-reloaded — no separate Alertmanager.

WASM Plugins

用任意能编译到 WASM 的语言写处理器,沙箱隔离、毫秒级加载,升级不用重启进程。Write processors in any language that targets WASM. Sandboxed, millisecond loads, no process restart to upgrade.

Secure by Default

mTLS 双向认证、按租户的密钥隔离、审计日志。CDN 级默认安全,不用额外加层。Mutual TLS, per-tenant key isolation, audit logging. Secure defaults out of the box rather than an extra layer to bolt on.

// 03

架构Architecture

数据从产生到落地只经过一次内存拷贝。中间任何一段掉线,都不会让上游阻塞。 From producer to storage the data is copied once. Any segment going down never blocks upstream.

  1. 01Producers应用 · 网关 · IoTapps · gateways · IoT
  2. 02VYQON Core解析 · 归一 · 采样parse · normalise · sample
  3. 03WAL本地持久缓冲durable local buffer
  4. 04Shipper压缩 · 批量 · 重放compress · batch · replay
  5. 05Backends对象存储 / 时序库object store / TSDB
vyqon.toml
[[pipeline]]
name   = "edge"
listen = "0.0.0.0:4317"
protocols = ["otlp", "prometheus"]

[pipeline.sample]
mode    = "tail"
keep_on = ["status=error", "duration>500ms"]
budget  = 0.15

[buffer]
wal_dir = "/var/lib/vyqon/wal"
max_size = "2GiB"

[[exporter]]
type = "s3"
bucket = "vyqon-cold"
compress = "zstd"
plugin.rs
#[vyqon::plugin]
fn on_span(mut s: Span) -> Action {
    // 给每条 trace 打上发布标记
    s.tag("release", env!("GIT_SHA"));

    // 内部健康检查不进存储
    if s.name.starts_with("healthz") {
        return Action::Drop;
    }
    Action::Keep(s)
}

// 04

基准Benchmarks

4 vCPU / 8GB 边缘节点,持续注入 1.2M spans/s,对比同机部署的主流采集器。数字越小越好。 4 vCPU / 8GB edge node, 1.2M spans/s sustained, compared against mainstream collectors on identical hardware. Lower is better.

VYQON
18 MB
Collector A
94 MB
Collector B
140 MB
Agent C
210 MB

复现脚本与原始数据在仓库 bench/ 目录,MIT 许可,欢迎自行复测。 Reproduction scripts and raw data live in bench/, MIT licensed. Re-run it yourself.

// 05

快速开始Quickstart

curl -fsSL https://vyqon.me/install.sh | sh
vyqon init --config vyqon.toml
vyqon serve

# 另开一个终端看看数据进来了没
vyqon top
docker run -d --name vyqon \
  -p 4317:4317 -p 4318:4318 \
  -v $PWD/vyqon.toml:/etc/vyqon/vyqon.toml:ro \
  -v vyqon-wal:/var/lib/vyqon/wal \
  ghcr.io/vyqon/vyqon:0.9.4
helm repo add vyqon https://charts.vyqon.me
helm upgrade --install vyqon vyqon/vyqon \
  --namespace observability --create-namespace \
  --set daemonset.enabled=true \
  --set buffer.maxSize=2Gi

// 06

路线图Roadmap

  1. 0.7Rust 内核重写,体积降到 1/6Rust core rewrite, 6× smaller
  2. 0.8尾部采样与 WAL 重放Tail sampling and WAL replay
  3. 0.9WASM 插件沙箱(当前)WASM plugin sandbox (current)
  4. 1.0稳定 API 与 LTS 分支Frozen API and an LTS branch
  5. 1.2分布式查询下推Distributed query pushdown

在你的边缘节点上跑起来Run it on your edge node

curl -fsSL https://vyqon.me/install.sh | sh

Apache-2.0 许可 · 由社区维护 · 不设商业版Apache-2.0 · community maintained · no commercial edition