GraphGists

ACME 的网络依赖图

Network Dependency Graph

数据库设置

以下是用于在 Neo4j 中创建 ACME 网络依赖图的完整 Cypher 脚本。这个简单的脚本是我们将稍后进行分析的数据集的完整设置。

ACME 的网络资产清单

以下查询生成一个数据表,快速概述 ACME 的网络基础设施。

MATCH 	(n)
RETURN 	labels(n)[0] as type,
		count(*) as count,
		collect(n.host) as names

查找所有公共网站的直接依赖项

以下查询通过数据模型查找 ACME 所有面向公共互联网的业务Web应用程序。

MATCH 		(website)-[:DEPENDS_ON]->(downstream)
WHERE		website.system = "INTERNET"
RETURN 		website.host as Host,
			collect(downstream.host) as Dependencies
ORDER BY 	Host

查找所有内部网站的直接依赖项

以下查询通过数据模型查找 ACME 所有内部网络的业务网站。

MATCH 		(website)-[:DEPENDS_ON]->(downstream)
WHERE		website.system = "INTRANET"
RETURN 		website.host as Host,
			collect(downstream.host) as Dependencies
ORDER BY 	Host

查找最受依赖的组件

以下查询查找 ACME 网络基础设施中依赖程度最高的组件。不出所料,最受依赖的组件是 SAN(存储区域网络)。

MATCH 		(n)<-[:DEPENDS_ON*]-(dependent)
RETURN 		n.host as Host,
			count(DISTINCT dependent) AS Dependents
ORDER BY 	Dependents DESC
LIMIT 		1

查找业务关键组件的依赖链:CRM

以下查询查找 ACME 的 CRM 应用程序的依赖组件路径(从左到右)。如果 ACME 的 CRM(客户关系管理)应用程序出现故障,将对其业务造成重大影响。如果 CRM 主机名右侧的任何组件发生故障,CRM 应用程序将无法运行。

MATCH 		(dependency)<-[:DEPENDS_ON*]-(dependent)
WITH 		dependency, count(DISTINCT dependent) AS Dependents
ORDER BY 	Dependents DESC
LIMIT		1
WITH		dependency
MATCH 		p=(resource)-[:DEPENDS_ON*]->(dependency)
WHERE		resource.system = "CRM"
RETURN		"[" + head(nodes(p)).host + "]" +
			reduce(s = "", n in tail(nodes(p)) | s + " -> " + "[" + n.host + "]") as Chain

查找业务关键组件的依赖链:ERP

以下查询查找 ACME 的 ERP(企业资源规划)应用程序的依赖组件路径(从左到右)。ERP 应用程序代表了一系列业务资源,专门用于支持 ACME 正在进行的业务活动,包括财务和供应链管理。如果 ACME 的 ERP 应用程序出现故障,将对其业务造成重大影响。如果 ERP 主机名右侧的任何组件发生故障,ERP 应用程序将无法运行。此故障将导致收入受损,因为 ACME 的业务依赖于此系统来开展业务。

MATCH 		(dependency)<-[:DEPENDS_ON*]-(dependent)
WITH 		dependency, count(DISTINCT dependent) AS Dependents
ORDER BY 	Dependents DESC
LIMIT		1
WITH		dependency
MATCH 		p=(resource)-[:DEPENDS_ON*]->(dependency)
WHERE		resource.system = "ERP"
RETURN		"[" + head(nodes(p)).host + "]" +
			reduce(s = "", n in tail(nodes(p)) | s + " -> " + "[" + n.host + "]") as Chain

查找业务关键组件的依赖链:数据仓库

以下查询查找 ACME 的 DW(数据仓库)应用程序的依赖组件路径(从左到右)。DW 应用程序代表了一系列业务智能资源,专门用于支持 ACME 的时间敏感型分析流程。如果 ACME 的 DW 应用程序出现故障,将从技术方面对 ACME 的业务运营造成重大影响。如果 DW 主机名右侧的任何组件发生故障,DW 应用程序将无法运行。此故障将导致面向公众的网站(如电子商务应用程序)无法反映 ACME 的 ERP 应用程序的最新可用数据。

MATCH 		(dependency)<-[:DEPENDS_ON*]-(dependent)
WITH 		dependency, count(DISTINCT dependent) AS Dependents
ORDER BY 	Dependents DESC
LIMIT		1
WITH		dependency
MATCH 		p=(resource)-[:DEPENDS_ON*]->(dependency)
WHERE		resource.system = "DW"
RETURN		"[" + head(nodes(p)).host + "]" +
			reduce(s = "", n in tail(nodes(p)) | s + " -> " + "[" + n.host + "]") as Chain

查找移除网络组件(硬件服务器)的影响

以下查询查找依赖于 ACME 的 HARDWARE-SERVER-3 的应用程序。如果网络管理员计划对服务器进行干预,他必须知道哪些应用程序会受到影响。这样他就可以提前通知应用程序用户。

MATCH (application:Application)-[:DEPENDS_ON*]->(server)
WHERE       server.host = "HARDWARE-SERVER-3"
RETURN  application.type as Type,
        application.host as Host
© . All rights reserved.