Pour pouvoir tracer les graphiques, Cacti est organisé comme suit :
NRPE, l’agent de Nagios peut être utilisé depuis Cacti pour récupérer les valeurs à stocker dans les rrd. Cacti va appeler l’éxecutable check_nrpe. Un démon NRPE doit bien sûr être installé sur le serveur où l’on veut récupérer des données à grapher.
L’exemple ci-dessous illustre cette configuration. On renseigne au niveau cacti un chemin vers un script/command situé dans le dossier des scripts de cacti qui est un appel écrit en perl vers check_nrpe à qui on passe deux arguments. <host> correspond à l’adresse IP du serveur à checker et <command> correspond à la commande/script à éxecuter sur le serveur distant. Cette commande est en fait un alias renseigné dans le fichier de configuration du démon NRPE distant pointant vers un script bash/perl/VB/PHP… Le nombre d’arguments que l’on peut passer par cette méthode est en théorie “infini”.
perl <path_cacti>/scripts/check_nt_vb.pl <host> <command>
Ci-dessous le contenu du script check_nt_vb.pl. Les arguments saisis dans Cacti sous forme <host> et <command> se retrouve renvoyé au check_nrpe de Nagios sous forme $ARGV[0], $ARGV[1]
#!/usr/bin/perl $response=`/usr/local/nagios/libexec/check/check_nrpe -H $ARGV[0] -c $ARGV[1]`; print "$response";
Cependant, il faut utiliser côté nrpe de la machine distante des scripts prévus pour renvoyer des valeurs exploitables par Cacti; les scripts prévus pour Nagios ne sont pas utilisables. Là où un script Nagios renvoie un état et éventuellement des valeurs, un script Cacti doit renvoyer exclusivement des valeurs qui seront stockées dans un fichier rrdtool.
Une solution possible pour utiliser un script valable pour Cacti et Nagios est d’utiliser des scripts compatibles perfparse et le script n2rrd qui permet au script Nagios d’aller renseigner lui-même le fichier rrd. Une seule mesure est donc prise sur la machine distante pour renvoyer les valeurs d’état et de graphes.