☰
基于 OpenObserve 的轻量级分布式日志存储和追踪方案
2026/10/27 1:17:51 网站建设 项目流程

一、OpenObserve 介绍

OpenObserve是一个基于Rust开发的开源云原生可观察性平台,专为处理海量数据(如日志、指标和追踪数据)而设计,具有高性能、低成本和易用性等特点。

核心功能和特点:

  • 低成本存储: 相比Elasticsearch,OpenObserve的日志存储成本可降低约140倍,显著降低运营成本。
  • 高性能: 专为大规模数据处理而设计,可轻松处理PB级数据量。
  • 易用性: 快速部署,简单配置,几分钟内即可开始使用。
  • 多租户支持: 支持多租户架构。
  • 数据兼容性: 兼容Elasticsearch的摄取和查询API,可无缝迁移。
  • 高级功能: 支持日志搜索、指标监控、分布式追踪、告警、仪表盘等功能。
  • 多种存储选项: 支持S3、MinIO、GCS、Azure Blob等多种存储方式。
  • 丰富的查询语言: 支持SQL和PromQL查询语言,方便数据分析。
  • 用户定义函数: 支持用户自定义摄取和查询函数,增强数据处理能力。

Github 地址:

https://github.com/openobserve/openobserve

官方文档地址:

https://openobserve.ai/docs/

二、部署 OpenObserve

官方提供了多种部署方式,这里使用Docker快速部署:

version:"3.5"services:openobserve:image:public.ecr.aws/zinclabs/openobserve:latestrestart:unless-stoppedenvironment:ZO_ROOT_USER_EMAIL:"root@example.com"ZO_ROOT_USER_PASSWORD:"test123"ports:-"5080:5080"volumes:-./data:/dataprivileged:true

启动服务

docker-composeup-d

浏览器访问:http://ip:5080进入可视化主页,登录邮箱和密码就是上面yml文件配置的信息:

可以在采集下面找到接入时的认证Token:

三、SpringBoot 无侵入接入 OpenObserve

首先新建SpringBoot项目,构建两个测试接口,用于打印日志:

@Slf4j@RestController@RequestMapping("/test")publicclassTestController{@GetMapping("/t1")publicStringtest1(){log.info("t1 触发666");log.error("t1 触发888");return"success";}@GetMapping("/t2")publicStringtest2(){log.info("t2 触发666");log.warn("t2 触发888");return"success";}}

将SpringBoot项目打包为jar包:

mvn clean package

下载OpenObservejavaagent包:

https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/download/v2.6.0/opentelemetry-javaagent.jar

启动jar包,指向该代理:

java-javaagent:./opentelemetry-javaagent.jar-Dotel.exporter.otlp.endpoint=http://127.0.0.1:5080/api/default-Dotel.exporter.otlp.protocol=http/protobuf-Dotel.exporter.otlp.compression=gzip-Dotel.exporter.otlp.headers="Authorization=Basic cm9vdEBleGFtcGxlLmNvbTpzRmNiaW1sUDZ6a0xDVU83,stream-name=oo-test"-jaropenobserve-demo-0.0.1-SNAPSHOT.jar

其中Dotel.exporter.otlp.endpoint需要改为你的OpenObserve服务的地址,同时headers需要添加上述提到的认证Token,stream-name表示服务的名称。

下面多次访问几次测试接口:

打开OpenObserve可视化主页,可以看到有部分数据流进来了:

数据流下可以看到上面启动时指定的服务名称,已经加进来了:

点击右边操作放大镜即可看到接进来的日志了:

可以通过SQL更灵活的查询数据,例如查询所有ERROR级别的日志:

SELECT*FROM"oo_test"whereseverity='ERROR'ORDERBY_timestampDESC

在追踪下也可以看到接口调用的记录:

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询