V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
stardustree
V2EX  ›  程序员

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

  •  
  •   stardustree · 2020-05-18 17:38:16 +08:00 · 1786 次点击
    这是一个创建于 1635 天前的主题,其中的信息可能已经有所发展或是发生改变。

    通过在服务器部署 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 条回复    2020-05-25 16:48:21 +08:00
    zchlwj
        1
    zchlwj  
       2020-05-18 17:46:18 +08:00
    依赖于调用链分析吧?只要你集成了调用链就行。
    或者听云那种。
    molecar
        2
    molecar  
       2020-05-18 17:48:34 +08:00
    了解一下 pinpoint 和 skywalking
    janxin
        3
    janxin  
       2020-05-18 17:56:44 +08:00
    如果你的部署环境不是特别多种多样,做一个适用于自己环境的还是很简单的吧。

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

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

    理论上应用进程之间的依赖基本上通过 TCP 连接都能体现,而进程的名称、参数等也能体现出这个进程采用的技术栈(比如语言、中间件等),有这两方面的基础数据就可以还原出应用的拓扑结构。
    stardustree
        11
    stardustree  
    OP
       2020-05-25 16:48:21 +08:00
    没有熟悉这块儿的小伙伴吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1234 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:06 · PVG 02:06 · LAX 10:06 · JFK 13:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.