Installer Nagios NCG sans YAIM

Un article de lcgwiki.
Revision as of 19:35, 21 janvier 2009 by Pbrinette (talk | contribs) (Documentations et liens utiles)
Jump to: navigation, search

Installer Nagios NCG sans YAIM

L'installation et la configuration des packages NCG avec Yaim présentent des inconvénients majeurs. La distribution Nagios+NCG est actuellement testée par l'OAT comme un composant d'un système de monitoring régional distribué. Cette distribution évolue assez rapidement et intègre régulièrement de nouveaux composants qui ne sont pas utiles, et peuvent même être génant pour un système de monitoring de site. Par exemple:

  • l'accès à la page de status de nagios pour n'importe quelle personnes appartenant à la VO Ops ou dteam
  • L'envoi des résultat d'éxécution des sondes par Active MQ "quelque part"
  • Le stockage des informations dans une base de donnée mysql (NDOTools)
  • (ce qui vous agasse dans yaim) ...

Prérequis

NCG nécessite d'avoir accès à la SAM Programatic Interface (SAM-PI) afin de pouvoir générer la configuration et surtout récupérer les résultats des tests SAM. Pour obtenir un accès, il faut créer un ticket GGUS avec comme sujet:

SAM-PI Access request as profile "EGEE-SA1 Monitoring Profile" 

Dans le message du ticket, il faut spécifier l'IP et/ou le Hostname de la machine qui accédera à la base SAM.

Installation de la machine

Configuration matérielle

  • 256 Mo de RAM
  • 5 Go de disque
  • SL 4.5 i386/x86_64
  • Installation minimale du système

Configurer les repository

Ajouter les repository suivant dans /etc/yum.repos.d/

  • LCG-CA
  • DAG
  • jpackage (pour glite-UI)
  • glite-UI
# cd /etc/yum.repos.d/
# wget http://grid-deployment.web.cern.ch/grid-deployment/glite/repos/[nom du repository].repo
  • egee-SA1
# wget http://www.sysadmin.hep.ac.uk/rpms/egee-SA1/sl4/egee-SA1.repo
   

Installation les packages nécessaire

  • installer la couche UI
# yum install LCG-CA
# yum install glite-UI
# yum install gcc-c++ 
  • Configuration de la couche 'UI' de la machine

Modification du site-info.def afin de le configurer pour un UI minimale

BDII_HOST=cclcgtopbdii01.in2p3.fr
VOS="ops dteam"
PX_HOST=myproxy.grif.fr
GLOBUS_TCP_PORT_RANGE=20000,250000
  • Configuration avec YAIM
# /opt/glite/yaim/bin/yaim -c -s site-info.def -n glite-UI
  • Installation de Nagios:
# yum install nagios nagios-plugins httpd
  • Installation des sondes et de ncg
# yum install nagios-proxy-refresh  grid-monitoring-probes-hr.srce grid-monitoring-probes-ch.cern
# yum install grid-monitoring-config-gen grid-monitoring-fm-nagios-local grid-monitoring-fm-nagios-remote grid-monitoring-probes-org.bdii

Configuration du service

Rafraîchissement de proxy

Il faut au préalable déposer un proxy longue durée sur le serveur MyProxy. Depuis un machine interactive, lancer la commande suivante :

$ export GT_PROXY_MODE=old
$ myproxy-init -c 336 -k NagiosRetrieve-ccegeevmli10.in2p3.fr-dteam -s myproxy.grif.fr -l nagios -x -Z "/O=GRID-FR/C=FR/O=CNRS/OU=CC-LYON/CN=ccegeevmli10.in2p3.fr"

Cette commande permet de générer un proxy valide 14 jours.

  • Le login ( -l) : nagios
  • Le "Credential" (-k) : NagiosRetrieve-"hostname de nagios + domaine"-"VO"
  • Le DN de la machine autorisé de récupéré le proxy (-Z) : le DN du certificat machine du serveur nagios.

Il est possible d'autoriser plusieurs machine à récupérer ce proxy, le paramètre -Z autorise les expressions rationnelles (regexp):

-Z "/O=GRID-FR/C=FR/O=CNRS/OU=CC-LYON/CN=ccegeevmli[0-3][0-9].in2p3.fr"

Le fichier de configuration du service est: /etc/nagios-proxy-refresh.conf

MYPROXY_HOST=myproxy.grif.fr
NAGIOS_VO=dteam
MYPROXY_USER=nagios
LOCALUSER=nagios
MYPROXY_NAME=NagiosRetrieve-`hostname -f`-${NAGIOS_VO}
OUTPUT_PROXY=/etc/nagios/globus/userproxy.pem
  • Démarrage du service de renouvellement de proxy
# /etc/init.d/nagios-proxy-refresh start

Configuration de HTTPd

  • Ajouter d'un utilisateur autorisé à se connecter à la console de Nagios.
# htpasswd -c /etc/nagios/htpasswd.users nagiosadmin 
New password: 
Re-type new password: 
Adding password for user nagiosadmin
  • Ajouter l'utilisateur apache au groupe nagios afin que le serveur web puisse envoyer dans commandes à nagios via un FIFO
# usermod -G nagiocmd apache
# usermod -G nagios apache
  • Démarrer le service
# /etc/init.d/httpd start

Configuration de NCG

Le fichier de configuration principal de NCG est /etc/ncg/ncg.cfg. Il inclut le fichier /etc/ncg/ncg.localdb permettant de personnaliser la configuration générée.

Le fichier principal est découpé en section. Le début du fichier permet de renseigner des variables utilisées dans la suite du fichier.

Les variables à renseigner en entête de fichier sont :

  • SITENAME : Le nom du site pour lequel générer la configuration
  • MYPROXY_SERVER : Serveur myproxy utilisé pour stocker le proxy longue durée
  • BDII : hostname du sitebdii du site à superviser
  • MAIN_DB_FILE=/etc/ncg/ncg.localdb : fichier contenant les définitions locales de la configuration.
# Exemple
SITENAME=IN2P3-CC
MYPROXY_SERVER=myproxy.grif.fr
BDII=cclcgip01.in2p3.fr
SAM_VOS=OPS
MAIN_DB_FILE=/etc/ncg/ncg.localdb

Le fichier est en suite découpé en section correspondant aux modules perl utilisés pour générer la configuration

Dans la section <NCG::ConfigGen> il faut renseigner les valeurs :

<NCG::ConfigGen>
  <Nagios> 
      MYPROXY_SERVER=${MYPROXY_SERVER} # utilise la variable déclaré précédement)
      PROBES_TYPE=local,remote,native  # type configuration nagios à générer
      # Emplacement des répertoire à utiliser, ne pas modifier pour une install SL4
      TEMPLATES_DIR = /usr/share/grid-monitoring/config-gen/nagios
      OUTPUT_DIR = /etc/nagios/wlcg.d
      NRPE_OUTPUT_DIR = /etc/nagios/nrpe/
      RESOURCES_OUTPUT_DIR = /etc/nagios
     
      # Adresse email par défaut de l'administrateur nagios
      NAGIOS_ADMIN=admin@mondomaine.fr
 
      # Nom du "Credential" utilisé pour récupérer un proxy depuis le serveur myproxy
      # Il faut utiliser la même valeur que celle définie dans /etc/nagios-proxy-refresh.conf
      MYPROXY_NAME=NagiosRetrieve-ccegeevmli08.in2p3.fr-dteam
 
      # nom de l'utilisateur utilisé pour récupérer un proxy depuis le serveur myproxy
      # Il faut utiliser la même valeur que celle définie dans /etc/nagios-proxy-refresh.conf
      MYPROXY_USER=nagios
 
      # Récupère les tests SAM non critique ?
      SAM_INCLUDE_ALL=0
 
      # Liste des VOs pour lesquels récupérer les tests SAM
      SAM_VOS=OPS
      # nom de la vo utilisée pour passer les tests locaux:
      VO=dteam
  </Nagios>
 </NCG::ConfigGen>

Attention : la syntaxe des noms des VOs utilisée par la variable SAM_VOS n'est pas la même que celle définie dans le CIC portal. De plus il faut respecter la casse. Pour récupérer la liste des VOs déclarée dans la base de SAM, il suffit de lancer depuis le serveur nagios la commande :

$ wget -q -O - http://lcg-sam.cern.ch:8080/same-pi/vo_names.jsp | xmllint --format -


Dans la section <NCG::SiteInfo> on peut spécifier des information complémentaires

  • Ajouter les neuds présents dans le BDII mais non déclaré dans la GOCDB:
# NCG modules for gathering site information
<NCG::SiteInfo>
[...]
 <LDAP>
   LDAP_ADDRESS=$BDII
   ADD_HOSTS=0
 </LDAP>
[...]

La dernière section <NCG::RemoteMetrics> permet de spécifier les actions concerntant SAM en utilisant les variables déclarés plus haut.

<NCG::RemoteMetrics>
 # Values of parameters will be taken from 
 # configuration of NCG::ConfigGen::Nagios
 <SAM>
   SAM_INCLUDE_ALL=$SAM_INCLUDE_ALL
   SAM_VOS=$SAM_VOS
 </SAM>
 <NPM/>
</NCG::RemoteMetrics>

Le fichier /etc/ncg/ncg.localdb permet de personnaliser la configuration générée :

  • Ajouter un contact supplémentaire
ADD_CONTACT!un_admin@mondomaine.fr
  • Supprimer un contact

Par défaut NCG prend le contact du site déclaré dans le BDII. La directive pour supprimer un contact est:

REMOVE_CONTACT!grid.admin@cc.in2p3.fr
  • Supprimer un 'host' :
REMOVE_HOST!hostname_de_la_machine
  • Supprimer un groupe de service sur une machine
REMOVE_SERVICE!ostname_de_la_machine!org.glite.LocalLogger

D'autres exemples sont visibles dans /etc/ncg/ncg.localdb.example

Génération de la configuration

Pour générer la configuration, il suffit de lancer la commande :

# /usr/sbin/ncg.pl

NCG génère la configuration Nagios en plusieurs passe :

  • Récupération des informations déclaré dans la GOC-DB au traver de la SAM-PI.
  • Récupération des informations dans le Site BDII
  • Croisement des données générés.
  • Génération de la configuration nagios dans /etc/nagios/wlcg.d

NCG se base sur des templates pour générer la configuration. Ces templates sont dans le répertoire /usr/share/grid-monitoring/config-gen/nagios/

Après génération de la configuation le répetoire /etc/nagios/wlcg.d contient les fichiers suivants :

commands.cfg
contacts.cfg
host.groups.cfg
hosts.cfg
host.templates.cfg
service.groups.cfg
services.cfg
service.templates.cfg
users.cfg
wlcg.nagios.cfg

ATTENTION ! Ne pas modifier ces fichiers, il seront écrasés au prochain appel NCG

Modification de la configuration de Nagios

Il faut modifier la configuration de Nagios pour inclure ces ficheirs de configuration. Le fichier de configuration est : /etc/nagios/nagios.cfg

  • Commenter la configuration par défaut:
#cfg_file=/etc/nagios/objects/localhost.cfg
#cfg_file=/etc/nagios/objects/commands.cfg
#cfg_file=/etc/nagios/objects/contacts.cfg
#cfg_file=/etc/nagios/objects/timeperiods.cfg
#cfg_file=/etc/nagios/objects/templates.cfg
  • Ajout du répertoire de la configuration NCG:
cfg_dir=/etc/nagios/wlcg.d
  • Modifier les paramètres comme suit :
check_external_commands=1
  • Pour un système de production, modifier le paramètre suivant. Cela éviter de générer des fichiers de logs inutiles lorsque Nagios importe les résultats des tests SAM.
log_passive_checks=1
  • En cas d'utilisation des sondes "local" ou "native", ajouter le fichier de ressource et modifier valeur de timeout des tests de services
resource_file=/etc/nagios/wlcg_resource.cfg
service_check_timeout=900

ATTENTION : Nagios ne supporte pas que des objet soit dupliqués dans la configuration. Pour tester la configuration, faut exécuter la commande suivante:

 # /usr/bin/nagios -v /etc/nagios/nagios.cfg


Si il n'y a pas d'erreur, il ne reste qu'à démarrer nagios.

 # /etc/init.d/nagios start

Puis à se connecter sur l'interface Web http://srv_nagios/nagios/ avec le login/mot de passe crée précédemment.

Exemple de configuration

Générer un configuration "Remote Only" pour un site donnée

La configuration NCG "Remote Only" permet de générer une configuration de nagios affichant le résultat des tests SAM


  • Renseigner les variables globales dans le fichier /etc/ncg/ncg.cfg
# Exemple
SITENAME=MON-SITE
MYPROXY_SERVER=myproxy.grif.fr
BDII=monbdii.mondaine.fr
SAM_VOS=OPS
MAIN_DB_FILE=/etc/ncg/ncg.localdb
[...]
<NCG::ConfigGen>
  <Nagios> 
      [...]
      PROBES_TYPE=remote
[...]
  • Générer la configuration
 # /usr/bin/ncg.pl -v
  • Redémarrer nagios
 # /etc/init.d/nagios restart

Générer un configuration utilisant les sondes grilles pour un site donnée

La configuration NCG "remote,local,native" permet de générer une configuration de nagios affichant le résultat des tests SAM et effectuant des tests sur les services.

  • Vérifier que le service de renouvellement de proxy est bien active
# /etc/init.d/nagios-proxy-refresh status
Cron nagios-proxy-refresh is enabled.
  • Forcer le renouvellement d'un proxy
# /usr/sbin/nagios-proxy-refresh 
MyProxy credential retrieved. VOMS credential retrieved. 
  • Renseigner les variables globales dans le fichier /etc/ncg/ncg.cfg
# Exemple
SITENAME=MON-SITE
MYPROXY_SERVER=myproxy.grif.fr
BDII=monbdii.mondaine.fr
SAM_VOS=OPS
MAIN_DB_FILE=/etc/ncg/ncg.localdb
[...]
<NCG::ConfigGen>
  <Nagios> 
      [...]
      PROBES_TYPE=remote,local,native
      MYPROXY_NAME=NagiosRetrieve-ccegeevmli08.in2p3.fr-dteam
[...]
  • La configuration par défaut test un service org.glite.LocalLogger qui est en général inaccessible. Pour le supprimer de la configuration, il faut rajouter les lignes suivantes au fichier /etc/ncg/ncg.localdb
REMOVE_SERVICE!monce01.mondomaine.fr!org.glite.LocalLogger
REMOVE_SERVICE!monce02.mondomaine.fr!org.glite.LocalLogger
REMOVE_SERVICE!monce03.mondomaine.fr!org.glite.LocalLogger
REMOVE_SERVICE!monce04.mondomaine.fr!org.glite.LocalLogger
  • Suppression de sondes inutiles. La configuration générée incluent 2 services qui ne sont pas utilisé dans notre cas:
    • org.egee.SendToMsg: Mécanisme de publication des résultats des sondes locale par ActiveMQ
    • hr.srce.GridProxy-Get: Sonde obsolète permettant de rafraichir le proxy.

Ces deux services sont défini dans les templates de configuration. Pour les enlever, il faut commenter les entrées dans les fichiers :

/usr/share/grid-monitoring/config-gen/nagios/wlcg.nagios/gridproxy.template
 # define service{
 #         use                             ncg-generic-service
 #         host_name                       <NAGIOS_SERVER>
 #         service_description             hr.srce.GridProxy-Get
 ...
 # }
 
 # define servicedependency{
 #         host_name                       <NAGIOS_SERVER>
 #         dependent_host_name             <NAGIOS_SERVER>
 #         service_description             hr.srce.GridProxy-Get
 #         dependent_service_description   hr.srce.GridProxy-Valid
 ...
 # }
/usr/share/grid-monitoring/config-gen/nagios/wlcg.nagios/sendtomsg.template
 #define service{
 #        use                             ncg-generic-service
 #        host_name                       <NAGIOS_SERVER>
 #        service_description             org.egee.SendToMsg
 ...
 #}
  • Générer la configuration
 # /usr/bin/ncg.pl -v
  • Redémarrer nagios
 # /etc/init.d/nagios restart


Ajouter la supervision de services non décrit dans NCG dans nagios

Rappel : Nagios ne supporte que des noms d'objets uniques. Si un objet appairait plus d'une fois, cela génère des erreurs qui empêchent le daemon de démarrer.

Running configuration check... CONFIG ERROR!  Restart aborted.  Check your Nagios configuration.

Le test de validité de la configuration se fait par la commande

# nagios -v /etc/nagios/nagios.cfg
[...]
Warning: Duplicate definition found for contact 'nagiosadmin' (config file '/etc/nagios/wlcg.d/wlcg.nagios.cfg', starting on line 49)
Error: Could not add object property in file '/etc/nagios/wlcg.d/wlcg.nagios.cfg' on line 50.
[...]


Toute la configuration de NCG est générée dans /etc/nagios/wlcg.d. NCG génère l'ensemble des objet utiles à nagios. La plupart des noms des objets manipulés par nagios on été redéfinis sont préfixé par ncg- afin qu'il n'y ai pas de collisions dans le nom. Par exemple :

  • ncg-host-notify-by-email
  • ncg-check-tcp
  • ncg-24x7
  • ...

Par défaut, le seul objet qui rentre en conflit est le contact nagiosadmin. Il faut donc le supprimer de la configuration Nagios par défaut. Le fichier est :

/etc/nagios/objects/contacts.cfg.
#define contact{
#        contact_name                    nagiosadmin            ; Short name of user
#        use                             generic-contact         ; Inherit default values from generic-contact template (defined above)
#        alias                           Nagios Admin           ; Full name of user
#        email                           nagios@localhost        ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
#        }


Pour ajouter des test spécifique au site, la meilleur façon de procéder consiste à rajouter des sous répertoire à l'arborescence nagios. Par exemple :

/etc/nagios/local_template/
/etc/nagios/contacts/
/etc/nagios/storage_server/
/etc/nagios/network_server/

Puis créer les fichiers hosts.cfg et services.cfg à l'intérieur des répertoire de services. Il faut toutefois garder à l'esprit que le contact nagiosadmin et le groupe de contacts nagios-admins sont défini par NCG.

Il est maintenant possible de rajouter les objets par défaut et les sous répertoires contenant les configurations locale dans /etc/nagios/nagios.cfg.

/etc/nagios/nagios.cfg
# objet par défauts
cfg_file=/etc/nagios/objects/commands.cfg
cfg_file=/etc/nagios/objects/contacts.cfg
cfg_file=/etc/nagios/objects/timeperiods.cfg
cfg_file=/etc/nagios/objects/templates.cfg
# repertoire specifique
/etc/nagios/local_template/
/etc/nagios/contacts/
/etc/nagios/storage_server/
/etc/nagios/network_server/

Utiliser une authentification par certificat sur l'interface Web de Nagios

Voir la section "Configure the nagios Web Interface" sur la page suivante: https://twiki.cern.ch/twiki/bin/view/LCG/GridMonitoringNcg

Documentations et liens utiles

  • Présentation de Nagios et tutorial NCG à EGEE'08

http://indico.cern.ch/sessionDisplay.py?sessionId=54&slotId=0&confId=32220#2008-09-24

  • Guide d'installation de Nagios NCG avec YAIM

https://twiki.cern.ch/twiki/bin/view/EGEE/GridMonitoringNcgYaim

  • Guide d'installation de Nagios NCG sans Yaim

https://twiki.cern.ch/twiki/bin/view/LCG/GridServiceMonitoringInfo

  • Description du fonctionnement de NCG

https://twiki.cern.ch/twiki/bin/view/EGEE/GridMonitoringNcgOverview

  • Astuces de configuration pour NCG

https://twiki.cern.ch/twiki/bin/view/EGEE/GridMonitoringNcgRecipes

  • Page de l'OAT

https://twiki.cern.ch/twiki/bin/view/LCG/GridServiceMonitoringInfo

  • Page de WLCG Monitoring Wokring Group

https://twiki.cern.ch/twiki/bin/view/LCG/GridServiceMonitoringInfo