「译文」CMDB 最佳实践技术指南 -2- 主流的 CMDB 发现技术

本文最后更新于:2023年2月23日 下午

👉️URL: https://www.device42.com/cmdb-best-practices/cmdb-discovery/

📝Description:

了解用于填充 CMDB 的主流 CMDB 发现技术,从 Ping 和 CMDB 到 SNMP 和 Netflow。

CMDB 发现是识别硬件和软件 IT 基础设施组件的过程。这些组件也被称为配置项(CI),并在配置 管理数据库(CMDB) 中填充相关的属性,如其名称、IP 地址和版本号。

CMDB 发现使用各种自动技术,从服务器、存储、数据库、云资源、应用程序等远程目标收集属性信息。近年来,自动发现的机制已经发展到人工输入信息被认为是最后的手段。

本文将回顾 CMDB 的核心发现概念,并解释为什么大规模 IT 服务管理需要自动发现。

CMDB 发现技术的总结

CMDB 将应用程序和业务流程映射到其底层的硬件和软件组件,以帮助 IT 经理获得上下文的洞察力,帮助他们更有效地执行日常任务。

企业 IT 基础设施包括成千上万的硬件和软件组件,它们的生命周期和关系各不相同,尤其是在考虑到虚拟机、存储、公有云服务和容器时。企业 IT 环境的巨大数量和复杂性推动了 CMDB 发现的持续创新。

下表描述了 12 种常见的 CMDB 发现技术。

12 CMDB 发现技术

CMDB 发现技术 描述
Ping 扫描 基本 ICMP Ping 用于发现 IP 端点,用于使用本表介绍的其他技术进行进一步详细检查。
Domain Name Service (DNS) DNS 反向查询有助于利用 IP 地址发现 IP 终端的名称。
Secure Shell (SSH) SSH 可用于安全地收集来自 Linux 或 Unix 操作系统实例的库存(如 CPU、内存、磁盘)信息。
WMI 当远程访问时,WMI 与 Linux SSH 在发现微软 Windows 操作系统实例的系统清单方面的作用相同。
SNMP SNMP 协议从网络目标收集数据,查询目标上实现的不同 MIB(管理信息库)节点。
Netflow Netflow 捕获节点之间的流量,揭示了整个网络产生的流量背后的应用信息。
NMAP NMAP 是一个用于进行安全审计的免费工具,有助于发现开放的 TCP 端口和运行的服务。
抓包 抓包是一种由软件或硬件设备支持的功能,用于记录和分析网络上传输的 IP 数据包的内容。
IPMI IPMI 标准监控服务器的硬件属性,如电源、固件和温度。
配置自动化工具 诸如 Chef 和 Puppet 等工具,可以自动完成在主机上安装操作系统补丁等任务,是库存和属性的一个有用来源。
应用编程接口 (API) API 可用于收集各种平台的属性,如 AWS、VMware 管理程序、Kubernetes 集群、刀片服务器或存储阵列(即使一些存储供应商依靠 SMI-S 而不是 API)。
Agents 安装在各种操作系统类型上的 Agents 可以收集远程无法获得的库存信息。

在下面的章节中,我们将谈论应用发现的核心概念和用于维护更新 CMDB 的最新技术。

配置项(CI)的例子

配置项是一个用于提供 IT 服务的实体。每个 CI 都有其特点,如分类、类型、属性和其生命周期中的状态。属性包括一个 CI 与其他 CI 的关系,并可能包括只对特定公司有意义的定制属性,如一个 CI 与一个会计成本中心的关联。

有各种类型的 CI,如硬件、软件、架构,甚至是提供 IT 服务所需的文件。下图记录了一个全面的 CMDB 发现工具应该支持的 CI 的类型。

一个 CMDB 发现工具必须包括的典型资产清单

一个 CMDB 发现工具必须包括的典型资产清单

CI 也可以是应用程序,如 SAP、TIBCO 和微软 Exchange 的实例,它们是在数据中心运行的传统应用程序。过去几年中,新的 CI 被添加到列表中,如基于网络的应用程序、微服务、Kubernetes 集群和 PaaS 产品。

常见的 CI 类别有:

  • 硬件和其他计算平台: 硬件 CI 包括服务器、网络设备、计算机、笔记本电脑、机架和其他支持 IT 服务的硬件组件。虚拟机也属于这个类别。公司也开始将远程工作人员使用的计算机作为记录纳入 CMDB,以更有效地管理其安全性和性能。移动设备、键盘和鼠标等外围设备有时也会被记录在 CMDB 中。
  • 软件. 这些 CI 是用来记录公司的软件资产的。它们是安装在操作系统上的工件,并作为一个进程(在 Linux 的情况下)或注册表键(在 Windows 的情况下)被发现。中间件(如 Redis)、数据库(如 MySQL)、网络服务器(如 NGINX)、缓存(如 F5),以及用于应用间消息传递的软件平台实例(如 Kafka)都属于这一类。
  • 公有云. 这些类型的 CI 是用于支持 IT 应用的任何公共云服务。CI 可以包含订阅、虚拟网络、资源组、网络服务器、Kubernetes 实例和微服务。公有云供应商提供超过一百种服务,从存储和数据库到数据分析。这些 CI 由云供应商跟踪,并通过云供应商提供的 API 与联合 CMDB 同步。一个 CMDB 必须与许多云供应商的 API 集成,如 AWS、微软 Azure、谷歌云、甲骨文云、阿里巴巴、DigitalOcean 和其他。
  • 应用. 应用程序可以是自我管理的(如 SAP ERP 的一个实例),也可以是 SaaS 产品(如 Salesforce.com)。它们通常被发现为一个包含配置文件的安装文件夹或一个开放的 TCP 端口。拥有一个应用程序 CI 有助于 IT 部门与托管和访问它所需的基础设施组件建立关系,允许对事件进行关联,并通过其生命周期管理整个应用程序堆栈,以实现安全和一系列其他目的。

CMDB 中的容器该怎么办?

在硬件平台上运行的虚拟机通常被记录为一个 CI,但容器太短暂,无法在 CMDB 中注册。然而,容器协调平台–如 Kubernetes–通常提供一个 API 来发现更适合 CMDB 的非短暂组件,如 Deployment 或 NameSpace。

不同的 CMDB 发现技术的优点和缺点

有很多方法可以发现配置项目和它们的相关属性来填充 CMDB。下表通过解释各自的优势和劣势,深入探讨了常见的 CMDB 发现技术。

CMDB 发现技术的优点和缺点

CMDB 发现技术 描述 优点 缺点
Ping 扫描 基本 ICMP Ping 用于发现 IP 端点,用于使用本表介绍的其他技术进行进一步详细检查。 它是发现部署在任何操作系统上的 CI 的最便宜和最快速的方法,不需要专门的软件,也不需要认证。 一些设备可能不支持 ping 响应或禁用 ping 响应。
一些网段可能无法从中央设备到达。
将设备与 IP 相联系取决于反向 DNS 查询,并与 DNS 的准确性直接相关。
Domain Name Service (DNS) DNS 反向查询有助于利用 IP 地址发现 IP 终端的名称。 DNS 是一种发现网络中设备名称的可靠方法。
DNS 反向查询避免了记忆 IP 地址,并允许 CMDB 用户根据公司建立的直观的命名惯例,以其名称来引用服务器。
DNS 的准确性变得至关重要
Secure Shell (SSH) SSH 可用于安全地收集来自 Linux 或 Unix 操作系统实例的库存(如 CPU、内存、磁盘)信息。 大多数 Linux 设备的发行版都启用了 SSH,所以只要你有连接到系统的凭证,就很容易用于收集数据。
它的扩展性很好,因为它不需要太多的网络带宽。
SSH 只在 Linux 和 Unix 主机上可用,并且需要凭证才能获得访问权。
一些公司可能对允许远程访问关键服务器有顾虑。
WMI 当远程访问时,WMI 与 Linux SSH 在发现微软 Windows 操作系统实例的系统清单方面的作用相同。 Windows 操作系统包括 WMI,它是系统配置信息的真实来源。 你必须配置 Windows 防火墙和用户账户控制(UAC)设置,以允许远程 WMI 访问。
WMI 查询需要凭证才能访问。
SNMP SNMP 协议从网络目标收集数据,查询目标上实现的不同 MIB(管理信息库)节点。 SNMP 标准的实施在不同的供应商和操作系统中是一致的,这使得它成为一种可靠和快速的数据收集方法。 作为一个通用的、开放的协议,SNMP 可能会受到攻击。
只有 SNMP(v3)标准的第三个版本提供了加密功能。
Netflow Netflow 捕获节点之间的流量,揭示了整个网络产生的流量背后的应用信息。 Netflow 标准及其继任者 IP 流信息导出(IPFIX)提供了关于在网络上交互的应用程序数据包的见解,这些数据包是填充 CMDB 的宝贵属性。 Netflow 是计算密集型和带宽密集型的,所以它经常被禁用或在低采样率下使用。
NMAP NMAP 是一个用于进行安全审计的免费工具,有助于发现开放的 TCP 端口和运行的服务。 NMAP 在与其他技术结合使用时效果最好,如 NetFlow 用于转换服务到端口映射信息。 限制性的防火墙规则阻碍了 NMAP 发现端口和服务信息的能力。
NMAP 的发现在许多情况下被认为是最佳猜测,因此必须使用其他技术进一步验证其准确性,如扫描主机配置日志。
抓包 抓包是一种由软件或硬件设备支持的功能,用于记录和分析网络上传输的 IP 数据包的内容。 数据包的有效载荷可以被分析,以精确识别哪些应用程序在进行通信,并将它们映射到端口和 IP 地址。 数据包捕获是资源密集型的,不能在所有网络设备上一直启用。
IPMI IPMI 标准监控服务器的硬件属性,如电源、固件和温度。 IPMI 提供有用的属性来填充 CMDB,如主机的 BIOS 版本和硬件配置。 对于经验不足的 IT 管理员来说,配置 IPMI 可能是一个挑战。
如果配置不正确,IPMI 可能会带来安全漏洞。
配置自动化工具 诸如 Chef 和 Puppet 等工具,可以自动完成在主机上安装操作系统补丁等任务,是库存和属性的一个有用来源。 配置自动化工具包括详细的系统配置信息,如操作系统补丁版本。
存储在其存储库中的信息是可靠的,因为它被经常用于系统配置。
系统管理员不会在其环境中的所有主机上安装配置自动化代理,因此它们最好用于增强其他发现技术。
基于 不可变基础设施 原则设计的现代 容器化 应用程序不使用配置自动化 agent。
应用编程接口 (API) API 可用于收集各种平台的属性,如 AWS、VMware 管理程序、Kubernetes 集群、刀片服务器或存储阵列(即使一些存储供应商依靠 SMI-S 而不是 API)。 API 是软件资产清单和配置属性的丰富来源,在填充 CMDB 时不应该被忽视。
RESTful API 在现代软件产品中很常见,它对数据检索的格式进行了标准化,但没有对查询语言或模式进行标准化。
每个 API 都有不同的 schema,集成工程师必须在查询数据之前学习。
掌握众多的模式会让人不知所措。
CMDB 项目规划者应该选择那些与许多第三方 API 有预建集成的 CMDB 平台。
Agents 安装在各种操作系统类型上的 Agents 可以收集远程无法获得的库存信息。 Agent 可以收集详细的系统信息,如操作系统补丁、磁盘大小、CPU 上运行的进程名称,以及与数据库有活动连接的节点列表。
Agent 通常可以被定制,以收集任何特定于定制应用环境的数据。
Agent 的部署可能是昂贵和耗时的,特别是对于大型企业环境,会给 CMDB 的实施项目增加几个月的时间。
选择一个支持各种操作系统(如 AS 400 和 Solaris)Agent 的 CMDB 供应商,以覆盖传统的应用环境是很重要的。

CMDB 用例

CMDB 支持 ITIL 框架所定义的实践,代表了企业 IT 部门的日常活动。CMDB 使这些实践更有效地执行。以下是这些实践的例子,以及用有效的发现方法填充的 CMDB 所带来的效率提升的例子。

CMDB 用例

ITIL 实践 CMDB 提供的效率提升实例
事件管理 存储在 CMDB 中的关系信息有助于确定当一个组件发生故障时对应用程序的影响。
问题管理 存储在 CMDB 中的属性和关系有助于对重复出现的问题进行根本原因分析。
变更管理 有关 CI 之间关系的信息有助于规划变更,对应用程序的影响最小。
发布管理 支持组件的存储版本号有助于在发布新软件时确定兼容性。
可用性管理 CMDB 通过在故障排除过程中识别应用程序的依赖关系来帮助缩短平均修复时间。

CMDB 发现建议

在为新的 CMDB 的实施发现资产时避免错误,可以节省数周和数月的时间。下面的建议代表了旨在避免常见错误的最佳实践。

使用基于无 Agent 的发现来发现大多数 CI

对于 无 Agent 与有 Agent 的争论,没有一个放之四海而皆准的答案。然而,无 agent 技术的管理费用要低得多,并允许接触到网络中可见的几乎任何类型的设备。无 agent 的方法有助于收集大多数所需的信息,而不需要在项目阶段专门在数百台主机上部署代理。

在无 Agent 不够用的情况下,使用基于 Agent 的发现

虽然无 agent 发现有其优势,但在有些情况下,它不足以满足要求。在这些情况下,基于 agent 的发现是可取的。基于 agent 的发现具有优势的三个最常见的例子是:

  • 当与 CMDB 的网络连接不可用或不可靠时
  • 当一个应用程序由于其关键性而需要更深入的信息时
  • 当企业需要从传统平台或远程工作人员使用的笔记本电脑和桌面上收集信息时。这些设备并不总是在线,这使得没有代理就很难发现它们。

但是,要根据具体情况决定是否使用基于 agent 的发现,并确保可靠性和可视性的好处超过额外的操作开销。

选择一个支持遗留平台的供应商

大多数大型企业都有在不太流行的平台上运行的遗留应用程序。这方面的例子包括运行在大型机、超级计算机上的应用,或运行在 Sun Solaris、HP UX、AS 400 或 FreeBSD 等操作系统上的定制应用。遗留的应用程序通常是最需要在清单中捕获的。请确保选择一个支持正确的供应商组合的 CMDB 工具 或发现技术。

考虑到所有的公有云供应商

选择一种支持多个公有云供应商的发现技术,可以随着时间的推移增加新的云供应商,而不需要改变你的 CMDB 技术。大多数供应商专注于 AWS,但并非所有供应商都完全支持微软 Azure、谷歌云、阿里巴巴、甲骨文云和 Digital Ocean。

利用指纹技术和预设规则发现 CI

CMDB 发现可以根据运行在操作系统上的进程(或服务)和系统的配置来检测运行在操作系统实例上的软件。例如,先进的 CMDB 解决方案会通过使用预设的规则,识别在操作系统实例上运行的服务名称,来检测通过远程 SSH 在 Linux 上运行的 MySQL 实例。这种被称为 " 指纹 " 的技术可以节省无数的时间,并大大降低 CMDB 项目的运营成本。

选择一个具有开放架构的 CMDB

一旦 CI 被发现并存储在 CMDB 中,其他应用程序应将 CMDB 作为真理的来源。配置管理工具,如 Ansible 和 Terraform,可以使用存储在 CMDB 中的应用分组来发现支持一个应用的所有资产。先进的 CMDB 解决方案支持许多集成、开放的 API 和定义明确的查询语言,以使存储在 CMDB 的信息与其他工具同步。

选择一个能够使用多种发现方法和关联数据的 CMDB

CMDB 的关键价值是其配置项目所支持的各种属性。这些属性必须从不同的数据源收集。例如,CMDB 平台必须查询 VMware 平台上的 vSphere REST API 来发现虚拟机(VM)和 VMware 主机之间的关系。然而,关于每个虚拟机上安装的软件的信息来自 SSH 或 WMI。因此,CMDB 平台必须能够唯一地识别每个 CI,并跨多个集成(如 vSphere、SSH、WMI)关联该 CI 的所有可用信息,并为每个配置项目提供一套完整的属性。

总结

ITIL 定义了通过各种流程提供服务的最佳实践,如事件管理、问题管理、请求管理和知识管理。CMDB 是这些流程的核心,是共享支持业务应用服务的可配置基础设施项目信息的通用数据层。CMDB 的有效性和准确性取决于收集基础设施配置的方法和策略,这个过程被称为 CMDB 发现。

一个成功的 CMDB 发现计划需要对十几种技术(如 Ping、SSH、SNMP 和 Agent)、传统平台(如 HP UX 和大型机)和公有云平台(如谷歌云、阿里巴巴和 Oracle 云)的支持。一旦发现 CI 并将其映射到应用程序,CMDB 必须允许通过 API 和查询语言与第三方工具集成。


「译文」CMDB 最佳实践技术指南 -2- 主流的 CMDB 发现技术
https://ewhisper.cn/posts/14433/
作者
东风微鸣
发布于
2023年2月23日
许可协议