Si vous suivez régulièrement ce blog, vous savez que Nagios et Cacti sont deux logiciels libres que je suis tout particulièrement de part mes activités professionnelles. Je cherchais depuis un moment un moyen simple et efficace pour pouvoir accéder aux graphes de Cacti à partir de l'interface de Nagios.
Ne trouvant rien de concluent sur le Web, j'ai décidé de coder un petit script PHP, nommé CactiPlug.php, permettant d'ajouter cette fonction à Nagios.
Mise à jour: Grâce à la contribution de Dennis Yusupoff, le plugin est maintenant disponible en version 0.2.
Concrètement cela donne quoi ?
Et bien la possibilité d'ajouter automatiquement un lien vers Cacti depuis l'interface Web de Nagios. Il suffit donc juste de cliquer sur un bouton (
) pour être redirigé automatiquement vers la page correspondante au host en question dans Cacti.

Comment marche le hack CactiPlug.php ?
On utilise la macro "action_url" dans la définition du host (ou mieux du template associé au host) que l'on défini avec la valeur suivante:
...
action_url /nagios/cactiplug/cactiplug.php?ip=$HOSTADDRESS
...
Quand on clique sur le bouton (
), le script cactiplug.php est appelé. Ce dernier va prendre en paramètre l'adresse IP du host (macro $HOSTADDRESS) et interroger directement la base de donnée MySQL de Cacti pour obtenir l'URL de la page Cacti correspondante.
Installation de cactiPlug.php
L'installation donnée ci-dessous a été validé avec Nagios 3.02 et Cacti 0.8.7.
La première chose à faire est de télécharger cactiplug-0.2.tgz.
Puis ensuite de saisir les commandes suivantes:
# tar zxvf cactiplug-0.2.tgz
# mv cactiplug /usr/local/nagios/share
# chown -R nagios:nagios /usr/local/nagios/share/cactiplug
Ensuite il faut configurer Nagios pour qu'il prenne en compte le plugin. Le plus simple est d'ajouter la ligne suivante dans le template generic_host du fichier template.cfg (voir ici vous êtes perdu dans les fichiers de conf de Nagios).
define host{
name generic-host
notifications_enabled 1
event_handler_enabled 1
flap_detection_enabled 1
failure_prediction_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
notification_period 24x7
register 0
action_url /nagios/cactiplug/cactiplug.php?ip=$HOSTADDRESS
}
Configuration du plugin
La dernière étape consiste à éditer le fichier /usr/local/nagios/share/cactiplug/cactiplug.php afin d'y saisir les informations relatives à votre base de données Cacti (host, nom de la base, login et password).
Ensuite, il ne reste plus qu'a relancer Nagios:
# service nagios restart
ou
# sudo /etc/init.d/nagios restart
J'attend vos retours si vous testez ce plugin.
Télechargement:
- CactiPlug v0.2 (24 juillet 2008)
- CactiPlug v0.1 (10 juin 2008)






Developpement


Abonnez-vous
53 commentaires au billet “Lier Cacti et Nagios”
J'ai testé il y a quelques mois le plugin NPC (nagios plugin cacti). Il permet d'interfacer directement les résultats de nagios dans cacti. C'est l'inverse de ton programme, je sais... mais je pense que cela peut intéresser quelques personnes.
http://forums.cacti.net/about10327-0-asc-60.html
J'ai mis en place ton plugin qui est très efficace. J'ai mis en place un projet de supervision réseau dans le cadre de mon stage et Nagios supervise 70 équipements et Cacti, plus de la moitié de ceux-ci. Le fait de pouvoir lier les deux est donc très pratique (via une console Nagios constamment ouverte. J'avais également remarqué le plugin NPC, mais je le trouvais moins intéressant et ne l'avais donc pas mis en place. La seule chose à laquelle il faut faire attention est que le plugin fonctionnera si l'interface WEB est exécutée en local, mais pour qu'il fonctionne sur le réseau, il faut modifier $cactiurl avec l'IP de la machine. Même si cela paraît évident, je trouve intéressant de le spécifier. Merci encore pour l'ensemble de ce blog qui est très intéressant (je l'ai d'ailleurs rajouté à mes flux RSS).
Bonjour, c bien ce que tu a fait sauf j'ai un petit souci,
lorsque je crée un nouveau groupe d'hotes avec Oreon, j'ai pas d'icones sur nagions?????
Le bouton dans Nagios pour être redirigé vers Cacti n'est pas présent sur la version 2.12 de Nagios (celle que je possède), ce script ne peut donc pas être utilisable pour cette version et les versions antérieures je pense. C'est à confirmer quand même mais ce bouton ne doit être présent que sur la version 3.x de nagios.
Je n'ai testé ce script qu'avec la version 3.02 de Nagios. Je pense donc que Thibaut à raison et qu'il ne pourra pas fonctionner avec la version 2.x.
Si quelqu'un peut tester, je suis preneur du résultat.
Bjr,
Vous avez tester Ce plugin avec nagios 3.02, et vous utilisez Oréon ou non?
En fait lorsue j'ajoute un groupe de machines avec Oréon tout est perdu (je parle de l'icône).
Merci de me répondre .
@
@Rostom: je n'utilise pas Centreon sur le serveur ou j'ai testé ce hack. Mais il n'y a pas de raison qu'il ne soit pas pris en compte dans une Nagios géré avec Centreon. Il faut juste penser à modifier le template en question.
J'ai installé cacti il y a quelques temps mais j'ai jamais trouvé la solution pour monitorer et grapher correctement des serveur ESX. Je suis donc passé à unnoc, j'ai essayé d'adapter ton plugin pour unnoc sans succès...
Même si j'en est pas trop l'intérêt, unnoc n'a pas de frame et s'intègre très bien dans l'interface de nagios via l'action_url basique. Je le trouve également beaucoup moins lourd que cacti pour monitorer via snmp des serveurs windows ou linux...
http://unnoc.org/demo/
Unnoc est peu connu, et le développement semble être arrété depuis bientôt un an.
Toujours en production pour ma part.
Bonjour,
Voila mon fichier template.cfg contient:
define host{
name generic-host ; The name of this host template
notifications_enabled 1 ; Host notifications are enabled
event_handler_enabled 1 ; Host event handler is enabled
flap_detection_enabled 1 ; Flap detection is enabled
failure_prediction_enabled 1 ; Failure prediction is enabled
process_perf_data 1 ; Process performance data
retain_status_information 1 ; Retain status information across program restarts
retain_nonstatus_information 1 ; Retain non-status information across program restarts
notification_period 24x7 ; Send host notifications at any time
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
action_url /nagios/cactiplug/cactiplug.php?ip=$HOSTADDRESS
}
et le fichier hostgroups contient:
define hostgroup{
hostgroup_name Linux_Servers
alias all linux servers
members Centreon-Server
}
mais j'ai pas d'icones sur la page de nagios!!
Aider moi SVP.
@Rostom: les icônes d'actions ne sont accessible que dans la vue groupe ("Service Overview For Host Group ..."). Il y a trois icones par défaut la nouvelle icône créé par action_url. Si cela ne marche pas il y a peut être un problème avec Centreon. Dans ce cas, je te conseille de poser ta question sur le forum de Centreon: http://forum.centreon.com/
Merci NicoLargo,
Je vais t'informer dès que je trouve la solution.
Eh Bon, c résolu, il suffit d'ajouter le lien dans le fichier hosts.cfg.
define host{
name generic-host
alias generic-host
check_command check_host_alive
max_check_attempts 5
active_checks_enabled 1
passive_checks_enabled 0
check_period 24x7
contact_groups Supervisors
notification_interval 0
notification_period 24x7
notification_options d,r
notifications_enabled 0
register 0
action_url /nagios/cactiplug/cactiplug.php?ip=$HOSTADDRESS
}
Rostom peux-tu préciser ta version de Nagios et de Centréon stp
Oui bien sûr, avec plaisir.
Nagios 3.02.
Centreon 2.0 - Beta 4
En fait Nagios 3 n'est pas compatible avec les anciennes versions de centreon.
Oui tout à fait, attend la prochaine version de Centréon qui sera compatible avec Nagios3.
NicoLargo tu pense essayer de modifier quelque peu ton script pour essayer d'avoir une compatibilitée avec Nagios 2.x. ou pas du tout ?
@Thibaut: ce n'est pas prévu... par contre le code est sous licence GPL donc si qq veut faire les modifs...
ok NicoLargo
quand j'aurai un peu plus de temps j'essairai d'y regarder.
Merci NicoLargo.
Pour télécharger le fichier cactiplug-0.1.tgz à partir de Weget, il faut utiliser la commande suivante:
# wget --user-agent="Lynx/2.8.4rel.1 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/0.8.12" http://www.nicolargo.com/dev/cactiplug/cactiplug-0.1.tgz
En effet mon serveur web ne semble pas aimer le user-agent wget...
I found your application and now I use it in my Network Monitoring Station (Groundwork Monitor and Nagios 2.5).
I modified the original script becouse it open only the first graph associated with the host.
Now with my modification it open a page with the preview of all the graphic azssociated with the host.
The string I modified is this:
$action_url = $cactiurl."/graph_view.php?action=preview&host_id=".$row["host_id"];
Thanks NicoLargo
@stefano: thanks for the tips. I will add it as an option in the next version of the hack.
Bon bien j'y vais aussi de ma contribution:
1) ca marche pas avec centreon 2beta et nagios 3.0.2 car centreon met les 'action_url' dans des 'hostextinfo' et il ne sont pas pris par nagios. Si on met à la main dans host.cfg, ca marche (y compris pour les templates)
2) j'ai modifié la requête et l'url pour envoyer sur un page qui met tous les graphs du host:
$query = "select host.id as host_id, host.hostname as hostname from host where host.hostname='".$ip."'";
puis dessous:
$action_url = $cactiurl."/graph_view.php?action=preview&graph_template_id=0&filter=&host_id=".$row["host_id"];
Sinon, très sympa comme idée (et le Blog aussi
Très bon plugin. J'ai découvert tout ça il y a deux jours et je m'amuse déjà comme un petit fou !
Super !
Bonjour,
je souhaite télécharger ton plugin, car il serait tres utile pour le projet que je dois réaliser pendant mon stage.
Quand je fais un wget sur l'archive, j'obtiens 16:41:42 ERREUR 403: Forbidden.
As tu une idée d'où cela peut venir?
Merci beaucoup!
@pausg: c’est effectivement mon serveur Web qui bloque le user-agent wget. Une solution possible:
# wget –user-agent=”Lynx/2.8.4rel.1 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/0.8.12″ http://www.nicolargo.com/dev/cactiplug/cactiplug-0.1.tgz
a et désolé pour le pb.
Merci ca marche sans problème.
J'ai fini l'installation, et l'icone s'affiche bien dans nagios. Par contre, quand je clique dessus, j'ai l'erreur:
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'admin'@'localhost' (using password: YES) in /usr/local/nagios/share/cactiplug/cactiplug.php on line 42
Error while connecting to the DB server
Tu sais d'ou ca peut venir?
J'ai le même problème que toi pausg, au niveau de la base de donneés. Pourtant jai bien vérifié et j'ai bien spécifié les bonnes configrations au niveau du fichier cactiplug.cfg.
Quelqu'un a-t-il une idée?
Merci.
Nicolas, I rewrote you script to make available symbolic hostnames (I have both symbolic and ip-address as hostnames in Cacti), and fix URL to Cacti page, because it redirect me to page with only one services of host, not all. See changes here:
http://forums.cacti.net/viewtopic.php?p=140760#140760
With best regards,
Dennis Yusupoff
@Denis:thanks for the patch, work fine with my test server. I am going to update to the version 0.2.
open-source is nice
sympatique idée ce plugin par contre le seul bémol est qu'il n'arrive pas à afficher les graphs du localhost lorsqu'on met 127.0.0.1 dans l'URL. quelqu'un a-t'il rencontré ce problème.
Ayant une version 2.10 de Nagios, j'ai adapté la procédure ci dessus par cela:
- créé ou édité le fichier hostextinfo.cfg
- créé un template(modèle) d'un hostextinfo comme ceci :
define hostextinfo{
name template
notes_url /nagios/cactiplug/cactiplug.php?ip=$HOSTADDRESS
register 0
}
- puis pour chaque host créé ceci :
define hostextinfo{
host_name localhost
use template
}
- un petit redémarrage de Nagios et voila on se retrouve avec des icones devant chaque host qui conduit Cacti.
- ps : penser à renseigner ce nouveau fichier dans nagios.cfg
Bonjour à tous !
Sachant que j'utilise un nagios 3.03 "brut" en prod, pas d'Oreon, pas de cacti, rien d'ajouter, sauf PNP !
En effet j'ai ajouter PNP pour obtenir des graphs sur les test rapportant des perfdata.
Je voulais donc savoir quelles sont les avantages ou différences entre ces deux plugins.
D'avance merci. Codialement,
Bonjour
j'utilise aussi Nagios+Centreon et je ne trouve pas ce fichier
Peux tu m'indiquer ou il se trouve?
As tu récupéré les graphs de cacti sous centreon?
Merci
Salut,
Plugin sympa mais erreur comme pour pausg et bob :
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'cacti'@'localhost' (using password: YES) in /usr/local/nagios/share/cactiplug/cactiplug.php on line 53
Error while connecting to the DB server
Si qqu'un a une idée
Salut,
Plugin sympa mais erreur comme pour pausg et bob :
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'cacti'@'localhost' (using password: YES) in /usr/local/nagios/share/cactiplug/cactiplug.php on line 53
Error while connecting to the DB server
Si qqu'un a une idée
Merci
@Lemmy78 -
C'est bon je me suis battu et maintenant ça fonctionne. Il faudrait préciser pour les non pros, que dans le fichier de conf cactiplug.php,
qd on est sur 2 serveurs différents, la valeur $database_hostname doit correspondre soit à l'ip soit au fqdn du serveur cacti.
Ensuite il faut paramétrer mysql du serveur cacti :
-remplacer 127.0.0.1 par 0.0.0.0 à la ligne bind-address
-ajouter le user cacti@host-nagios sur la table Mysql avec un pwd et les droits Usage
-redémarrer mysql
et ça doit être tout bon
A+
Salut,
L'installation c'est bien passé mais quand je clique sur le bouton, il ouvre une popup : http://localhost/nagios/cactiplug/cactiplug.php?ip=*.*.*.*.* et il me marque Query failed , sait tu d'ou sa peut venir ?!
Merci
Bonjour,
Je trouve cette solution très intéressante. Néanmoins, je souhaite savoir si il faut installer des prérequis (Cacti, php4, mysql ...) ????
Merci
@Bastien:
PHP est nécesaire pour l'execution du script.
MySQL est nécessaire au bon fonctionnement de cacti.
Bonjour,
C'est encore moi, sauf que là j'ai cacti qui est installer et qui fonctionne. Le seul problème est le lien qui lie cacti et nagios.
En effet, lorsque je clique sur ce lien, le navigateur web ouvre une autre page et il y a écrit "Host not found, sorry..."
Je ne sait pas d'ou cela vient!!!
Merci, a bientôt.
Et Cacti ne graphe pas lol
Ce plugin marche parfaitement entre Nagios 2.0.5 et Centreon 1.4.2.7
salut,
je tien a dire que ton plugins et énorme, mais j'ai un problème avec celui-ci.
Lorsque je clique sur l'icone pour acceder a cacti à partir de nagios (éxecuter sur une machine autre que le serveur nagios),je n 'arrive pas à voir les graph.
Comment puije réaliser cette manip?
Merci.
Bonjour ,Quand je clik sur l'icone pour ouvrir cacti j'ai le message "Incorrect IP or hostname"
Une idée pourquoi ?
Bonjour
Tout d'abord, je tiens à vous dire un grand MERCI pour l'aide que vous m'apportez.
Mais j'ai un petit problème, lorsque je clique sur le bouton rouge, la page m'affiche ceci :
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'cactiadmin'@'localhost' (using password: YES) in /usr/local/nagios/share/cactiplug/cactiplug.php on line 53
Error while connecting to the DB server
J'ai recherché partout comment résoudre le problème mais je n'ai trouvé aucune solution qui fonctionne
Pouvais vous m'aider svp
Merci et à bientôt
@aurelie: merci de poser la question dans le forum.
http://forum.nicolargo.com/
Note : si vous avez tout bien configuré mais que cactiplug vous envoie sur une page blanche, vérifier dans les logs d'apache qu'il ne vous manque pas php-mysql....
si oui yum install php-mysql ou apt-get install php5-mysql
Très bon plugin
merci !
Bonjour,
Merci bien pour ce plugin,
J'ai suivi le tuto, mais quand je clique sur l'icone ajoutée (par ce plugin), j'ai toujours le message d'erreur Incorrect IP or hostname sachant que l'adresse IP existe bien dans la base mysql (je vois bien mes graph sur http://myip/cacti.
Avez -vous une idée svp?
Merci
merci pour le plugins c super !!!!!!!!!
Bonjour,
Je viens d'installer ce plugins mais quand je clique sur l'icone , j'ai le message suivant :
"The requested URL /usr/local/nagios/share/cactiplug/cactiplug.php was not found on this server."
Pourtant, il est bien à cet endroit avec le propriétaire nagios.
Avez vous une idée ?
Merci d'avance
Bonjour, je viens de suivre votre tuto à la lettre et lorsque je clique sur l'icone, il m'indique "Host not found, sorry..."
Bonjour merci pour ce super tuto vraiment tres pratique
j ai juste un petit pbm je voudrais savoir s'il serait possible en cliquant sur un service de nagios obtenir juste la courbe correspondante
merci d'avance
Dslé de reposter le meme message ms c juste que j ai oublié de cocher l envoi du mail dc voila
j ai juste un petit pbm je voudrais savoir s'il serait possible en cliquant sur un service de nagios obtenir juste la courbe correspondante
merci d'avance
Bonjour,
Merci bcp pour le tuto.
J'ai un probléme, j'ai unstallé nagios 3.2.0, et je veux installer cactiplug, et lorsque je le telechargement du script comme indiqué en haut, j'ai tapé la commande : tar zxvf cactiplug-0.2.tgz et le message suivant s'affiche
tar: erreur non récupérable : arrt du traitement
tar: child returned status 2
tar: des errurs int provoqué l'arret du programme.
Merci pour votre aide
Publier un commentaire
Utiliser
pour lier des documents à vos commentaires.
Pour des discutions techniques, merci d'utiliser le forum.