Visualizing Heartbeat (HA) managed resource dependencies
This tip explains how to visualize HA managed resources and their dependencies with a graph.
Problem:
I have 2 HASI clusters managing XEN virtual machines as resources and as part of my documentation I wanted to visualize the various resources and their dependencies.
Tools:
heartbeat-2.1.3-0.9
heartbeat-cmpi-2.1.3-0.9
heartbeat-ldirectord-2.1.3-0.9
heartbeat-pils-2.1.3-0.9
heartbeat-stonith-2.1.3-0.9
sles-heartbeat_en-10.1-0.20
yast2-heartbeat-2.13.13-0.3
These are available from standard SLES10 SP2 installation sources.
graphviz-2.6-22.2 is available from SLE10SP2 SDK (Software Development Kit) media or installation source.
Solution:
Heartbeat package includes a tool named “ptest” which is used for testing for instance modified crm (V2) configurations without actually loading them into the cluster.
geeko:~ # rpm -qf /usr/sbin/ptest heartbeat-2.1.3-0.9
Get a full config of your V2 cluster without “lrm” lines:
geeko:~ # cibadmin -Q | grep -v lrm > `hostname`.xml
By removing the lrm_resources tags (grep -v lrm), the tool thinks that nothing is running and shows what it would do to start everything from scratch.
Translate the saved xml file to DOT formatted transition graph:
geeko:~ # ptest -D `hostname`.dot -X `hostname`.xml
Draw a directed graph:
geeko:~ # dot -Tjpg -o `hostname`.jpg `hostname`.dot
There are other utilities available drawing different type of graphs (neato, twopi, circo, fdp), you can get some idea about what they do from the man pages.
Comments
The “-X” in “ptest -D `hostname`.dot -X `hostname`.xml” needs to be lower case (at least in SLES11 SP1).
Despite of that, a non-trivial configuration cannot be visualized:
h01:~ # cibadmin -Q | grep -v lrm >cib.xml
h01:~ # ptest -D foo.dot -x cib.xml
h01:~ # dot -Tjpg -o foo.jpg foo.dot
dot: width (95560 >= 32768) is too large.
Segmentation fault
When using “-Tps” instead, I get a 300kB PostScript file, but that just prints an empty page.