Skip to content
Amol Dighe
Go back

Cacti Setup & Graphing

Edit page

I am using Cacti for creating graphs for cpu, memory, load average and network traffic for various private cloud nodes. We have multiple cloud environment and have 200+ node for each cloud. Due to the large number of nodes, its time consuming to discover each node in Cacti dashboard and configure graph through dashboard. Below is my solution to setup Cacti nodes, discover them and create graphs for same.

sudo apt-get install cacti cacti-spine rrdtool

Cacti dashboard should be available on the server IP.

In our infrastructure we have different type of nodes like - compute, controller, storage. We also have a config node which has salt installed. Each of this type further having multiple nodes e.g. compute1, compute2… controller1, controller2… The below for loop along with salt will allow to execute commands on all nodes of different type of node e.g.

for i in compute-nodes controller-nodes storage-nodes ; do salt “$i*” cmd.run “lsb_release -a”; done

OR we can take one type of node and execute command using salt from config node.

salt ‘cpu*’ cmd.run ‘apt-get uppubDate:’

salt ‘cpu*’ cmd.run ‘apt-get install snmp snmpd smistrip —dry-run’

salt ‘cpu*’ cmd.run ‘apt-get install snmp snmpd smistrip -y’

salt ‘cpu*’ cmd.run ‘service snmpd stop’

salt ‘cpu*’ cmd.run ‘service snmpd status’

salt ‘cpu*’ cmd.run ‘apt-get install libsnmp-dev -y’

salt ‘cpu*’ cmd.run ‘net-snmp-config —create-snmpv3-user -ro -A clouddevops jiocloudservices’

salt-cp ‘cpu*’ /home/amold/snmpd.conf /etc/snmp/

salt ‘cpu*’ cmd.run ‘service snmpd start’

iptables -I INPUT -p udp -m udp —dport 161 -j ACCEPT

iptables -I INPUT -p udp -m udp —dport 162 -j ACCEPT

iptables-save > /etc/iptables/rules.v4

Login to cacti server, to add the clients Hostname and Host IP to cacti dashboard.

Get the list of client hostname & host IP address in a file in following format :

clientnode1 192.168.0.1

clientnode2 192.168.0.2

clientnode3 192.168.0.3

Run below command to fetch the hostname - IP from file and add to cacti dashboard by piping to shell

less /tmp/control-nodes | awk ‘{print “sudo php -q /usr/share/cacti/cli/add_device.php —description=” $1 ” —ip=“$2 ” —avail=snmp —template=9 —community=jiocloudservices”}’ | sh

This should add the host to cacti dashboard and assign a unique id, which will be used for addition of graphs for cpu, memory, load and interface.

bash ./cacti-cpu-mem-graph.sh host-id-list-file

OR

List the id’s for all the hosts added to cacti in the earlier step, use the below command

sudo php -q /usr/share/cacti/cli/add_graphs.php —list-hosts

List graph template to be used

sudo php -q /usr/share/cacti/cli/add_graphs.php —list-graph-templates

Use the below comands for genarating graphs for cpu, load average, memory using the above graph templates

sudo php -q /usr/share/cacti/cli/add_graphs.php —host-id=host-id —graph-template-id=40 —graph-type=cg

sudo php -q /usr/share/cacti/cli/add_graphs.php —host-id=host-id —graph-template-id=41 —graph-type=cg

sudo php -q /usr/share/cacti/cli/add_graphs.php —host-id=host-id —graph-template-id=42 —graph-type=cg

bash ./cacti-interface-graph.sh host-id-list-file

OR

List the snmp queries to be used while adding graphs for interface

sudo php -q /usr/share/cacti/cli/add_graphs.php —list-snmp-queries

List the snmp field type for interface graphing

sudo php -q /usr/share/cacti/cli/add_graphs.php —host-id=47 —list-snmp-fields

List all the interfaces with IP

sudo php -q /usr/share/cacti/cli/add_graphs.php —host-id=47 —snmp-field=ifIP —list-snmp-values

Add interface graph creation to Cacti dashboard

sudo php -q /usr/share/cacti/cli/add_graphs.php —host-id=47 —snmp-query-id=1 —snmp-query-type-id=13 —snmp-field=ifIP —snmp-value=10.144.166.171 —graph-template-id=2 —graph-type=ds

sudo php -q /usr/share/cacti/cli/add_graphs.php —host-id=47 —snmp-query-id=1 —snmp-query-type-id=13 —snmp-field=ifIP —snmp-value=192.168.0.120 —graph-template-id=2 —graph-type=ds

sudo php -q /usr/share/cacti/cli/add_graphs.php —host-id=47 —snmp-query-id=1 —snmp-query-type-id=13 —snmp-field=ifIP —snmp-value=192.168.2.171 —graph-template-id=2 —graph-type=ds

sudo php -q /usr/share/cacti/cli/add_graphs.php —host-id=47 —snmp-query-id=1 —snmp-query-type-id=13 —snmp-field=ifIP —snmp-value=192.168.4.171 —graph-template-id=2 —graph-type=ds


Edit page
Share this post:

Previous Post
Exploring Ubuntu Process Startups
Next Post
Kali Linux on Cloud