Add Items to a Tree

Now, that we've created some nice graphs, they should be put the graph trees. This is done using add_tree.php. As you will notice soon, it is possible to even add header items, hosts and graphs to a tree as well as adding a new tree itself. But let us first see the help output. Calling the script with the parameter --help yields

shell>php -q add_tree.php --help

Add Tree Script 1.0, Copyright 2004-2013 - The Cacti Group

A simple command line utility to add objects to a tree in Cacti

usage: add_tree.php  --type=[tree|node] [type-options] [--quiet]

Tree options:
    --name=[Tree Name]
    --sort-method=[manual|alpha|natural|numeric]

Node options:
    --node-type=[header|host|graph]
    --tree-id=[ID]
    [--parent-node=[ID] [Node Type Options]]

Header node options:
    --name=[Name]

Host node options:
    --host-id=[ID]
    [--host-group-style=[1|2]]
    (host group styles:
     1 = Graph Template,
     2 = Data Query Index)

Graph node options:
    --graph-id=[ID]
    [--rra-id=[ID]]

List Options:
    --list-hosts
    --list-trees
    --list-nodes --tree-id=[ID]
    --list-rras
    --list-graphs --host-id=[ID]

List Hosts

The first try is dedicated to the list option --list-hosts. It goes like

shell>php -q add_tree.php --list-hosts

Known Hosts: (id, hostname, template, description)
1       127.0.0.1       	8       Localhost
2       gandalf 		3       gandalf
...
11      router.mydomain.com	3       Device Add Test

List Trees

Now, let us --list-trees. It goes like

shell>php -q add_tree.php --list-trees

Known Trees:
id      sort method                     name
1       Manual Ordering (No Sorting)    Default Tree

List Nodes

Listing all existend node of a given tree is done by

shell>php -q add_tree.php --list-nodes --tree-id=1

Known Tree Nodes:
type    id      text
Host    7       127.0.0.1       Graph Template
Host    9       gandalf 	Graph Template
Host    12      gandalf 	Graph Template

List RRAs

For special tree add options, you will require the id of the RRA definition to completly specify the add request. That's why the corresponding --list-rras option is implemented. It goes this way

shell>php -q add_tree.php --list-rras

Known RRAs:
id      steps   rows    timespan        name
1       1       600     86400           Daily (5 Minute Average)
2       6       700     604800          Weekly (30 Minute Average)
3       24      775     2678400         Monthly (2 Hour Average)
4       288     797     33053184        Yearly (1 Day Average)

List Graphs for given Hosts

To be able to add a Graph, the id of that very graph is required. Thus, a --list-graphs --host-id=[id] option was implemented

shell>php -q add_tree.php --list-graphs --host-id=1

Known Host Graphs: (id, name, template)
1       Localhost - Memory Usage        	Linux - Memory Usage
2       Localhost - Load Average        	Unix - Load Average
3       Localhost - Logged in Users     	Unix - Logged in Users
4       Localhost - Processes   		Unix - Processes
5       Localhost - Traffic - eth0      	Interface - Traffic (bits/sec, 95th Percentile)
33      Localhost - Used Space - Memory Buffers Host MIB - Available Disk Space
34      Localhost - Used Space - Real Memory    Host MIB - Available Disk Space
35      Localhost - Used Space - Swap Space     Host MIB - Available Disk Space
36      Localhost - Used Space - /      	Host MIB - Available Disk Space
37      Localhost - Used Space - /sys   	Host MIB - Available Disk Space
38      Localhost - Used Space - /boot  	Host MIB - Available Disk Space

Add a new Tree

Cacti comes with a single tree, named Default Tree. Console entry Graph Trees is used to add more trees. With add_tree.php, you may now do so from command line as well:

shell>php -q add_tree.php --type=tree --name="Test Tree Add" --sort-method=manual

Tree Created - tree-id: (6)

Verify this from console, Graph Trees to find

Default Tree
Test Tree Add

as expected.

Add a new Header Node to a Tree

Now, that a new tree has been created, you may want to add a new header to that very tree. Use

shell>php -q add_tree.php --type=node --node-type=header --tree-id=6 --name="Header Test"

Added Node node-id: (21)

You will want to save the id returned if willing to add further nodes to exactly this new Header Node

Please pay attention, that it is currently not possible to add another header with the same options even if this is possible from console

But it is possible to add a subheader to an already defined header. Even in this case, the name has to be unique

shell>php -q add_tree.php --type=node --node-type=header --tree-id=6 --parent-node=21  --name="SubHeader Test"

Added Node node-id: (22)

Add a new Host Node to a Tree

We will distinguish several options adding a host to a tree. First, let's add a Host directly to a tree. For this example, we use the tree id returned from adding our own Test Tree Add known with id=6

shell>php -q add_tree.php --type=node --node-type=host --tree-id=6 --host-id=1

Added Node node-id: (23)

As no --parent-node was given, this host is directly added to the tree itself. If you wish to add a host to a (sub)header, please specify as follows

shell>php -q add_tree.php --type=node --node-type=host --tree-id=6 --parent-node=21 --host-id=1

Added Node node-id: (24)

Both example come without a --host-group-style option. For those cases, Graph Template host group style is default. Here's an example for providing a host group option of Data Query Index instead

shell>php -q add_tree.php --type=node --node-type=host --tree-id=6 --parent-node=22 --host-id=1 --host-group-style=2

Added Node node-id: (25)

Add a new Graph Node to a Tree

Like above, instead of hosts it is possible to add a single graph to a tree or a (sub)header of any tree. Of course, you again will require the id of the tree and optionally of the header. This results in

shell>php -q add_tree.php --type=node --node-type=graph --tree-id=6 --graph-id=5

Added Node node-id: (26)

Like above, this graph now was added directly to the tree itself. To add a graph to a header, proceed as follows

shell>php -q add_tree.php --type=node --node-type=graph --tree-id=6 --parent-node=21 --graph-id=5

Added Node node-id: (27)

In both cases, no explicit --rra-id was given. This will default to the Daily (5 Minute Average). Specify any other --rra-id as given

shell>php -q add_tree.php --type=node --node-type=graph --tree-id=6 --parent-node=21 --graph-id=1 --rra-id=4

Added Node node-id: (28)

to provide the --rra-id for a rra of Yearly (1 Day Average).