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 24×7
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
un commentaire
trackback
30 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 24×7 ; 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 24×7
contact_groups Supervisors
notification_interval 0
notification_period 24×7
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,
Publier un commentaire
Partager des documents lors des commentaires: Le groupe Scripd Nicolargo