参考图
从下图可以看出signoz 主要包含的组件
collector 使用了社区的,数据存储基于clickhouse ,对于prometheus 的writer 使用了
query service 处理部分
- prometheus 集成
参考图
直接嵌入了prometheus,使用了prometheus 的remote read 同时基于prometheus 的alert rule 解决报警的问题(需要集成一个alertmanager)
- trace 部分
核心是利用了opentelemetry-collector,基于自己开发的clickhouse metrics writer 解决链路信息记录到clickhouse
一些问题
通过简单的分析signoz 的源码就可以发现,当前开源版本的signoz 包含一些问题
- 集群问题(目前dashboar 使用了本地数据库,sqlite,当然可以调整)
- 直接嵌入prometheus 做为一个嵌入的引擎可能会有查询问题(具体需要通过性能测试下)
- 缺少多租户的支持(当然这部分对于metrics 的处理实际上我们可以调整扩展支持grafan 的minir 以及VictoriaMetrics,trace部分目前还真的不太好处理,可以自己调整)
- 安全上不是很好(缺少完整的安全控制,当然需要自己扩展)
- 目前clickhouse 的write 部分暂时没有开源(当然我们基于协议可以开发自己的)
- 缺少日志处理(当然opentelemetry-collector 依然还在开发中,后续应该会有支持的)
说明
以上是通过阅读源码分析到的,整体signoz并不难,属于一个all-in-one 的架构设计,使用比较简单,但是目前测试以及源码分析上来看大规模使用可能会有点问题,如果后期grafan minir 支持了opentelemetry,我们基于此在结合signoz进行系统改造会是一个不错的模式