Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@peterneubauer
Last active December 21, 2015 00:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save peterneubauer/6221318 to your computer and use it in GitHub Desktop.
Save peterneubauer/6221318 to your computer and use it in GitHub Desktop.

Network Management with Neo4j

Neo4j is often used to model complex graphs in Network Management scenarios. This is a pseudo setup for a network management graph and some sample queries.

CREATE
  (crm {name:"CRM"}),
	(dbvm {name:"Database VM"}),
	(www {name:"Public Website"}),
	(wwwvm {name:"Webserver VM"}),
	(srv1 {name:"Server 1"}),
	(san {name:"SAN"}),
	(srv2 {name:"Server 2"}),

	(crm)-[:DEPENDS_ON]->(dbvm),
	(dbvm)-[:DEPENDS_ON]->(srv2),
	(srv2)-[:DEPENDS_ON]->(san),
	(www)-[:DEPENDS_ON]->(dbvm),
	(www)-[:DEPENDS_ON]->(wwwvm),
	(wwwvm)-[:DEPENDS_ON]->(srv1),
	(srv1)-[:DEPENDS_ON]->(san)

Impact analytics: Server 1 is down - what is affected?

// Server 1 Outage
MATCH (n)<-[:DEPENDS_ON*]-(upstream)
WHERE n.name = "Server 1"
RETURN upstream

Statistics - What depends on the SAN?

// Most depended on component
MATCH (n)<-[:DEPENDS_ON*]-(dependent)
WHERE n.name='SAN'
RETURN n,
count(DISTINCT dependent)
AS dependents
ORDER BY dependents DESC
LIMIT 1

Try for yourself!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment