Graphs in Operations
blog.lusis.org
blog.lusis.org
A first step might be to simply visualize the relationships in question. I have used GraphViz (http://graphviz.org/) to this end for a number of situations (internal corporate projects).
I think the challenge is that the relationships (edges) of the graph do not all necessarily represent the same types of dependencies. Some would result in compile time errors, some run time errors, some would cripple a system, and some have little practical effect. I do like the idea of a simple declarative system representing a dependencies between components as a graph though.
For an easy-ish overview, check out: -- edit -- this was the wrong set of slides... These are dense.
http://www.cl.cam.ac.uk/archive/rm135/Bigraphs-Lectures.pdf
The easy ones are here: http://lcs.ios.ac.cn/lectures/bigraphs-tutorial.pdf
I've personally been very big on trend graphs myself, how are we doing today v's yesterday, this week v's last week. I find you learn a lot more from these than you do any other type of monitoring (unless the issue is dead simple, like something is down)
We've been focused right now on making great monitoring systems, however we're just starting to get the chance to step into prevention. Prevention is a fun area because it starts to include trending.
My hope is that within the next month or two we have a few things. Firstly a means of providing a great downtime prevention tool, but also an end point where data can be sent (or we can pull it on your schedule) and then provide a graph and notifications based on changes in the trending data. Think of it like stock alerts...
So yep...i agree with you, we need graphing and more of it.
Unfortunately, the author is pretty vague about exactly what pieces of infrastructure they imagine defining relationships between, and what triggers they might use. On the smaller side, they mention 'I changed a config, I must restart nginx' (micro level dependency between nginx and its config) and 'something changed in my app tier, need to tell my load balancer' (macro-level dependency between a service and its front-end). What kind of dependencies would be useful to define between services in a service oriented architecture, which are usually designed so as to minimize dependencies?
Here is a example of monitoring for a fire in a room, and how one handles it -- similar concepts can be applied to infrastructure components as well ) -- http://blog.athico.com/2009/03/drools-quick-start-stateful-k...