OpenObserve:轻量级 Rust 日志系统

2026-05-27 08:47:28

OpenObserve:轻量级 Rust 日志系统

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

一、核心优势

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

二、与 Elasticsearch / Loki 对比

维度ElasticsearchLokiOpenObserve
内存起步4–8 GB~256 MB~100 MB
自带 UIKibana(重)需 Grafana内置
查询语言DSLLogQLSQL
单二进制
告警需配置需 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 仍然不可替代。

八、相关资源

当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »