您正在查看: Surou 发布的文章

OpenObserve:轻量级 Rust 日志系统

OpenObserve:轻量级 Rust 日志系统

一句话总结:一个二进制、100MB 内存、内置 UI、支持 SQL 查日志,可作为 Elasticsearch / Loki 的轻量替代方案。


一、核心优势

  • Rust 编写:高性能、低内存、无 GC 抖动
  • 单二进制部署:无外部依赖,一个容器即可运行
  • 内置 Web UI:日志查询、仪表盘、告警一体化
  • SQL 查询日志:无需学习 LogQL 或 DSL
  • 自动展平 JSON:嵌套字段可直接 SELECT / WHERE
  • 多存储后端:本地磁盘 / S3 / MinIO / GCS
  • 自动过期清理:按天或大小自动删除旧数据

二、与 Elasticsearch / Loki 对比

维度 Elasticsearch Loki OpenObserve
内存起步 4–8 GB ~256 MB ~100 MB
自带 UI Kibana(重) 需 Grafana 内置
查询语言 DSL LogQL SQL
单二进制 否 是 是
告警 需配置 需 Grafana 内置
部署复杂度 高 中 极低

三、快速部署(Docker)

docker run -d \
  --name openobserve \
  --restart unless-stopped \
  -p 5080:5080 \
  -v /data/openobserve:/data \
  -e ZO_DATA_DIR=/data \
  -e ZO_ROOT_USER_EMAIL=admin@example.com \
  -e ZO_ROOT_USER_PASSWORD=YourPassword \
  public.ecr.aws/zinclabs/openobserve:latest

访问地址:

http://<服务器IP>:5080/web/


四、数据接入(HTTP API)

单条日志

curl -u "admin@example.com:TOKEN" \
  -X POST http://localhost:5080/api/default/default/_json \
  -H "Content-Type: application/json" \
  -d '{
    "message": "用户登录成功",
    "level": "info",
    "service": "web-api"
  }'

批量日志

curl -u "admin@example.com:TOKEN" \
  -X POST http://localhost:5080/api/default/default/_json \
  -H "Content-Type: application/json" \
  -d '[
    {"message": "/api/users", "latency_ms": 45, "status": 200},
    {"message": "DB timeout", "level": "error", "status": 500}
  ]'

五、SQL 查询示例

-- 最近 1 小时错误日志
SELECT *
FROM "default"
WHERE _timestamp > now() - INTERVAL '1 HOUR'
  AND message LIKE '%error%'
ORDER BY _timestamp DESC
LIMIT 100;

-- 每小时请求量统计
SELECT
  date_trunc('hour', _timestamp) AS hour,
  count(*) AS request_count
FROM nginx_logs
GROUP BY hour
ORDER BY hour;

六、常见坑与解决方案

问题 原因 解决方式
数据不过期 WebUI 优先级高于环境变量 在 UI 中设置或检查变量名
401 错误 Ingestion Token 不等于 Query Token 使用 JWT 或查询 Token
镜像拉取失败 ECR 访问受限 使用 Docker 镜像加速
磁盘写满 默认保留 10 年 设置 ZO_DATA_RETENTION_DAYS
中文乱码 非 UTF-8 编码 推送时强制使用 UTF-8

七、适用场景

  • 1–2 台服务器
  • 不想维护 Grafana 全家桶
  • 熟悉 SQL,不愿学习 LogQL
  • 需要快速可用的日志系统

若重度依赖 LogQL 流式实时分析,Loki 仍然不可替代。


八、相关资源

Easytier 一款简单、去中心化的网状 VPN,支持 WireGuard

官网:https://easytier.cn/
github: https://github.com/EasyTier/Easytier

特征

核心功能

  • 去中心化:节点平等且独立,无需中心化服务
  • 易于使用:可通过网页、客户端和命令行进行多种操作
  • 跨平台:支持 Windows/MacOS/Linux/FreeBSD/Android 以及 X86/ARM/MIPS 架构
  • 安全:采用 AES-GCM 或 WireGuard 加密,防止中间人攻击

高级功能

  • 高效的 NAT 穿越:支持 UDP 和 IPv6 穿越,适用于 NAT4-NAT4 网络
  • 子网代理:节点可以共享子网,供其他节点访问。
  • 智能路由:延迟优先级和自动路由选择,带来最佳网络体验
  • 高性能:全程零拷贝,支持 TCP/UDP/WSS/WG 协议

网络优化

  • UDP 抗丢包能力:KCP/QUIC 代理可优化高丢包环境下的延迟和带宽
  • Web 管理:通过 Web 界面轻松配置和监控
  • 零配置:使用静态链接可执行文件进行简单部署