• signoz 参考架构设计


    参考图

    从下图可以看出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进行系统改造会是一个不错的模式

    参考资料

    https://github.com/open-telemetry/opentelemetry-collector
    https://github.com/SigNoz/signoz

  • 相关阅读:
    treeview(树加载)
    9.SQL存储过程实例详解
    面向对象之封装
    cookie和session
    自定义web框架
    IO多路复用
    协程
    concurrent.futures模块(进程池/线程池)
    死锁与递归锁及信号量等
    并发编程之多线程
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/16089375.html
Copyright © 2020-2023  润新知