「译文」CMDB 最佳实践技术指南 -3-CMDB 应用映射 - 技术原理和最佳实践
本文最后更新于:2024年7月24日 晚上
👉️URL: https://www.device42.com/cmdb-best-practices/cmdb-application-mapping/
📝Description:
了解用于 CMDB 应用映射的必备自动化技术的内部运作以及实施成功项目的最佳实践。
CMDB 应用映射是将存储在配置管理数据库(CMDB)中的软件和硬件资产(也称为配置项(CI))与运行在该环境中的应用程序联系起来的过程。下图是一个简单的例子,在虚拟机上运行的定制业务应用程序,由运行在 Kubernetes 上的 NGINX web server 和安装在专用服务器上的 MySQL 数据库支持。
一个包括 NGINX、Kubernetes、MySQL 和其他配置项目(CI)的 IT 环境图
CMDB 应用映射和 CMDB 发现 帮助企业自动化劳动密集型的 CMDB 实施任务,并简化整个 IT 基础设施的依赖性跟踪。
最常见的方法需要两个步骤。第一步是发现配置项目,如操作系统、应用程序和中间件组件的实例,第二步是利用监测 TCP 和 UDP 通信流等技术发现 IP 端点之间的关系。
一个先进的 CMDB 应用映射工具包括一个资产发现功能和一个依赖性映射组件。一旦这样的工具发现了应用并建立了关系,它就会将数据存储在 CMDB 中,作为与配置项目相关的属性。用户可以访问这些信息,在仪表盘上可视化应用地图,或者通过 API 将属性信息导入支持 IT 实践的第三方工具,如漏洞评估和配置管理。
CMDB 应用映射过程的概述
本文将解释应用映射的工作原理,列出最常见的 CMDB 应用映射技术,讨论它们在 ITIL 流程中的价值,并分享处理新的 CMDB 实施项目的几个行业最佳实践。
CMDB 应用映射说明
CMDB 应用映射技术一般分为三类:
- 基于配置。这一类别使用无 agent 或基于 agent 的技术,使用命令或解析配置文件来收集基于配置参数的洞察力。
- 基于流量。这一类别依赖于 Netflow 等标准,NMAP 等工具,以及抓包等技术。抓包是在硬件或软件设备中实现的功能,旨在获取实际流转中的网络流量,通常是 IP 数据包,并分析它们。
- 基于标签。该类别使用标签来标记资产。 尽管标签往往不是一致地应用于每个 CI,但它们仍然是 CMDB 应用映射过程中必不可少的,并且是映射公有云资产的一种流行方法。
应用程序映射起初可能看起来很复杂。然而,一旦被分解成每种技术的基本机制,这个过程就变得更加直观。
下面,我们以应用映射的抓包方法为例,解释分析网络流量以定义应用映射的步骤。
抓包示例
下图显示了两台主机在网络上的通信。应用映射功能可以通过依靠放置在网络中的硬件设备来捕捉和分析在该网络上传输的 IP 数据包的内容来识别这一流量。
捕获的数据包显示了两个流量终端所使用的源和目的 IP 地址。在我们的例子中,源 IP 地址是 192.1.1.120,而目的 IP 地址是 192.1.2.10。
说明两台主机之间的网络流量和相关抓包的图表。
依赖关系映射程序搜索 CMDB 数据库,根据其 IP 地址属性确定两个相应的 CI。一旦它在 CMDB 中找到 IP 地址,它将把两个终端的主机名识别为 "abc " 和 “xyz”,如上图所示。
抓包还确定了用于该传输的 TCP 端口为 3306 端口,这是 MySQL 的默认端口。考虑到这一点,这个流量的一端很可能是一个 MySQL 数据库实例。
应用映射程序还使用了基于配置的发现技术,在主机上安装了 agent 来收集补充性的见解。在我们的例子中,agent 使用命令 ps aux | grep mysql
来确定 MySQL 在主机 xyz 上运行。在这种情况下,抓包与安装在主机上的 agent 一起工作,以发现额外的信息,并确认 MySQL 正在其中一个端点上运行。
流量的另一个端点是名为 "abc " 的主机,它也依靠 agent 来执行命令systemctl status nginx
,以确认 NGINX 网络服务器安装在其上并运行。
CMDB 应用映射功能现在可以通过关联测量从抓包设备和安装的代 agent 收集的属性信息来说明这两个端点之间的关系,如下图所示。
一个基本的 CMDB 应用映射,包括两个主机(ABC 和 XYZ)和安装在它们上面的应用(NGINX 和 MySQL)。
这张图还没有透露出大量的信息。然而,这是一个 CMDB 应用图的开始,它可以扩展到使用 CMDB 应用图技术和来自 CMDB 的 CI 属性自动发现数百个其他类似的关系。
这个例子发现了两个通过网络通信的主机,但应用映射也可以通过基于配置(相对于基于流量)的技术发现两个 CI 之间更持久的逻辑连接。
例如,考虑一个使用网络安装的存储卷的 Linux 服务器。虽然存储卷在物理上连接到一个网络附加存储(NAS)系统,但它在逻辑上却安装在 Linux 服务器上。CMDB 应用映射功能可以通过 SSH 远程连接到主机并运行 $ sudo fdisk -l
命令来发现这种逻辑关系。
在下一节中,将回顾揭开 CI 之间关系的几种技术。
CMDB 应用映射技术的总结
正如我们前面的例子所解释的,CMDB 发现过程为每个 CI 创建了一个具有尽可能多属性的配置项目清单。
应用映射功能使用各种技术来寻找配置项在物理上或逻辑上连接或通过网络相互通信的证据。
CMDB 应用映射技术
Technique | Type | Description |
---|---|---|
无 Agent | 基于配置 | 远程连接到主机并运行命令以发现其配置 |
基于 Agent | 基于配置 | 在主机上安装一个轻量级程序,以收集无法从远程获得的信息 |
应用编程接口 (API) | 基于配置 | 大多数应用程序和平台都有 API,可以查询到关系信息 |
NetFlow | 基于流量 | 思科公司在 20 世纪 90 年代设计的一个协议,用于记录和存储网络流量记录。 |
NMAP | 基于流量 | 一个用于安全审计的开源工具,扫描主机上的 TCP 端口 |
抓包 | 基于流量 | 捕捉和分析 IP 数据包内容的软件或硬件设备。 |
Tagging | 基于标签 | 在公有云(如 AWS)中托管的 CI 通常附加有标签,可用于应用映射 |
CMDB 应用映射技术说明
IT 组织并不总是使用所有这些 CMDB 应用映射技术。然而,这通常是由于时间和资源的限制。这些技术并不相互排斥。事实上,它们往往是互补的,最好是相互配合部署。
使用多种技术有以下好处:
- 信息的完备性。发现技术在收集依赖关系信息方面可以相互补充。例如,无 agent 的操作系统扫描可能会错过间歇性的连接,而 NetFlow 会捕获 IP 端点之间流动的通信数据包。另一个例子是无 agent 和基于 agent 的发现方法如何相互补充。无 agent 的发现能迅速识别连接到网络的所有实例。Agent 可以用来从笔记本电脑和平板电脑收集信息,这些电脑在无 agent 扫描期间可能是关闭的。
- 信息的准确性 。某些技术是根据标准的假设来推断信息。例如,NMAP 工具扫描主机上开放的 TCP 端口以确定该主机上可能安装的应用程序。通过查找超过 2000 个 TCP 和 UDP 端口的列表以及通常通过这些端口进行通信的应用程序。例如,它将假设 TCP 端口 25 通常与 SMTP 邮件服务器有关。然而,系统管理员可能已经配置了一个不同的应用程序来使用端口 25。最好用第二种技术来确认这个假设,比如在主机上安装一个 agent ,执行
$ lsof -i :25
命令,列出在 25 端口运行的应用程序。一个技术触发了第二个技术,而第二项技术验证了原来的假设。
下面的表格强调了每种技术的优点和缺点。请记住这些 CMDB 应用映射技术并不是相互排斥的。
CMDB 应用映射技术的优点和缺点
技术 | 描述 | 优点 | 缺点 |
---|---|---|---|
无 Agent | 这种技术涉及通过安全连接(Linux 的 SSH 和 Windows 的 Powershell Web Access)远程访问主机,以执行旨在收集信息和运行进程(或服务)以及打开 TCP/UDP 端口信息的命令。 | 它避免了在大型 IT 环境中的所有主机上安装 agent 的开销,从而节省了时间。 它将发现那些由于错误或政策而没有部署 agent 的 IP 端点。 |
不是所有的配置项都可以远程访问。 一些管理部门出于安全考虑,禁止远程访问。 |
基于 Agent | 作为这种方法的一部分,在主机上安装一个轻量级程序,提供对主机上各种可用信息的访问,如配置文件的内容或执行自定义命令的结果。 | Agent 可以从经常关闭的笔记本电脑和平板电脑上收集信息。 他们可以从可能因安全原因而断开连接的服务器上收集信息。 |
在一个有数千台主机的环境中,安装 agent 可能需要几个月的测试和部署。 Agent 很少有 100% 的覆盖率。 Agent 必须支持传统应用环境中的不同类型的操作系统。 |
应用编程接口 (API) | Kubernetes、VMWare 或 NetApp 等基础设施平台以及 SAP 和 Oracle 等应用程序提供了可以远程查询的 API,以收集有关库存和配置的信息。 | API 提供关于环境的最详细的信息。 | 使用 API 将需要软件开发,除非所选择的 CMDB 平台支持与领先的应用程序和基础设施平台的集成。 |
NetFlow | NetFlow 及其最新版本被称为互联网协议流信息 eXport(IPFIX),它捕获在网络上传输的数据包,以提取源和目的 IP 地址和 TCP 或 UDP 端口号以及其他信息。 | 源和目的 TCP 或 UDP 端口号是发现流量端点的相应应用程序的一个重要信息来源。 | NetFlow 有很高的开销,通常以低采样率使用(例如,每 1000 个数据包中捕获一个),这可能会错过短暂的通信流。 |
NMAP | 自 1997 年推出以来,NMAP 的核心是扫描服务器和防火墙的 TCP 或 UDP 端口的工具。打开的端口被映射到应用程序名称上,使用一个超过 2000 个应用程序和相应端口的列表。 | 这是一个免费且稳定的工具,可以快速收集与 CMDB 应用映射高度相关的信息。 | 它通过将 TCP 或 UDP 端口号与应用程序联系起来推断应用程序名称。在管理部门重新配置了端口号的环境中,它可能会提供不正确的应用名称,所以它的输出应该用其他技术来验证。 NMAP 的扫描可能需要很长的时间,而且是 CPU 密集型的,因为它扫描了 1000 多个端口。 |
抓包 | 硬件和软件设备在 IP 数据包穿越网络时进行捕捉,以提取关于流量的有用信息。 | 抓包设备比 NetFlow 提供更多的信息,因为它们分析整个数据包,包括其有效载荷,而不仅仅是数据包的头。 | 如果在 CMDB 项目之前没有部署过设备,实施设备来捕获数据包是一个规模很大的项目。 |
标签 | 大多数公有云鼓励管理员标记他们的资产,这与现代持续交付(CI/CD)和基础设施即代码(Iac)模式相一致。 | 标签是自由形式的键值对,可以包含 CI 信息,如 CI 与部门、团队和应用程序的关系。 | 标签的灵活性也是一个弱点,因为不同的团队通常不一致地使用它们。 标签通常是手动添加的,可能有错别字或丢失。 |
CMDB 应用映射的用例
应用映射通过量化 IT 环境中的硬件、软件和连接,大大增强了 CMDB 的价值。下表列出了一些受益于应用映射的用例。
CMDB Application Mapping Use Cases
用例 | 描述 |
---|---|
数据中心或云迁移 | 迁移组 (move group) 是由相互依赖的 CI 组成的集群,应该作为一个组进行迁移以避免中断。 |
应用现代化 | 重构一个应用程序,首先要发现其所有的依赖关系。 |
IT 自动化 | IT 自动化,如数据库自动升级,可以从识别依赖数据库的应用程序中获益,并且在升级前必须进行测试。 |
安全和监管审计 | 审计通常是按应用程序进行的,这使得依赖关系图对于验证应用程序的支持组件的配置至关重要。 |
财务和预算编制 | 财务经理根据部门的应用需求来分配预算,因此将硬件和软件成本分配给应用程序对于预算编制过程非常重要。 |
兼并和收购 | 并购交易导致应用迁移和合理化,这需要应用地图。 |
性能和安全事件响应 | 故障隔离、根本原因分析和影响分析的过程都依赖于最新的应用地图来帮助排除故障。 |
容量规划 | IT 部门将更多的硬件容量分配给关键任务的应用,这意味着他们必须能够识别影响这些应用的瓶颈。 |
CMDB 应用映射的最佳实践
一个 CMDB 项目的成功取决于其实施策略和 CMDB 平台的功能。下面是与每个类别相关的一些提示。
采用自上而下的方法
IT 企业环境有数千甚至数百万的配置项目。绘制所有的配置项需要几个月的时间,所以最好的做法是确定公司中经济影响最大的任务关键型应用,并首先开始绘制它们。
使用动态而非静态的映射
避免手动映射,因为应用环境不断变化。值得在前期投入时间来实施动态映射技术,这将在几年内获得收益。
确定用例的优先次序
一个 CMDB 支持许多用例,从数据中心迁移和安全管理到法规遵从和财务审计。从对高级管理层最重要的用例开始,有助于确定应用映射技术的优先次序。例如,安全管理会强调端口扫描,而数据中心迁移则需要详细分析通信流,以避免因网络错误配置而造成的中断。
选择一个功能丰富的 CMDB 平台
一个 CMDB 项目的成功主要取决于为实施而选择的供应商所提供的自动发现功能。所选择的平台必须支持完全自动化的 CMDB 发现和应用映射技术,用于所有口味的操作系统、设备类型和公共云服务。
总结
CMDB 应用映射功能可以发现在主机上运行的应用,硬件和软件组件之间的逻辑和物理连接,以及配置项(CI)之间的通信流。
它将这些信息与已经存储在 CMDB 中的 CI 属性进行关联测量,以创建可由其他工具查询或用于可视化和故障排除的依赖关系图。应用地图的准确性取决于为项目选择的 CMDB 工具所支持的自动化功能和平台范围。