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

2020-05-18 17:38:16 +08:00
 stardustree

通过在服务器部署 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

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

1795 次点击
所在节点    程序员
11 条回复
zchlwj
2020-05-18 17:46:18 +08:00
依赖于调用链分析吧?只要你集成了调用链就行。
或者听云那种。
molecar
2020-05-18 17:48:34 +08:00
了解一下 pinpoint 和 skywalking
janxin
2020-05-18 17:56:44 +08:00
如果你的部署环境不是特别多种多样,做一个适用于自己环境的还是很简单的吧。

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

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

理论上应用进程之间的依赖基本上通过 TCP 连接都能体现,而进程的名称、参数等也能体现出这个进程采用的技术栈(比如语言、中间件等),有这两方面的基础数据就可以还原出应用的拓扑结构。
stardustree
2020-05-25 16:48:21 +08:00
没有熟悉这块儿的小伙伴吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/672961

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX