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