通过在服务器部署 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 )
这个东西对于运维还是很有帮助的,毕竟不是所有的项目都有清晰的架构图,也不是所有的人都能清晰的了解软件架构,项目多了之后人工的去维护架构信息也不太现实。
1
zchlwj 2020-05-18 17:46:18 +08:00
依赖于调用链分析吧?只要你集成了调用链就行。
或者听云那种。 |
2
molecar 2020-05-18 17:48:34 +08:00
了解一下 pinpoint 和 skywalking
|
3
janxin 2020-05-18 17:56:44 +08:00
如果你的部署环境不是特别多种多样,做一个适用于自己环境的还是很简单的吧。
服务 agent 收集对应的进程、端口和连接信息,最后检查一下即可。基础服务分析可以使用第三方软件快速分析识别,其他的则可以通过映射对应。 这种画出来只有连接图,一些业务关系还是需要人工介入的。 |
4
Laimf 2020-05-18 17:58:25 +08:00
APM
|
5
stardustree OP @zchlwj 这个和 APM 是有区别的,APM 由于原理限制,兼容性很差,很多语言和中间件支持的都不太好。而且 APM 对应用的嵌入是很深的,容易影响应用正常运行,是一种很重的监控方式,并不适合大面积推广。大部分运维场景下,其实不太需要 APM 详细的 trace 数据,只是需要动态的更新架构信息,这就需要一些更加轻量级,侵入性更低的方案。
|
6
stardustree OP |
7
stardustree OP @janxin 环境很杂,有非常多的项目,各种买来的商业产品和供应商开发的项目。
|
8
molecar 2020-05-19 19:46:04 +08:00
@stardustree 用 CMDB 进行关联关系配置生成拓扑关系吧。先采集所有配置。
|
9
stardustree OP @molecar 现在的 CMDB 基本都得手动配置这些信息,效率和准确性都很低,serviceNow 直接自动的就把这些关联关系发现了,看着非常黑科技,所以想了解下这方面具体用的什么技术。
|
10
stardustree OP 个人研究过相关领域的 APM 和 NPM
APM 兼容性很差,对应用的侵入性也很重,不适合大面积推广 NPM 需要专门的硬件设备去解析网络包,这个领域主要都是商业产品,也不太想考虑,还是想寻找一些轻量的技术手段。 理论上应用进程之间的依赖基本上通过 TCP 连接都能体现,而进程的名称、参数等也能体现出这个进程采用的技术栈(比如语言、中间件等),有这两方面的基础数据就可以还原出应用的拓扑结构。 |
11
stardustree OP 没有熟悉这块儿的小伙伴吗?
|