Cacti - Ajout d'un host et ses graphs en ligne de commande

Publié le 17 décembre 2012 par Crocodanser

Cacti possède un bon nombre de commande permettant de l’administrer. Ces commandes se situent dans le répertoire “cli” de votre installation.

Dans cet article, je vais vous montrer comment ajouter un Hosts et les graphs qui lui sont associés à l’aide de ces commandes.

Pour cela, placez-vous dans votre répertoire “cli”. Pour moi : “/var/www/html/cli”

Création du Host :

Dans cette section, nous allons utiliser la commande “add_device.php”.

Nous voulons ajouter un routeur à Cacti. Voici les caractéristiques de ce routeur :

IP d’admin : 192.168.0.1
Communauté SNMP : public
Nom : Routeur-1
Template d’hôte Cacti : Cisco Router

Pour la commande “add_device.php”, nous avons besoin de l’id du host template. Pour le connaitre, il faut exécuter cette commande :

# php -q add_device.php –list-host-templates
Valid Host Templates: (id, name)
0 None
1 Generic SNMP-enabled Host
3 ucd/net SNMP Host
4 Karlnet Wireless Bridge
5 Cisco Router
6 Netware 4/5 Server
7 Windows 2000/XP Host
8 Local Linux Machine
9 VMware ESX server
10 X MySQL Server HT
11 Windows 2k3
12 Brocade FC Switch Interfaces/Sensors
13 Site web

Nous pouvons voir que l’id du template “Cisco Router” est 5.

A présent, vous pouvez ajouter votre Hosts comme ceci :

# php -q add_device.php –description="Routeur-1" –ip="192.168.0.1" –template=5 –community="public"

Création des graphs pour un host

Maintenant, nous voulons créer un graph pour connaitre la charge de chaque interface active du routeur. Pour cela, nous avons besoin de connaitre :

  • Id du Host
  • Le modèle de graph
  • Le modèle de “Data Query”
  • Le type de données voulu

Récupérer l’identifiant du Host

Lancer la commande :

# php -q add_graphs.php --list-hosts
139   192.168.0.1  5   Router-1
L’identifiant du host est donc 139.
Récupérer le modèle de Graph :

# php -q add_graphs.php –list-graph-templates
Known Graph Templates:(id, name)

2   Interface – Traffic (bits/sec)

3   ucd/net – Available Disk Space

Nous voulons que tous les graphs se basent sur le modèle “Interface - Traffic (bits/sec)”. Donc l’identifiant sera 2.

Récupérer le modèle de “Data Query”

# php -q add_graphs.php –list-snmp-queries
Known SNMP Queries:(id, name)

1   SNMP – Interface Statistics

2   ucd/net -  Get Monitored Partitions

3   Karlnet – Wireless Bridge Statistics

4   Netware – Get Available Volumes

6   Unix – Get Mounted Partitions

7   Netware – Get Processor Information

8   SNMP – Get Mounted Partitions

9   SNMP – Get Processor Information

10   Win Services

11   VMware ESX – Get VM CPU usage

12   VMware ESX – Get VM NIC statistics

13   VMware ESX – Get VM disk statistics

14   VMware ESX – Get VM memory usage

15   ucd/net – Device I/O

16   SNMP – Running Processes

17   Brocade FC Switch Interfaces

18   Brocade FC Switch Sensors

Etant donné que nous voulons la charge sur chaque interface active du router, nous utiliserons la requête SNMP :SNMP – Interface Statistics”. Soit l’identifiant 1.

Récupérer le type de données voulu :

# php -q add_graphs.php –snmp-query-id=1 –list-query-types
Known SNMP Query Types: (id, name)

2   In/Out Errors/Discarded Packets

3   In/Out Non-Unicast Packets

4   In/Out Unicast Packets

9   In/Out Bytes (64-bit Counters)

13   In/Out Bits

14   In/Out Bits (64-bit Counters)

16   In/Out Bytes

20   In/Out Bits with 95th Percentile

21   In/Out Bits with Total Bandwidth

22   In/Out Bytes with Total Bandwidth

Nous voulons la charge en bits/s. Donc l’identifiant du type de données sera 13.

Nous pouvons maintenant créer les graphs pour chaque interface de notre routeur :

php -q add_graphs.php –host-id=139 –graph-type=ds –graph-template-id=2 –snmp-query-id=1 –snmp-query-type-id=13 –snmp-field=ifOperStatus –snmp-value=Up

Pour ne pas créer les graphs pour les interfaces inutilisées, nous avons ajouter les arguments : –snmp-field=ifOperStatus –snmp-value=Up. De ce fait, la commande creera des graphs seulement pour les interfaces ayant la valeur “UP” pour le champ snmp “ifOperStatus”.

Vous pouvez lister les champs Snmp utilisable par cacti à l’aide de la commande :

# php -q add_graphs.php –host-id=132 –list-snmp-fields
Known SNMP Fields for host-id 132: (name)

ifAlias

ifDescr

ifHwAddr

ifIndex

ifIP

ifName

ifOperStatus

ifSpeed

ifType

Ajout du host dans l’arborescence de graph

On liste les arborescences existantes :

# php -q add_tree.php –list-trees
Known Trees:

id   sort method   name

2   Alphabetic Ordering   PARIS

On ajoute le host dans l’arborescence :

php -q add_tree.php –type=node –node-type=host –tree-id=2 –host-id=139

Voilà, vous pouvez visualiser les graphs de votre hosts dans l’interface de Cacti.

Conclusion

Je pense que vous l’avez bien compris. Les commandes cli de Cacti vont nous permettre de gagner un temps considérable dans le cas d’ajout en masse d’un même type d’hosts. Il nous faudra un fichier de type IP|HOSTNAME et une boucle pour réaliser en quelques minutes ce qui nous prendrais des heures par l’interface graphique.


Pour plus d’infos : http://www.cacti.net/downloads/docs/html/scripts.html