开源可观测性平台SigNoz

前言

我曾经在我的OpenTelemetry系列文章中介绍了使用OpenTelemetry社区提供的一系列工具和来实现可观测性的能力。但是从实际的使用角度来说,每一个环节都不是简单的配置就能够放心在生产环境使用的。包括数据的大量产生后的并发处理,collector的多实例部署,数据的存储问题等等。这些都没法直接在OpenTelemetry社区找到现成的解决方案。对于使用的人来说需要的是一个完整的解决方案,而不是一个一个的开源项目。今天就在这里介绍一个开源的性能监控平台SigNoz

SigNoz介绍

SigNoz是一个开源的性能监控工具,可以用来监控应用程序。SigNoz使用分布式跟踪获得可见性。

SigNoz在很多地方是基于OpenTelemetry体系的,他的collector是基于OpenTelemetry Collector的,他的客户端采样方式也是基于OpenTelemetry

从架构图我们可以看到SigNoz基于OpenTelemetry Collector研发了自己的collector,这个collector可以接收app的数据上报,也能接收OpenTelemetry Collector的二次分发。SigNoz的存储使用的ClickHouse,后端API和告警服务使用的Golang开发,前端则使用的是React

SigNoz使用

为了体验SigNoz提供的能力,我们就先来本地进行一下安装。

本地安装

本地安装有多种方式,但是在此处建议使用docker来进行安装。安装前需要确保3301 4317 4318三个端口是可用的。
首先,执行:

git clone -b main https://github.com/SigNoz/signoz.git && cd signoz/deploy/

signoz项目clone下来并进入deploy目录。

然后执行:

docker-compose -f docker/clickhouse-setup/docker-compose.yaml up -d

安装完成后可以看到如下的一系列镜像:

访问http://localhost:3301/就能够看到页面,之后发起注册

完成登陆:

使用

SigNoz体系已经搭建完成,现在我们就能够开始进行使用了。首先我们需要接入OpenTelemetry的SDK,这个在我的OpenTelemetry系列文章中有提到过,这里就不赘述了。大家可以选用自己的语言匹配的SDK。在此处我使用的是OpenTelemetry Java Instrumentation即Java Agent模式。

我在此使用了两个基于SpringBoot的测试应用:spring-providerspring-receiver。这两个应用仅仅包含了普通的请求和OpenFeign请求。


Trace看板中,我们自定义筛选条件,自定义图标的选项来查看不同维度的Trace数据,在下方的列表页中选择一行点进去会跳转到Trace的详情页,在详情页中可以看到链路的具体调用信息,Span等维度的数据。

Service中找到一个具体的服务进入其详情页就能看到一些Metrics的数据:

在metrics的图表中会有99线,95线等维度。

Logs中可以查看服务的日志信息,目前Logging维度在OpenTelemetry中还未完全的GA,配套的collector等都还在快速迭代中,因此SigNoz的这部分也还是在Beta中。

ServiceMap中可以看到服务的调用图谱

SigNoz也提供了告警的能力,在Alert面板中可以配置不同类型的告警

在这里配置一个Trace的告警需要有如下的三个步骤:

  1. 使用数据库查询语句定义度量指标
  2. 定义告警条件
  3. 其他告警配置

配置完毕后保存就能够看到配置的告警了。

总结

总的来说相比自己搭建OpenTelemetry的整个采集体系,然后分别用jaeger来查看trace,用prometheus来查询metrics,SigNoz整合了TraceMetricsLogging等的一些列的聚合,展示与管理。他是一个可观测体系平台的集合,有着丰富的能力。在本片中介绍到的仅仅是他的能力的一部分,有兴趣的朋友可以自己去本地装一下体验一下。

1.1k 声望
17 粉丝
0 条评论
推荐阅读
Java字节码 - ByteBuddy原理与使用(下)
在应用程序中很多时候都不方便直接修改代码,java agent模式可以不用直接修改应用的代码就能够实现自己的功能。使用ByteBuddy可以让我们很容易构建自己的agent。事实上很多的开源Agent都是借助的ByteBuddy来实现...

骑牛上青山阅读 171

Java8的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...

codecraft32阅读 27.5k评论 1

一文彻底搞懂加密、数字签名和数字证书!
微信搜索🔍「编程指北」,关注这个写干货的程序员,回复「资源」,即可获取后台开发学习路线和书籍来源:个人CS学习网站:[链接]前言这本是 2020 年一个平平无奇的周末,小北在家里刷着 B 站,看着喜欢的 up 主视...

编程指北71阅读 33.7k评论 20

Java11的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...

codecraft28阅读 19.4k评论 3

Java5的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...

codecraft13阅读 21.8k

Java9的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...

codecraft20阅读 15.4k

Java13的新特性
Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java...

codecraft17阅读 11.2k

1.1k 声望
17 粉丝
宣传栏