IT 服务图谱
1. 简介
中大型组织必须支持、运营和维护庞大且复杂的 IT 环境,这些环境涉及数百甚至数千个内部和外部客户服务。这些环境高度复杂,在 IT 基础设施、软件、服务、客户、服务水平、供应商等之间存在大量依赖关系。企业通常使用各种应用程序来收集和维护这些环境信息以支持日常运营。然而,这些解决方案往往只专注于 IT 环境中上述实体的一小部分,实体之间重要的关联即便存在,也难以查询或获取。
2. 应用场景
服务停机可能给组织带来严重问题及关键业务故障,范围涵盖公司声誉和/或信誉受损,直至关键创收应用程序停机导致的营收损失。
因此,在中大型企业中,了解所有关系及可能的停机成本至关重要。通过监控和分析基础设施、软件、服务和用户/客户之间的关系,企业能够识别其 IT 服务领域中最关键的实体,并采取行动增强这些部分的韧性,从而降低故障风险。这将有助于提高正常运行时间,并在发生故障时减少对公司创收服务的负面影响。
简介中提到的应用程序处理了分析 IT 服务环境所需的大部分数据。尽管如此,数据分散在 CMDB、服务监控工具、案例管理系统以及通常由内部编写的应用程序等多个存储库中。因并购而不断壮大的公司,其 IT 服务运营面临着由更多不同解决方案带来的额外复杂性。
3. 解决方案
Neo4j 是一种先进的图数据库,在连接来自各种数据源的数据以实现业务价值方面非常有效。IT 服务知识图谱将极大地支持 IT 组织分析和理解此类环境中基础设施、服务、软件、客户、SLA 及许多其他实体的复杂图景。
3.1. 图数据库如何提供帮助?
实施 Neo4j 有助于执行以前无法实现的分析。场景示例如下:
-
服务链分析:Neo4j 支持高效的链路分析,以探索 IT 环境中相互关联的对象之间的连接。它能提供从用户/客户到运行该服务的服务器实例所在位置(机架)的完整服务链信息,以及中间所有连接的对象,如服务、软件、数据存储、合同信息和客户属性。
-
服务影响分析与模拟:对服务影响进行分析或模拟,从不同角度展示服务故障可能造成的损害,例如服务中断、软件问题/漏洞或服务器故障,以及停机可能带来的相关成本。
-
实时性:Neo4j 还支持对服务故障及其影响进行实时分析,包括当前营收损失的根源分析。它还使公司能够利用额外的缓解策略来扩展知识图谱,以支持服务人员的工作。
4. 建模
本节将展示 IT 服务图谱上的 Cypher 查询示例。其目的是说明查询的样子,并为如何在实际环境中构建数据提供指南。我们将通过一个包含若干节点的小型图谱来进行演示。示例图谱将基于以下数据模型:
4.1. 数据模型
4.1.1. 所需字段
以下是开始所需的字段
Server(服务器)节点
-
name:包含服务器/虚拟机或容器的名称。它在所有服务器对象中必须是唯一的。
Datacenter(数据中心)节点
-
dcName:托管Server/VM/Container的数据中心。它也应该是一个唯一的名称。
Section/Room(分区/机房)节点
-
name:包含位于Datacenter内的分区或机房名称。
Rack(机架)节点
-
rackName:包含部署在相关Section或Room中的机架名称。
Software(软件)节点
-
swName:包含安装在相关Server/VM/Container上的软件名称。
Service(服务)节点
-
serviceName:包含使用该Software并在特定Server上运行的服务的名称。
Customer(客户)节点
-
customerName:包含使用该Service的客户名称。
以上是开始查询图谱所需的最低限度信息。
4.2. 演示数据
以下 Cypher 语句将在 Neo4j 数据库中创建示例图:
// Create customer node
CREATE (n1:Customer {customerName: "Michael", customerDept: "Dev-03-12", customerImportance: 9})
// Create service node
CREATE (n2:Service {serviceName: "MyAura", serviceOwner: "MDL"})
// Create software node
CREATE (n3:Software {swName: "GraphDB", swVersion: 5.19, lastUpdated: "2024-04-28", swVendor: "Neo4j Corp."})
// Create server node
CREATE (n0:Server {assetNumber: "123-4567-89021", name: "svr-dev-235", fristSeen: "2023-06-23", leaseEnd: "2026-06-22"})
// Create datacenter node
CREATE (n4:Datacenter {dcName: "DCBRU01", dcCity: "Brussels", dcGeoLocation: ""})
// Create section node with both labels
CREATE (n5:Section {name: "sec-034-225", geoLocation: ""})
// Create rack node
CREATE (n6:Rack {geoLocation: "", rackName: "rk-002-234", freeUnits: 12})
// Create relationships between customer -> service -> software & server -> service and software
CREATE (n1)<-[:USED_BY {since: "2023-01-27"}]-(n2)<-[:DELIVERS]-(n3)
CREATE (n0)-[:RUNS {since: "2023-01-24", serviceSLA: 8}]->(n2)
CREATE (n3)-[:INSTALLED_ON]->(n0)
// Create relationship chain between server -> dc -> section/room -> rack
CREATE (n0)-[:LOCATED_IN]->(n4)
CREATE (n4)-[:IN_SECTION]->(n5)-[:IN_RACK]->(n6)
5. Cypher 查询
5.1. 识别提供各种服务的软件
在此查询中,我们将识别提供各种服务的软件以及使用该服务的客户。
Software 节点应连接到同一个 Service 节点。遍历过程中应用了关系的方向。
以下查询返回由客户使用的软件所提供的所有路径。
// Match all service delivering a service used by customers
MATCH path=(:Software)-[:DELIVERS]->(:Service)-[:USED_BY]->(:Customer)
RETURN path;
它也可以按各种属性进行过滤,例如按软件名称。
// Match all service delivering a service used by customer for software GraphDB
MATCH path=(:Software {swName: 'GraphDB'})-[:DELIVERS]->(:Service)-[:USED_BY]->(:Customer)
RETURN path;
进一步地,还可以轻松包含运行这些服务的服务器,以了解服务器宕机带来的影响。
// Match a complete service chain for the software GraphDB
MATCH path=(:Rack)<-[:IN_RACK]-(:Section)<-[:IN_SECTION]-(:Datacenter)<-[:LOCATED_IN]-(:Server)<-[:INSTALLED_ON]-(:Software {swName: 'GraphDB'})-[:DELIVERS]->(:Service)-[:USED_BY]->(:Customer)
RETURN path
5.2. 识别特定软件的完整服务链
此查询可用于识别完整的服务链,从 Customer 一直到托管运行特定服务(如 "GraphDB" 软件)的服务器的 Rack。
-
Customer节点应使用同一个Service节点。 -
Service节点应在同一个Software节点上运行。 -
Software节点应安装在同一个Server节点上。 -
Server节点运行在数据中心Section或Room中,并安装在位于该特定位置的Rack中。
遍历过程中应用了关系的方向以实现更快的查询响应。
// Match a complete service chain
MATCH path=(:Rack)<-[:IN_RACK]-(:Section)<-[:IN_SECTION]-(:Datacenter)<-[:LOCATED_IN]-(:Server)<-[:INSTALLED_ON]-(:Software {swName: 'GraphDB'})-[:DELIVERS]->(:Service)-[:USED_BY]->(:Customer)
RETURN path;
6. 进一步扩展 IT 服务图谱
6.1. 添加额外数据
上述 IT 服务图谱示例包含与组织相关的信息。对其进行扩展非常简单,只需向节点添加属性即可,例如用于估算收入影响的“每小时收入损失”信息,或关于各对象本身的额外信息。添加服务器、服务或软件的合同和成本信息,将增强监控或分析更复杂问题的能力,并为与业务运行相关的服务周围的所有相关信息提供答案。
6.2. 添加主数据管理等用例
成熟的 IT 服务知识图谱 (KG) 将为您提供许多提高服务成熟度的可能性。尽管如此,进一步提升图谱认知仍大有裨益。以下两个选项可能最为直观:
-
主数据管理 (MDM):MDM 可以是图谱中任何类型的数据,从价格主数据到涉及服务器、软件和服务操作所需权限的人员访问信息。将此类数据添加到 IT 服务知识图谱中将进一步增强视图,并能回答诸如“Marco 从部门 A 调到部门 D,他需要哪些服务/软件/数据等,以及他的权限列表中需要移除什么”之类的问题。
-
人员档案信息:在图谱中拥有人员档案和经验信息,或将其作为单独的知识图谱,可以帮助了解哪些人具备操作 IT 领域中服务、服务器、网络和其他对象的经验或认证。这还有助于开发维持稳定运营所需的技能,防止知识流失,并为员工提供职业成长路径。
进一步构建 IT 服务图谱的可能性还有很多,但重要的是从小处着手,在完成基础工作后再逐步扩展。