区块链中文技术社区

OpenObserve:轻量级 Rust 日志系统

OpenObserve:轻量级 Rust 日志系统

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

一、核心优势


二、与 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

七、适用场景

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

八、相关资源

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »