14
mar 12

check_eZ_Nagios: Monitorer eZ Publish avec Nagios/Centreon

eZ PublishSuite à mon précédent article sur le plugin Nagios eZ_Nagios_ContentObj , voici un « plugin » qui intègre les Users (toujours dans l’idée de porter ce que fait eZ Munin dans Nagios / Centreon).

 

Histoire de simplifier le tout, j’ai nommé ce script check_ez_nagios.

Nagios Centreon

 

A ce jour, nous avons donc 2 types d’informations collectées:

  • ContentObject
    • total amount of eZContentObjects
    • total amount of eZContentObjectAttributes
    • total amount of eZContentObjectTreeNodes
    • total amount of eZContentObjectRelations
    • total amount of drafts objects
  • eZsession
    • total number of eZUsers
    • total number of sessions in the database

 

A venir, le check de l’evolution du cache dans le cadre d’une installation eZ Publish Cluster DFS.

Si vous avez des suggestions / améliorations, n’hésitez pas :)

 

./check_ez_nagios.sh
============ Help check_ez_nagios.sh ============
Usage: ./check_ez_nagios.sh -H host -u username -p password -D database -m mode
Mode options: contentobject or ezsession
Ex: ./check_ez_nagios.sh -H mysql-server -u ezpublish -p password -D ezDB -m ezsession
=================================================

Ci-dessous comment l’intégrer dans Nagios et Centreon, et notamment, comment facilement générer les graph pour une instance donnée.

 

Note

Il existe déja plusieurs solutions de surveillance de ce type, dont:

  • eZ Munin (qui a inspiré ce portage pour Nagios)
  • ezsnmpd (interface SNMP)

 

Alors vous me direz, pourquoi ne pas utiliser ces dernières?

 

Ayant un environnement de monitoring Nagios, et utilisant NRPE pour faire du spécifique « maison », je souhaite donc utiliser ce même mécanisme (donc out Munin, et les agents SNMP).

 

Je constate également que, chez beaucoup de mes clients, la proposition de faire du SNMP depuis l’extérieur est (à juste raison) refusé.

 

Il ne reste donc que très peu de solutions pour proposer  une interface unique (monitoring, reporting, SLA), et des consultations de graphiques sur l’état de vie d’eZ Publish.

 

Check ez_Nagios graph Centreon

Graphiques eZ Nagios

 

Centreon Monitoring Services

Installation

Copier le script .sh dans le répertoire plugins de Nagios / Centreon

chown nagios.nagios check_ez_nagios.sh
chmod +x check_ez_nagios.sh

Création d’un utilisateur SQL pour le monitoring (facultatif)

Personnellement, je crée un compte dédié, n’ayant que le droit de faire du SELECT. Mais vous pouvez utiliser le compte de l’application par exemple…

CREATE USER 'eznagios'@'%' IDENTIFIED BY  'eznagios_pass';
GRANT USAGE ON * . * TO  'eznagios'@'%' IDENTIFIED BY  'eznagios_pass' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
GRANT SELECT ON  `martinez` . * TO  'eznagios'@'%';

Remplacer par vos valeurs bien entendu.

Ici nous avons:

  • Connexion BDD: % (tous)
  • Base de données: martinez
  • Utilisateur MySql: eznagios
  • Mot de pass: eznagios_pass

Configuration Centreon

Création de la commande check

Command Check Centreon ez_nagios

Création du service

Vous n’avez plus qu’à sélectionner la commande « check_ez_nagios » et renseigner les arguments {dbhost,username,password,database,mode}

(et bien entendu, vos différents paramétrages liés au service)

Check service ez_nagios

Configuration Nagios

Fichier checkcommands.cfg

define command{
        command_name                    check_ez_nagios
        command_line                    $USER1$/check_ez_nagios.sh -H $ARG1$ -u $ARG2$ -p $ARG3$ -D $ARG4$ -m $ARG5$
        ;$ARG1$                         dbhost
        ;$ARG2$                         username
        ;$ARG3$                         password
        ;$ARG4$                         database
        ;$ARG5$                         mode
}

Fichier services.cfg

define service{
        host_name                               mon_serveur_ez
        service_description             Check_ez_nagios_db_martinez_ContentObject
        _SERVICE_ID                     229
        check_command                   check_ez_nagios!mon_serveur_ez!eznagios!eznagios_pass!martinez!contentobject
        max_check_attempts                      3
        normal_check_interval           5
        retry_check_interval            1
        active_checks_enabled           1
        passive_checks_enabled          0
        check_period                    24x7_GMT
        notification_period             24x7_GMT
        notification_interval           5
        notification_options            w,u,c,r
        notifications_enabled           0
        first_notification_delay                1
        contact_groups                  SLA_24x7
        contacts                                Sysadmin
}

define service{
        host_name                               mon_serveur_ez
        service_description             Check_ez_nagios_db_martinez_eZsession
        _SERVICE_ID                     228
        check_command                   check_ez_nagios!mon_serveur_ez!eznagios!eznagios_pass!martinez!ezsession
        max_check_attempts                	3
        normal_check_interval           5
        retry_check_interval            1
        active_checks_enabled           1
        passive_checks_enabled          0
        check_period                    24x7_GMT
        notification_period             24x7_GMT
        notification_interval           5
        notification_options            w,u,c,r
        notifications_enabled           0
        first_notification_delay                1
        contact_groups                  SLA_24x7
        contacts                                Sysadmin
}

 

 


12 Commentaires sur “check_eZ_Nagios: Monitorer eZ Publish avec Nagios/Centreon”

  • 1 Gandbox a écrit:

    Ce qui serait intéressant, c’est de monitorer les inconsistances de données, et vérifiant des sommes logiques que l’on devrait trouver entres les objets, les noeuds, les attributs, les versions, etc…

    Ca rend plus complexe le requêtage, mais plus utile le monitoring puisqu’il permettrait d’être alerter que les données eZ commencent à devenir inconsistances, ce qui est symptomatiques de bugs, mauvaises pratiques, scripts dégénérants, …

  • 2 Nicolas Martinez a écrit:

    Oui, la c’est plus de la supervision.

    Gig… envoie ton SQL, c’est tout ce qu’il me manque :)

  • 3 Alex a écrit:

    +1

  • 4 Gandbox a écrit:

    Ca serait aussi intéressant de monitorer les pics de charges sur le cache, le SQL, le template processing… :)

    Tu demandes si t’as besoin

  • 5 Nicolas Martinez a écrit:

    J’ai besoin… la Bdd eZ, c’est pas mon truc :)

    Olive m’a déjà donné des pistes pour la supervision du cache en mode Cluster.

  • 6 Gandbox a écrit:

    Certaines infos nécessitent un log en amont, pour 2 raisons :
    - Soit optimiser les traitement, et éviter que le monitoring soit une source de charge… à monitorer
    - Soit parceque l’info n’est pas en BDD et doit être capturer à la volée (dépassement d’un nombre de SQL par URI par exemple)

  • 7 gggeek a écrit:

    Pour des infos sur les perfs, dans l’extension ezperformancelogger il y a des bouts de code interessants qui pourraient etre reutilises.

    Dans ezsnmmpd il y a pas mal de requetes sql sur l’etat de santé de la bdd

    Tout autre controle sur la coherence des donnees en bdd: je suis preneur! Le projet ideal pour ca serait ezdbintegrity, mais c’est assez vide pour le moment

  • 8 Nicolas Martinez a écrit:

    Et ben, le moins qu’on puisse dire, c’est que ça passionne ! C’est bon ca :D

  • 9 rocheto a écrit:

    Bonjour,

    Auriez vous une doc d’installation détaillée.
    Exemple
    1 – Prérequis (version ez, version mysql, nagios ?)
    2 – URL de téléchargement de l’extension
    3 – déploiement et conf du/des package (extension,nagios etc etc)
    4 – validation que l’install c’est bien passée.
    5 – Screenshot des indicateurs produits.

    Merci beaucoup.

  • 10 Nicolas Martinez a écrit:

    Bonsoir,
    non pas pour l’instant, j’avoue m’être fait dépassé par d’autres sujets.

    Mais c’est dans ma todolist ;)

    Un premier Graph
    https://twitter.com/#!/MartY_NiM/status/181507390280175616/photo/1

  • 11 alex a écrit:

    Hello

    ce sujet a t’il avancé : ca m’interesse grandement en ce moment ou dois je partir de ton script ici comme base de depart. qui me semble assez cool

    Alexandre

  • 12 Nicolas Martinez a écrit:

    Arf, je viens tout juste de voir ton commentaire en faisant le ménage parmi les SPAMs. Du coup, je vais fermer temporairement les commentaires.
    => Relai sur Twitter / G+ au pire :
    https://plus.google.com/+NicolasMartinezMartY
    https://twitter.com/MartY_NiM

    Non, ça n’a pas plus avancé, car il n’y a pas eu de retour sur les SQL intéressants à intégrer…

    J’avais d’autres sujets en parallèle sur le monit eZ (notamment le check de mots clé / URL), mais impossible de pouvoir faire bosser du dev sur ça.

    Si c’est toujours d’actualité pour toi et que tu peux m’aider à faire avancer le sujet (partie SQL notamment), je peux m’organiser pour prendre du temps sur ce sujet ;)