前语

我曾经在我的OpenTelemetry系列文章中介绍了运用OpenTelemetry社区供给的一系列工具和来实现可观测性的才能。可是从实际的运用视点来说,每一个环节都不是简略的配置就可以放心在出产环境运用的。包含数据的许多产生后的并发处理,collector的多实例部署,数据的存储问题等等。这些都无法直接在OpenTelemetry社区找到现成的解决方案。关于运用的人来说需求的是一个完整的解决方案,而不是一个一个的开源项目。今天就在这里介绍一个开源的功能监控渠道SigNoz

SigNoz介绍

SigNoz是一个开源的功能监控工具,可以用来监控运用程序。SigNoz运用分布式盯梢取得可见性。

SigNoz在许多地方是根据OpenTelemetry系统的,他的collector是根据OpenTelemetry Collector的,他的客户端采样方法也是根据OpenTelemetry

开源可观测性平台SigNoz

从架构图咱们可以看到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

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

开源可观测性平台SigNoz

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

开源可观测性平台SigNoz

完结登陆:

开源可观测性平台SigNoz

运用

SigNoz系统已经建立完结,现在咱们就可以开始进行运用了。首先咱们需求接入OpenTelemetry的SDK,这个在我的OpenTelemetry系列文章中有提到过,这里就不赘述了。我们可以选用自己的言语匹配的SDK。在此处我运用的是OpenTelemetry Java Instrumentation即Java Agent形式。

我在此运用了两个根据SpringBoot的测验运用:spring-providerspring-receiver。这两个运用只是包含了普通的恳求和OpenFeign恳求。

开源可观测性平台SigNoz
Trace看板中,咱们自定义筛选条件,自定义图标的选项来检查不同维度的Trace数据,在下方的列表页中选择一行点进去会跳转到Trace的详情页,在详情页中可以看到链路的详细调用信息,Span等维度的数据。

开源可观测性平台SigNoz

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

开源可观测性平台SigNoz
在metrics的图表中会有99线,95线等维度。

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

开源可观测性平台SigNoz

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

开源可观测性平台SigNoz

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

开源可观测性平台SigNoz
在这里配置一个Trace的告警需求有如下的三个过程:

  1. 运用数据库查询语句定义度量目标

开源可观测性平台SigNoz
2. 定义告警条件

开源可观测性平台SigNoz
3. 其他告警配置

开源可观测性平台SigNoz

配置结束后保存就可以看到配置的告警了。

开源可观测性平台SigNoz

总结

总的来说相比自己建立OpenTelemetry的整个收集系统,然后分别用jaeger来检查trace,用prometheus来查询metrics,SigNoz整合了TraceMetricsLogging等的一些列的聚合,展示与办理。他是一个可观测系统渠道的集合,有着丰富的才能。在本片中介绍到的只是是他的才能的一部分,有爱好的朋友可以自己去本地装一下体验一下。