前言在我的OpenTelemetry系列文章中,介绍了使用OpenTelemetry社区提供的一系列工具,实现可观察性。但是从实际使用的角度来看,每个环节都无法通过简单的配置在生产环境中使用。包括大量数据产生后的并发处理,采集器的多实例部署,数据存储问题等等。这些都无法直接在OpenTelemetry社区中找到现成的解决方案。对于使用它的人来说,需要的是一个完整的解决方案,而不是一个个的开源项目。今天就来介绍一下开源的性能监控平台SigNoz。SigNoz简介SigNoz是一个开源的性能监控工具,可用于监控应用程序。SigNoz使用分布式跟踪来提高可见性。SigNoz在很多地方都是基于OpenTelemetry系统的,它的收集器是基于OpenTelemetryCollector的,它的客户端采样方式也是基于OpenTelemetry的。从架构图中可以看出,SigNoz基于OpenTelemetryCollector开发了自己的采集器。此收集器可以接收应用程序数据报告,还可以接收来自OpenTelemetryCollector的二次分发。SigNoz使用ClickHouse进行存储,使用Golang进行后端API和警报服务,以及使用React进行前端。使用SigNoz为了体验SigNoz提供的功能,让我们首先在本地安装它。本地安装本地安装有多种方式,这里推荐使用docker进行安装。安装前需要确保3301、4317、4318这三个端口可用。首先执行:gitclone-bmainhttps://github.com/SigNoz/signoz.git&&cdsignoz/deploy/克隆signoz项目,进入deploy目录。然后执行:docker-compose-fdocker/clickhouse-setup/docker-compose.yamlup-d安装完成后可以看到如下一系列图片:访问http://localhost:3301/可以看到页面,然后Initiateregistrationandcompletelogin:SigNoz系统已经搭建完成,现在我们可以开始使用了。首先,我们需要访问OpenTelemetrySDK。这个在我的OpenTelemetry系列文章中有提到,这里不再赘述。您可以选择与您自己的语言相匹配的SDK。这里我使用的是OpenTelemetryJavaInstrumentation,即JavaAgent模式。我这里使用了两个基于SpringBoot的测试应用:spring-provider和spring-receiver。这两个应用程序只包含普通请求和OpenFeign请求。在Trace看板中,我们自定义筛选条件,自定义图标选项,以不同维度查看Trace数据。在下方列表页面中选中一行,点击跳转到Trace详情页面。在详情页可以看到链接的具体调用信息,Span等维度的数据。从Service中找到一个具体的服务,进入其详情页可以看到一些Metrics数据:metrics图表中会有99行、95行等维度。您可以在Logs中查看该服务的日志信息。目前OpenTelemetry中Logging维度还没有完全GA,配套的收集器还在快速迭代中,所以这部分SigNoz还在Beta阶段。在ServiceMap中可以看到服务的调用图。SigNoz还提供警报功能。可以在警报面板中配置不同类型的警报。在这里,配置Trace警报需要以下三个步骤:使用数据库查询语句来定义指标定义警报条件和其他警报配置。保存配置后,可以看到配置的告警。总结总的来说,相比自己搭建整个OpenTelemetry的采集系统,然后使用jaeger查看traces,prometheus查询metrics,SigNoz集成了Trace、Metrics、Logging等部分列的聚合、展示和管理。它是具有丰富功能的可观察系统平台的集合。本片介绍的只是他能力的一部分,有兴趣的朋友可以去本地安装体验一下。
