Script - Ajout de graphes dans Cacti

Ce script permet de créer ou d'ajouter des graphes de même type pour des hosts identiques de manière simple.

Dans notre cas, les hosts sont des équipements CISCO. Il s’agit de créer des graphes d’interfaces pour toutes les interfaces (interface physique et interface vlan) d'un parc d'équipement CISCO.

Attention : Avant d’exécuter le script, vérifier les arguments suivants de [ /usr/bin/php add_graphs.php ] dans la deuxième partie du script :

  • --graph-type=ds : Pour la création d’un graphe à valeur cumulée → type compteur d’interface
  • --graph-template-id=40 : Pour le type de « graph template »
  • --host-id=$0 : L’ID de l’host dans Cacti
  • --snmp-query-id=1 : Pour le type du SNMP query
  • --snmp-query-type-id=28
  • --snmp-field=ifName
  • --snmp-value=$2
  • --graph-title=“|host_description| - |query_ifName| - |query_ifAlias|” : Titre du graphe

#/bin/bash

#set -x

##############################################################
#                       1er PARTIE                           #
#------------------------------------------------------------#
# Générer la liste des équipements Cisco                     #
# à partir des informations de Cacti                         #
##############################################################


# Extraction des hosts de Cacti dans un fichier temporaire « tmp_list_equip.txt »
/usr/bin/php add_graphs.php --list-hosts > tmp_list_equip.txt
#------------------------------------------------------------#
# Le fichier temporaire est de la forme :                    #
#------------------------------------------------------------#
# Known Hosts: (id, hostname, template, description)         #
# 1	127.0.0.1	8	Localhost                    #
# 123	192.168.1.236	5	PRODSW17_2960G               #
# 124	192.168.1.201	5	PRODSW01_3550                #
# (…)                                                        #
#------------------------------------------------------------#

# On supprime la première ligne du fichier qui contient une description
sed -i '1d' tmp_list_equip.txt
# On supprime la dernière ligne du fichier qui contient une ligne vide
sed -i '$d' tmp_list_equip.txt
# On crée un fichier vide
cat /dev/null > list_equip_final.txt

while read line
do

HOST_ID=$(echo $line | awk '{ print $1 }')
HOST_IP=$(echo $line | awk '{ print $2 }')

/usr/bin/snmpget -v 2c -c XXXX ${HOST_IP} .1.3.6.1.4.1.9.9.25.1.1.1.2.7 | grep -i cisco > /dev/null

#On vérifie si l’équipement est un Cisco
if [ $? == 0 ] 
then
	# C'est un Cisco
	echo "------------${HOST_ID}--------------" 
	RESULT=$(/usr/bin/php add_graphs.php --list-snmp-values --host-id=${HOST_ID} --snmp-query-id=1 --snmp-field=ifName)

	# Le résultat de la fonction "add_graphs.php" est stocké dans un fichier temporaire
	echo "${RESULT}" > tmp
	# On supprime la première ligne du fichier qui contient une description
	sed -i '1d' tmp
	# On supprime la dernière ligne du fichier qui contient une ligne vide
	sed -i '$d' tmp
	# On ajoute devant chaque ligne du fichier temporaire « ID » et « @IP »
	sed -i 's/^/'${HOST_ID}'    '${HOST_IP}'    /' tmp 
	# On concatène le fichier tmp avec le ficher de résultat
	cat list_equip_final.txt tmp >> list_equip_final.txt 2> /dev/null
	rm -f tmp
fi

done < tmp_list_equip.txt

# On Supprime le fichier temporaire de l’extraction des hosts de Cacti
rm -f tmp_list_equip.txt


##############################################################
#                       2eme PARTIE                          #
#------------------------------------------------------------#
# Créer les graphs dans Cacti à partir                       #
# de la liste précédemment créée                             #
##############################################################

#------------------------------------------------------------#
# Le fichier "list_equip_final.txt" est de la forme :        #
#------------------------------------------------------------#
# (…)                                                        #
# 70    188.8.1.202    Gi2/21                                #
# (…)                                                        #
#------------------------------------------------------------#

##############################################################
# Pour Connaitre les paramètres du script add_graphs.php     #
############################  1  #############################
# Pour connaitre l'ID du parametre "--graph-template-id="    #
# php add_graphs.php --list-graph-templates                  #
# (...)                                                      #
# 40	Interface - Traffic - In/Out and Errors/Discards 2   #
#                                                            #
############################  2  #############################
# Pour connaitre l'ID du parametre "--snmp-query-id="        #
# php add_graphs.php --list-snmp-queries                     #
# 1	SNMP - Interface Statistics                          #
# (...)                                                      #
#                                                            #
############################  3  #############################
# Pour connaitre l'ID du parametre "--snmp-query-type-id="   #
# php add_graphs.php --list-query-types  --snmp-query-id=1   # 
# (...)                                                      #
# 28	In/Out and Error/Discards 2                          #
#                                                            #
############################  4  #############################
# Pour connaitre le champs du parametre "--snmp-field="      #
# php add_graphs.php --list-snmp-fields  --host-id=200       #
# (...)                                                      #
# ifName                                                     #
# (...)                                                      #
##############################################################

while read line
do
	HOST_ID=$(echo $line | awk '{ print $1 }')
	HOST_IP=$(echo $line | awk '{ print $2 }')
	HOST_INT=$(echo $line | awk '{ print $3 }')

	/usr/bin/php add_graphs.php --graph-type=ds --graph-template-id=40 --host-id=$HOST_ID --snmp-query-id=1 --snmp-query-type-id=28 --snmp-field=ifName --snmp-value=$HOST_INT --graph-title="|host_description| - |query_ifName| - |query_ifAlias|"

done < list_equip_final.txt

# Autre posibilité plus rapide avec XARGS
# cat list_equip_final.txt | xargs -n 3 -P 32 -l1 bash -c '/usr/bin/php add_graphs.php --graph-type=ds --graph-template-id=40 --host-id=$0 --snmp-query-id=1 --snmp-query-type-id=28 --snmp-field=ifName --snmp-value=$2 --graph-title="|host_description| - |query_ifName| - |query_ifAlias|"'

# rm –f list_equip_final.txt

 
asr/sys/cacti/script_-_ajout_de_graphes.txt · Dernière modification: 2016/03/29 23:37 (édition externe)
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki