• 请不要在回答技术问题时复制粘贴 AI 生成的内容
stardustree
V2EX  ›  程序员

有什么开源软件可以自动发现软件系统架构?

  •  
  •   stardustree · May 18, 2020 · 2437 views
    This topic created in 2212 days ago, the information mentioned may be changed or developed.

    通过在服务器部署 Agent 之类的方式,自动发现服务器上运行的应用进程和中间件,并建立进程间的关联关系,最终自动形成整个软件的系统架构。 有没有什么开源项目是做这方面的?

    有一些商业的软件在做这方面,比如阿里云的 AHAS ( https://help.aliyun.com/document_detail/97583.html?spm=a2c4g.11186623.6.559.54354589PlHwwd ),ServiceNow 的( https://www.servicenow.com/products/service-mapping.html

    这个东西对于运维还是很有帮助的,毕竟不是所有的项目都有清晰的架构图,也不是所有的人都能清晰的了解软件架构,项目多了之后人工的去维护架构信息也不太现实。

    11 replies    2020-05-25 16:48:21 +08:00
    zchlwj
        1
    zchlwj  
       May 18, 2020
    依赖于调用链分析吧?只要你集成了调用链就行。
    或者听云那种。
    molecar
        2
    molecar  
       May 18, 2020
    了解一下 pinpoint 和 skywalking
    janxin
        3
    janxin  
       May 18, 2020
    如果你的部署环境不是特别多种多样,做一个适用于自己环境的还是很简单的吧。

    服务 agent 收集对应的进程、端口和连接信息,最后检查一下即可。基础服务分析可以使用第三方软件快速分析识别,其他的则可以通过映射对应。

    这种画出来只有连接图,一些业务关系还是需要人工介入的。
    Laimf
        4
    Laimf  
       May 18, 2020
    APM
    stardustree
        5
    stardustree  
    OP
       May 19, 2020
    @zchlwj 这个和 APM 是有区别的,APM 由于原理限制,兼容性很差,很多语言和中间件支持的都不太好。而且 APM 对应用的嵌入是很深的,容易影响应用正常运行,是一种很重的监控方式,并不适合大面积推广。大部分运维场景下,其实不太需要 APM 详细的 trace 数据,只是需要动态的更新架构信息,这就需要一些更加轻量级,侵入性更低的方案。
    stardustree
        6
    stardustree  
    OP
       May 19, 2020
    @molecar @Laimf 这个和 APM 是有区别的,APM 由于原理限制,兼容性很差,很多语言和中间件支持的都不太好。而且 APM 对应用的嵌入是很深的,容易影响应用正常运行,是一种很重的监控方式,并不适合大面积推广。大部分运维场景下,其实不太需要 APM 详细的 trace 数据,只是需要动态的更新架构信息,这就需要一些更加轻量级,侵入性更低的方案。
    stardustree
        7
    stardustree  
    OP
       May 19, 2020
    @janxin 环境很杂,有非常多的项目,各种买来的商业产品和供应商开发的项目。
    molecar
        8
    molecar  
       May 19, 2020
    @stardustree 用 CMDB 进行关联关系配置生成拓扑关系吧。先采集所有配置。
    stardustree
        9
    stardustree  
    OP
       May 20, 2020
    @molecar 现在的 CMDB 基本都得手动配置这些信息,效率和准确性都很低,serviceNow 直接自动的就把这些关联关系发现了,看着非常黑科技,所以想了解下这方面具体用的什么技术。
    stardustree
        10
    stardustree  
    OP
       May 20, 2020
    个人研究过相关领域的 APM 和 NPM
    APM 兼容性很差,对应用的侵入性也很重,不适合大面积推广
    NPM 需要专门的硬件设备去解析网络包,这个领域主要都是商业产品,也不太想考虑,还是想寻找一些轻量的技术手段。

    理论上应用进程之间的依赖基本上通过 TCP 连接都能体现,而进程的名称、参数等也能体现出这个进程采用的技术栈(比如语言、中间件等),有这两方面的基础数据就可以还原出应用的拓扑结构。
    stardustree
        11
    stardustree  
    OP
       May 25, 2020
    没有熟悉这块儿的小伙伴吗?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5191 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 55ms · UTC 09:27 · PVG 17:27 · LAX 02:27 · JFK 05:27
    ♥ Do have faith in what you're doing.