Lier Cacti et Nagios

Date: 10/06/2008 | Catégories: Developpement,Open-source,Reseau | Tags: ,

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.

Mises à jour:

  • Amélioration de J.Montanard, le plugin est disponible en version 0.21.
  • 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 (Image 1.png ) pour être redirigé automatiquement vers la page correspondante au host en question dans Cacti.

Nagios.jpg Cacti.jpg

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 (Image 1.png ), 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.2 et Cacti 0.8.7.

La première chose à faire est de télécharger le script cactiplug.

# wget https://raw.github.com/nicolargo/cactiplug/master/cactiplug.php

Puis ensuite de saisir les commandes suivantes:

# mkdir /usr/local/nagios/share/cactiplug

# cp cactiplug.php /usr/local/nagios/share/cactiplug

# 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.

  • ghazi

    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

  • ghazi

    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

  • bscorpion1

    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

  • worms

    Bonjour,

    Excellent plugin pour lier Nagios et Cacti!!
    Cependant je rencontre des problèmes lors de son éxécution vers la page web :
    Warning: mysql_connect() [function.mysql-connect]: Access denied for user ‘cactiuser’@’localhost’ (using password: YES) in /usr/local/nagios/share/cactiplug/cactiplug.php on line 63
    Error while connecting to the DB server

    Je pense que cela est dû au fichier “cactiplug.php” mal configuré, et je ne sais pas comment mettre les bon paramètres.

    $cactiurl=”http://localhost/cacti”;
    $database_default = “mysql”;
    $database_hostname = “localhost”;
    $database_username = “cactiuser”;
    $database_password = “Password”;

    Merci d’avance

    • adminette

      Bonjour,

      Vérifie que les parametres dans /etc/cacti/debian.php soit les mêmes que ceux de /nagios/cactiplug/cactiplug.php.

      Cordialement

  • Audrey

    bonjour,

    je viens de suivre à la lettre ce tutoriel.
    J’ai bien le petit icone présent dernière le nom de chaque hôtes déclarés.Par contre lorsque je clique sur l’icone, j’ai le message d’erreur suivant : “Not Found

    The requested URL /nagios/cactiplug/cactiplug.php was not found on this server.”

    J’ai bien enregistré la ligne de déclaration dans le template du fichier host.cfg.

    Est ce que quelqu’un aurait une solution à mon problème ?

    Cordialement

    Audrey

    • adminette

      Bonjour Audrey,

      Tes hosts ne doivent pas avoir la même ip ou la même nomenclature que dans ta configuration Nagios.

      Bonne journée

  • jim

    Comme je surveille mon réseau dans le LAN mais aussi de l’extérieur, mon serveur de supervison possède plusieurs @IP.
    J’ai donc du modifier cette ligne :

    $cactiurl = “http://”.$_SERVER['HTTP_HOST'].”/cacti”;

    Je propose que la version de cactiplug passe en “0.2.1”.

    Cordialement

  • http://blog.nicolargo.com NicoLargo

    @jim: c’est fait ! Merci pour la contribution.

  • tranimti

    slt, je te remercie pour ce blog qui est bien fait, mais je voudrais savoir quel est la véritable différence entre cacti et centreon.

    Et surtout, es ce que a partir de cacti on peut parramétrè les service, les host, les mail, … comme pour centreon (a partir de son interface web)

  • tranimti

    je voudrais aussi savoir, quelle pluging permet de supervisé un réseaux a distance. Si c’est le même, pour un server linux, windows, router, et voir même switch.

    merci

  • nagionette

    Bonjour,

    J’ai un soucis lorsque je clique sur l’icone rouge de cacti j’ai l’erreur “Page web inaccessible. Il se peut que la page web à l’adresse http://localhost/cacti/graph_view.php?action=preview&host_id=6 soit temporairement inaccessible ou qu’elle ait été déplacée de façon permanente à une autre adresse Web.” Quelqu’un aurait il eu le même soucis ???

    • adminette

      Bonjour,

      il faut surement modifier le localhost dans cactiplug.php par l’adresse du serveur de supervision.

      Bonne soirée

  • Alain

    Bonjour ,
    Aprés avoir installer Nagios 3.2.3 et par la suite Cacti 0.8.1 d , j’arrive a afficher l’interface web , mais quand je click sur le l’étoile Rouge de cacti qui se trouve sur Nagios je reçois ce Message:

    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

    Help Please : )

  • Phal2ip

    bonjour,
    Bonjour
    je reprends le même message d’Audrey car j’ai exactement le même problème…
    je viens de suivre à la lettre ce tutoriel.
    J’ai bien le petit icône présent dernière le nom de chaque hôtes déclarés.Par contre lorsque je clique sur l’icône, j’ai le message d’erreur suivant : “Not Found

    The requested URL /nagios/cactiplug/cactiplug.php was not found on this server.”

    J’ai bien enregistré la ligne de déclaration dans le template du fichier host.cfg.

    Est ce que quelqu’un aurait une solution à mon problème ?

    Cordialement

    • hammouda

      est-ce que tu pourra m’aider à l’erreur suivante :The requested URL /usr/share/nagios/cactiplug/cactiplug.php was not found on this server.
      Merci d’avance

  • hammouda

    The requested URL /usr/share/nagios/cactiplug/cactiplug.php was not found on this server.

    aidez moi SVP

  • amine

    j’ai suivi tout le tutorial,lorsque je clique sur l’icone qui mène au graphe de cacti
    The requested URL /usr/share/nagios/cactiplug/cactiplug.php was not found on this server.
    aidez moi SVP

  • yosraoualid

    Bonjour Mr,
    Merci pour le tuto c’est tres excellent.
    j’ai arriver à lier cacti et nagios et je doit suivre la même démarche pour lier teamviewer à nagios c’est le but de mon projet de fin d’anneé.
    S’il vous plait de me répondre si c’est passible.
    Merci d’avance

  • Lamzouille

    Bien le bonjour,

    Ayant installé ce script très pratique ce matin, j’ai eu le message suivant : Host not found, en remplacant dans le template.cfg le $HOSTADRESS PAR $HOSTNAME, cela a fonctionné, les graphiques se sont affichés et ca marche nickel donc je tiens à te remercier pour ce petit plugin fort bien sympathique.

  • Marco

    Salut,
    Je me suis toujours demandé un truc Nico:
    Pourquoi tu ne pars pas du principe que les gens utilisent apt-get/yum ou autre gestionnaire de paquet pour leur install?
    Pourquoi compliquer les choses en faisant tout à la main à coup de cp, mv, de compilateur et autre manip lourdes pour l’utilisateur…
    Je trouve ça assez gênant que la plupart des tutos ne soient pas adaptés aux installs automatiques des gestionnaires de paquet parce que du coup, tous les chemins des fichiers, répertoires sont différent. Et je parle même pas des cas d’erreurs… Ca se termine souvent par une réinstall complète du système… Avec ta façon de faire, pas de commande pour revenir à zéro (du genre apt-get remove programme…). Faut tout effacer à la main à nouveau…
    Et par exemple dans ce cas, l’utilisateur qui vient d’installer sont Nagios proprement via apt-get n’a pas du tous les même répertoires que toi. Du coup, faut essayer de deviner la correspondance entre les dossiers/fichiers que tu indique et les notres. C’est toujours une grosse source d’erreurs…
    Si tu partais du principe que les gens utilisent un gestionnaire de paquet, tu partirais du principe qu’ils ont tous une architecture de fichier identique. Et donc, tes tutos seraient adaptés à tous.
    Parce que les tuto d’install/conf de nagios en dépaquetage d’archive, compilage etc, y en a une chier sur net… Du coup, personne à la même architecture de dossiers et c’est le bordel…
    Je te le dis à toi, mais t’es pas le seul à faire des tutos comme ça.
    Et cela dit j’apprécie beaucoup tes tuto et les trouve propres malgré tout.

    • http://www.nicolargo.com NicoLargo

      Plusieurs raisons à cela:
      – chaque système à “son” gestionnaire de paquets (DEB-apt pour Debian/Ubuntu, RPM-yum pour Fedora/Redhat, EBuild pour Gentoo…) avec des nom de package différents. Pour faire une simple procédure, il faudrait donc que je valide sur l’ensemble de ces systèmes
      – pour installer à partir d’un package, il faut que le package existe et soit maintenu à travers le temps. Pour prendre un exemple que je traite souvent dans ce billet, le package Nagios pour Debian est effectivement disponible dans les dépôts officiels… mais en version 3.2.1 (qui à presque 1 an de retard sur la version actuelle, la 3.3.1).
      – pour finir, il y a l’aspect pédagogique. Je pense qu’une personne qui suis ce genre de tuto doit être à l’aise avec les commandes Unix de base. Sinon tôt ou tard il n’arrivera pas à administrer correctement son serveur.

      Mais tu n’es pas le seul à avoir fait cette remarque et je peux comprendre que des personnes qui sortent de cursus ou Unix n’était pas mis en avant aient des difficultés à suivre mes tutos. C’est pour cela que de plus en plus je fourni des script d’installation automatique (par exemple pour le système Debian, pour Nagios, pour NGynx…) que tu peux trouver sur mon GitHub: https://github.com/nicolargo

      • Marco

        Ok, je peux comprendre tes raisons.
        Je ne sais pas quelles sont réellement tes intentions lorsque tu produit tes tutos, ni à qui ils s’adressent. Perso, je pense qu’ils toucheraient plus de monde si tu les faisaient en prenant en compte au moins le cas d’une install automatique sous Ubuntu via apt-get. La plupart des débutant commencent avec une version d’Ubuntu ou Debian voir à la rigueur CentOS (dont les paquets sont quasiment identiques pour RedHat (=1 tuto valide pour 2 types d’OS)).
        La solution qui reste la plus simple et la plus propre selon moi (en terme d’install, d’update, de désinstall) c’est de passer par un gestionnaire de paquet. Même si la version proposé par aptitude n’est pas la dernière disponible, la version 2.3.1 devrait suffire à la plupart des gens. Il est, selon moi, préférable d’avoir une version ancienne mais stable, gérée automatiquement par un gestionnaire, plutôt que la dernière version installée à la main avec tous les problèmes d’install, d’update, de désinstall ou d’adaptation aux nouvelles versions que ça peut engendrer…

        Sinon, ce qui serait bien lorsque tu donne un quelconque un chemin de fichier ou de dossier, c’est que tu définisses le rôle de ce dossier/fichier. En gros, donner un maximum d’info sur le dossier/fichier pour que le lecteur puisse identifier facilement le même dossier/fichier sur son serveur, dans le cas où il n’aurait pas le même nom ou ne se trouverai pas au même endroit. Parfois, je trouve que c’est vraiment un casse tête. On se rend compte qu’on ne possède pas du tout la même arborescence. Alors on essaye malgré tout le suivre le tuto, avec le doute que le dossier où on a choisi d’extraire l’archive n’est pas le bon… Ça amène parfois à adapter tous les fichiers de conf en fonction de la manip.. Ou par exemple, on suit un tuto et on se rend compte que le fichier de conf indiqué ne contient pas les même infos que le notre…
        Ou sinon, carrément donner les correspondances pour chaque cas ou au moins pour Ubuntu/CentOS mais je suis bien conscient de la charge de travail que ça représente.

  • Rv

    Je réponds au message d’erreur ” host not found” signalé par plusieurs personnes
    Solution : il faut créer les hôtes soit en passant par phpmyadmin (mysql) dans la base de données cacti ou aller sur la page de cacti (http://monserveur/cacti ). Dans tous les cas les hôtes doivent exister avant de cliquer éventuellement sur l’icône qui apparaît dans la page de nagios.

  • Mouglou

    Bonjour à tous,

    Merci encore pour ce tuto.
    Biensur moi j’ai un autre petit problème.
    Lorsque ue clic sur l’icône, il m’ouvre un nouvel onglet avec ce message:
    You don’t have permission to access /nagios/cactiplug/cactiplug.php on this server.
    J’ai tester pas mal de chose avec un chmod 777 sur le rep cactiplug, j’ai rajouter le user apache au groupe nagios comme on m’avais demandé d’essayé…
    Mais toujours rien. Le fichier cactiplug.php à bien les bonnes infos de la db cacti.
    Mais j’ai pourtant bine accès à l’interface de cacti si je rentre http://localhost/cacti/
    Pour faire tout ça, j’ai suivi ce tuto
    http://blog.nicolargo.com/2009/01/le-serveur-de-supervision-libre-part-4.html

    Quelqu’un à-t-il une bonne infos pour moi?

    • Mouglou

      Petit infos:
      Nagios 3.3.1 et Cacti 0.8.7h

    • Mouglou

      Personne pour m’aider?? :(
      Moi bloquer! Moi chercher! Moi pas trouver!

  • AeoK

    Bonjour à tous,
    tout d’abord merci Nico pour toutes les infos et tutos que tu postes sur ton blog, cela m’est d’une grande aide pour mon travail.

    Par contre j’ai une petite question concernant le couplage Cacti et Nagios :
    Je suis sur CentOs 5.7 avec un Nagios 3.2.3 et Cacti 0.87h.
    J’ai fais des liens vers les graphs de chacune de mes machines mais la première fois il me demande le login et mot de passe pour la connexion à Cacti.
    Quels paramètres dois-je mettre dans ‘action_url’ pour mettre login et mot de passe du compte guest que j’ai créé ?
    Merci d’avance pour ton aide.
    Bonne fin de journée.
    AeoK

  • Michelt

    Bonjour,
    Je ne parviens pas à utiliser Cactiplug.
    Lorsque je clique sur le bouton, j’ai le message suivant dans la page qui s’ouvre : You don’t have permission to access cacti/graph_view.php on this server.
    Pourtant mes utilisateurs sont bien déjà présent dans Cacti et correctement graphés.
    J’ai aussi vérifié les permission du dossier cacti et du fichier graph_view.php
    Merci d’avance pour votre aide.

    • Michelt

      Je ne sais pas trop pourquoi mais remplacer localhost dans cactiplug.php par l’adresse mail de mon serveur à résolu cette erreur.

  • kambs95

    bonjour,
    j’ai utilisé ton billet pour lier toute l’installation de mon serveur nagios centreon cacti donc déjà merci pour ça.
    mais j’ai un problème quand je clic sur la petite étoile dans nagios il me renvoi à cacti mais il ne m’affiche pas les courbes
    un petit coup de main stp ?

    • AeoK

      Salut,

      As-tu bien renseigné dans le templates.cfg la variable suivante dans la partie de “generic-host” :

      action_url /cactiplug.php?ip=$HOSTADDRESS

      Appel du fichier cactiplug.php avec l’address renseignée dans la déclaration de ton host.
      (dans mon exemple, l’appel http se fait par : http://machine_avec_nagios_et_cacti/cactiplug.php avec catiplug.php dans le dossier share ou htdocs)

      Cdlt,
      AeoK

      • kambs95

        oui j’ai déjà fait tout ça

        • kambs95

          personne d’autre n’a de solutions qui pourrait m’aider ?

          • kambs95

            j’ai un autre problème dans le menu View Cacti Log File il m’affiche ces 2 erreurs suivante : 1°)PM – EXPORT FATAL ERROR: Export path ” does not exist! Export can not continue
            2°)PM – SPINE: Poller[0] WARNING: Host[10] TH[1] DataQuery[9] Reindex Check FAILED: No SNMP Session. If not an SNMP host, don’t use Uptime Goes Backwards!
            05/23/2012 02:50:04 PM – SPINE: Poller[0] WARNING: Host[10] TH[1] DataQuery[1] Reindex Check FAILED: No SNMP Session. If not an SNMP host, don’t use Uptime Goes Backwards! quelqu’un aurait t-il une idée ?

  • LOBA

    Je dois soutenir un mémoire sur l’ étude et la mise en place d’ outils de supervison réseau : CACTI/NAGIOS. Besoin d’ aide pour la configuration sous Ubuntu 11.10

  • faki

    C’est tout simplement génial ton plugin et tout le reste de tes tutos!!! merci pour tout nico!!

  • hawa

    Bonjour.je suis entrain de suivre ce tutto, seulement j’ai installe nagios dans une machine virtuelle debian et cacti dans une autre ubuntu 11.04. tout va bien mais j’ai un souci. j’ai installer cactiplug dans nagios pour lier nagios a cacti mais j’arrive pa a ecceder a mysql de cacti. svp kelqu’un peut’il m’aider???

  • flo

    Bonjour,
    Fonctionne très bien sous nagios mais pas sous thruk, il m’affiche deux fois le lien :

    http://10.128.171.163/nagios/cactiplug/cactiplug.php?ip=/nagios/cactiplug/cactiplug.php?ip=$HOSTADDRESS

    Si quelqu’un a déjà rencontré le pb ?

    Merci

  • Pingback: Cactiplug: Acceder a gráficas de Cacti desde Nagios « rosgos

  • Pingback: Latino » Blog Archive » Cactiplug: Acceder a gráficas de Cacti desde Nagios

  • Guillaume Caillé

    Bonjour, le lien de téléchargement du cactiplug.php est mort. J’aimerais vraiment pouvoir utiliser cacti avec nagios. Il ne me manque que cette étape ! serait-il possible de le remettre enligne ? merci !

  • Marwa

    Bonsoir Nicolas,
    Merci pour ce Tuto :)
    j’ai réussit à lier nagios et cacti . Mais je voudrai vous interroger sur la possibilité de synchroniser l’authentification sur les deux systèmes , je veux dire pas cela : que quant on se connecte a nagios et qu’on veut voir les graphes de Cacti on aura pas à s’authentifier à Cacti.
    Est-il alors possible de synchroniser l’authentification à Nagios et Cacti c-à-d en se connectant à nagios et est en même temps connecté a Cacti ?
    Si vous avez des pistes pour une idée je serai preneuse :)
    Merci

    • Marwa

      Quelqu’un à une piste à m’aider ? :)