Configuration of combostatus tool
combostatus(1) uses it's own configuration file, $XYMONHOME/etc/combo.cfg Each line in this file defines a combined test.
Each line of the file defines a new combined test. Blank lines and lines starting with a hash mark (#) are treated as comments and ignored.
The configuration file uses the hostnames and testnames that are already used in your Xymon hosts.cfg file. These are then combined using normal logical operators - "||" for "or", "&&" for "and" etc.
A simple test - e.g. "Web1.http" - results in the value "1" if the "http" test for server "Web1" is green, yellow or clear. It yields the value "0" if it is red, purple or blue.
Apart from the logical operations, you can also do integer arithmetic and comparisons. E.g. the following is valid:
WebCluster.http = (Web1.http + Web2.http + Web3.http) >= 2
This test is green if two or more of the http tests for Web1, Web2 and Web3 are green.
The full range of operators are:
+ Add - Subtract * Multiply / Divide % Modulo | Bit-wise "or" & Bit-wise "and" || Logical "or" && Logical "and" > Greater than < Less than >= Greater than or equal <= Less than or equal == Equal
There is currently no support for a "not" operator. If you need it, use the transcription "(host.test == 0)" instead of "!host.test".
NB: All operators have EQUAL PRECEDENCE. If you need something evaluated in a specific order, use parentheses to group the expressions together.
If the expression comes out as "0", the combined test goes red. If it comes out as non-zero, the combined test is green.
Note: If the expression involves hostnames with a character that is also an operator - e.g. if you have a host "t1-router-newyork.foo.com" with a dash in the hostname - then the operator-character must be escaped with a backslash '\' in the expression, or it will be interpreted as an operator. E.g. like this:
nyc.conn = (t1\-router\-nyc.conn || backup\-router\-nyc.conn)
WebCluster.http = (Web1.http || Web2.http)
AppSrvCluster.procs = (AppSrv1.conn && AppSrv1.procs) || (AppSrv2.conn && AppSrv2.procs)
Customer.cluster = WebCluster.http && AppSrvCluster.procs
The first line defines a new test, with hostname "WebCluster" and the columnname "http". It will be green if the http test on either the "Web1" or the "Web2" server is green.
The second line defines a "procs" test for the "AppSrvCluster" host. Each of the AppSrv1 and AppSrv2 hosts is checked for "conn" (ping) and their "procs" test. On each host, both of these must be green, but the combined test is green if that condition is fulfilled on just one of the hosts.
The third line uses the two first tests to build a "double combined" test, defining a test that shows the overall health of the system.