Table of Contents
Guide Utilisateur Monitoring
Introduction
Introduction
Le plugin Monitoring de GLPI permet de paramétrer depuis celui-ci les éléments essentiels de la supervision par SHINKEN :
- Les commandes : pour définir les contrôles
- Les calendriers: pour définir les périodes de contrôles en jours: Lundi/Mardi/etc… et la période de notification
- Les composants: pour définir quoi monitorer sur chaque hôte.
- Les catalogues: pour définir quels hôtes système de monitorer.
## Configuration du catalogue de commandes
Description sommaire
Les commandes définissent toutes les commandes utilisées par SHINKEN pour surveiller les hôtes (exemple : ping, requètes http…). Habituellement on ne touche pas à ces configurations. On va juste se servir des objets commandes pour les ajouter au Catalogue de commandes.
L'objet commande décrit :
- La ligne de commande qui sera exécutée depuis le serveur
- Les arguments associés à cette commande
Création de commandes
Les plugins nagios (et donc les commandes) ont été normalement installés avec Shinken.
Pour ajouter des commandes cf . le Guide utilisateur avancé.
Configuration des commandes
Toutes les commandes fournies par Shinken ne sont pas définies dans le plugin glpi_monitoring.
Tableau comparatif des commandes NAGIOS/PLUGIN MONITORING
| N° | Commande GLPI | Commande SHINKEN | Détail |
|---|---|---|---|
| _echo | |||
| _internal_host_up | _internal_host_up | ||
| 3 | Business rules | bp_rule | bp_rule |
| check_dig | $NAGIOSPLUGINSDIR$/check_dig -H $HOSTADDRESS$ -l $ARG1$ | ||
| check_host_alive | $NAGIOSPLUGINSDIR$/check_ping -H $HOSTADDRESS$ -w 1000,100% -c 3000,100% -p 1 | ||
| check_nrpe | $NAGIOSPLUGINSDIR$/check_nrpe -H $HOSTADDRESS$ -t 9 -u -c $ARG1$ | ||
| check_nrpe_args | $NAGIOSPLUGINSDIR$/check_nrpe -H $HOSTADDRESS$ -t 9 -u -c $ARG1$ -a $ARG2$ $ARG3$ $ARG4$ $ARG5$ | ||
| check_ping | $NAGIOSPLUGINSDIR$/check_icmp -H $HOSTADDRESS$ -w 3000,100% -c 5000,100% -p 10 | ||
| check_snmp_service | $NAGIOSPLUGINSDIR$/check_snmp_service -H $HOSTADDRESS$ -C $SNMPCOMMUNITYREAD$ | ||
| check_snmp_storage | $NAGIOSPLUGINSDIR$/check_snmp_storage.pl -H $HOSTADDRESS$ -C $SNMPCOMMUNITYREAD$ -m $ARG1$ -f -w $ARG2$ -c $ARG3$ -S0,1 -o 65535 | ||
| check_snmp_time | $NAGIOSPLUGINSDIR$/check_snmp_time.pl -H $HOSTADDRESS$ -C $SNMPCOMMUNITYREAD$ -f -w $ARG1$ -c $ARG2$ | ||
| check_tcp | $NAGIOSPLUGINSDIR$/check_tcp -H $HOSTADDRESS$ -p $ARG1$ | ||
| configuration-check | sudo /etc/init.d/shinken check | ||
| detailled-host-by-email | $PLUGINSDIR$/notify_by_email.py -n host -S localhost -r $CONTACTEMAIL$ -f html -c “$NOTIFICATIONTYPE$,,$HOSTNAME$,,$HOSTADDRESS$,,$LONGDATETIME$”“ -o ”“$HOSTSTATE$,,$HOSTDURATION$” -d “$_HOSTDETAILLEDDESC$” -i “$_HOSTIMPACT$” | ||
| detailled-service-by-email | $PLUGINSDIR$/notify_by_email.py -n service -S localhost -r $CONTACTEMAIL$ -f html -c “$NOTIFICATIONTYPE$,,$HOSTNAME$,,$HOSTADDRESS$,,$LONGDATETIME$” -o “$SERVICEDESC$,,$SERVICESTATE$,,$SERVICEOUTPUT$,,$SERVICEDURATION$” -d “$_SERVICEDETAILLEDESC$” -i “$_SERVICEIMPACT$” -a “$_SERVICEFIXACTIONS$” | ||
| notify-host-by-android-sms | android_sms $CONTACTPAGER$ Host: $HOSTNAME$\nAddress: $HOSTADDRESS$\nState: $HOSTSTATE$\nInfo: $OUTPUT$\nDate: $DATETIME$ | ||
| notify-host-by-email | $PLUGINSDIR$/notify_by_email.py -n host -S localhost -r $CONTACTEMAIL$ -f html -c “$NOTIFICATIONTYPE$,,$HOSTNAME$,,$HOSTADDRESS$,,$LONGDATETIME$” -o “$HOSTALIAS$,,$HOSTSTATE$,,$HOSTDURATION$” | ||
| notify-host-by-xmpp | $PLUGINSDIR$/notify_by_xmpp.py -a $PLUGINSDIR$/notify_by_xmpp.ini “Host '$HOSTNAME$' is $HOSTSTATE$ - Info : $HOSTOUTPUT$” $CONTACTEMAIL$ | ||
| notify-service-by-android-sms | android_sms $CONTACTPAGER$ Service: $SERVICEDESC$\nHost: $HOSTNAME$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\nInfo: $OUTPUT$\nDate: $DATETIME$ | ||
| notify-service-by-email | $PLUGINSDIR$/notify_by_email.py -n service -S localhost -r $CONTACTEMAIL$ -f html -c “$NOTIFICATIONTYPE$,,$HOSTNAME$,,$HOSTADDRESS$,,$LONGDATETIME$” -o “$SERVICEDESC$,,$SERVICESTATE$,,$SERVICEOUTPUT$,,$SERVICEDURATION$” | ||
| notify-service-by-xmpp | $PLUGINSDIR$/notify_by_xmpp.py -a $PLUGINSDIR$/notify_by_xmpp.ini “$NOTIFICATIONTYPE$ $HOSTNAME$ $SERVICEDESC$ $SERVICESTATE$ $SERVICEOUTPUT$ $LONGDATETIME$” $CONTACTEMAIL$ | ||
| 12 | Check local disk | pm-check-host-alive | $PLUGINSDIR$/check.sh $HOSTADDRESS$ -c $ARG1$ SERVICE $USER1$ |
| 11 | Check local cpu | pm-check_cpu_usage | $PLUGINSDIR$/check_cpu_usage -w $ARG1$ -c $ARG2$ |
| 4 | Check a DNS entry | pm-check_dig | $PLUGINSDIR$/check_dig -H $HOSTADDRESS$ -l $ARG1$ |
| 6 | Check disk | pm-check_disk | $PLUGINSDIR$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$ |
| 17 | Dummy check | pm-check_dummy | $PLUGINSDIR$/check_dummy $ARG1$ “$ARG2$” |
| 18 | ESX hosts checks | pm-check_esx_host | $PLUGINSDIR$/check_esx3.pl -D $VCENTER$ -H $HOSTADDRESS$ -u $VCENTERLOGIN$ -p $VCENTERPASSWORD$ l $ARG1$ |
| 19 | ESX VM checks | pm-check_esx_vm | $PLUGINSDIR$/check_esx3.pl -D $VCENTER$ -N $HOSTALIAS$ -u $VCENTERLOGIN$ -p $VCENTERLOGIN$ -l $ARG1$ |
| 5 | Check a FTP service | pm-check_ftp | $PLUGINSDIR$/check_ftp -H $HOSTADDRESS$ |
| 7 | Check host alive (ICMP) | pm-check_host_alive | $NAGIOSPLUGINSDIR$/check_icmp -H $HOSTADDRESS$ -w 1000,100% -c 3000,100% -p 1 |
| pm-check_hpjd | $PLUGINSDIR$/check_hpjd -H $HOSTADDRESS$ -C $SNMPCOMMUNITYREAD$ | ||
| pm-check_http | $PLUGINSDIR$/check_http -H $HOSTADDRESS$ | ||
| pm-check_https | $PLUGINSDIR$/check_http -H $HOSTADDRESS$ -S | ||
| pm-check_https_certificate | $PLUGINSDIR$/check_http -H $HOSTADDRESS$ -C 30 | ||
| pm-check_ldap | $PLUGINSDIR$/check_ldap -H $HOSTADDRESS$ -b “$LDAPBASE$” -D $DOMAINUSER$ -P “$DOMAINPASSWORD$” | ||
| pm-check_ldaps | $PLUGINSDIR$/check_ldaps -H $HOSTADDRESS$ -b “$LDAPBASE$” -D $DOMAINUSER$ -P “$DOMAINPASSWORD$” | ||
| pm-check_linux_host_alive | $PLUGINSDIR$/check_tcp -H $HOSTADDRESS$ -p 22 -t 3 | ||
| 10 | Check load | pm-check_load | $PLUGINSDIR$/check_load -r -w $ARG1$ -c $ARG2$ |
| pm-check_mssql_connexion | $PLUGINSDIR$/check_mssql_health –hostname $HOSTADDRESS$ –username “$MSSQLUSER$” –password “$MSSQLPASSWORD$” –mode connection-time | ||
| 16 | Distant mysql check | pm-check_mysql_connexion | $PLUGINSDIR$/check_mysql -H $HOSTADDRESS$ -u $MYSQLUSER$ -p $MYSQLPASSWORD$ |
| 1 | Ask a nrpe agent | pm-check_nrpe | $NAGIOSPLUGINSDIR$/check_nrpe -H $HOSTADDRESS$ -t $ARG1$ -u $ARG2$ -c $ARG3$ |
| 2 | Ask a nrpe agent with arguments | pm-check_nrpe_args | $NAGIOSPLUGINSDIR$/check_nrpe -H $HOSTADDRESS$ -t $ARG1$ -u $ARG2$ -c $ARG3$ -a $ARG4$ $ARG5$ $ARG6$ $ARG7$ $ARG8$ $ARG9$ |
| pm-check_oracle_listener | $PLUGINSDIR$/check_oracle –tns $HOSTADDRESS$ | ||
| 8 | Check host alive (ping) | pm-check_ping | $NAGIOSPLUGINSDIR$/check_ping -H $HOSTADDRESS$ -w 3000,100% -c 5000,100% -p 1 |
| pm-check_smtp | $PLUGINSDIR$/check_smtp -H $HOSTADDRESS$ | ||
| pm-check_smtps | $PLUGINSDIR$/check_smtp -H $HOSTADDRESS$ -S | ||
| 13 | Check snmp | pm-check_snmp | $PLUGINSDIR$/check_snmp -H $HOSTADDRESS$ -P $ARG1$ -C $ARG2$ -o $ARG3$,$ARG4$,$ARG5$,$ARG6$,$ARG7$,$ARG8$,$ARG9$,$ARG10$ |
| pm-check_ssh | $PLUGINSDIR$/check_ssh -H $HOSTADDRESS$ | ||
| 9 | Check Linux host alive | pm-check_tcp | $PLUGINSDIR$/check_tcp -H $HOSTADDRESS$ -p $ARG1$ |
| 14 | Check users connected | pm-check_users | $PLUGINSDIR$/check_users -w $ARG1$ -c $ARG2$ |
| 15 | Check Windows host alive | pm-check_windows_host_alive | $PLUGINSDIR$/check_tcp -H $HOSTADDRESS$ -p 139 -t 3 |
| pm-detailled-host-by-email | /usr/bin/printf “%b” “Shinken Notification\n\nType:$NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nDate/Time: $DATE$/$TIME$\n Host Output : $HOSTOUTPUT$\n\nHost description: $_HOSTDESC$\nHost Impact: $_HOSTIMPACT$” | /usr/bin/mail -s “Host $HOSTSTATE$ alert for $HOSTNAME$” $CONTACTEMAIL$ | ||
| pm-detailled-service-by-email | /usr/bin/printf “%b” “Shinken Notification\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $DATE$ at $TIME$\nService Output : $SERVICEOUTPUT$\n\nService Description: $_SERVICEDETAILLEDESC$\nService Impact: $_SERVICEIMPACT$\nFix actions: $_SERVICEFIXACTIONS$” | /usr/bin/mail -s “$SERVICESTATE$ on Host : $HOSTALIAS$/Service : $SERVICEDESC$” $CONTACTEMAIL$ | ||
| 20 | Host action | pm-host_action | host_action |
| pm-notify-host-by-email | /usr/bin/printf “%b” “Shinken Notification\n\nType:$NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\nDate/Time: $DATE$ $TIME$\n” | /usr/bin/mail -s “Host $HOSTSTATE$ alert for $HOSTNAME$” $CONTACTEMAIL$ | ||
| pm-notify-host-by-email-py | $PLUGINSDIR$/send_mail_host.py -n “$NOTIFICATIONTYPE$” -H “$HOSTALIAS$” -a “$HOSTADDRESS$” -i “$SHORTDATETIME$” -o “$HOSTOUTPUT$” -t “$CONTACTEMAIL$” -r “$HOSTSTATE$” -S shinken@localhost | ||
| pm-notify-host-by-xmpp | $PLUGINSDIR$/notify_by_xmpp.py -a $PLUGINSDIR$/notify_by_xmpp.ini “Host $HOSTNAME$ is $HOSTSTATE$ - Info : $HOSTOUTPUT$” $CONTACTEMAIL$ | ||
| pm-notify-service-by-email | /usr/bin/printf “%b” “Shinken Notification\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTNAME$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $DATE$ $TIME$\nAdditional Info : $SERVICEOUTPUT$\n” | /usr/bin/mail -s “ $NOTIFICATIONTYPE$ alert - $HOSTNAME$/$SERVICEDESC$ is $SERVICESTATE$ ” $CONTACTEMAIL$ | ||
| pm-notify-service-by-email-py | $PLUGINSDIR$/send_mail_service.py -s “$SERVICEDESC$” -n “$NOTIFICATIONTYPE$” -H “$HOSTALIAS$” -a “$HOSTADDRESS$” -i “$SHORTDATETIME$” -o “$SERVICEOUTPUT$” -t “$CONTACTEMAIL$” -r “$SERVICESTATE$” -S shinken@localhost | ||
| pm-notify-service-by-xmpp | $PLUGINSDIR$/notify_by_xmpp.py -a $PLUGINSDIR$/notify_by_xmpp.ini “$NOTIFICATIONTYPE$ $HOSTNAME$ $SERVICEDESC$ $SERVICESTATE$ $SERVICEOUTPUT$ $LONGDATETIME$” $CONTACTEMAIL$ | ||
| reload-shinken | nohup sh -c '/etc/init.d/shinken reload' > /dev/null 2>&1 & | ||
| restart-shinken | nohup sh -c '/etc/init.d/shinken restart' > /dev/null 2>&1 & | ||
| restart_shinken | nohup sh -c '/usr/local/shinken/bin/stop_arbiter.sh && sleep 3 && /usr/local/shinken/bin/launch_arbiter.sh' > /dev/null 2>&1 & |
Afin d'utiliser un chemin relatif dans la ligne de commande renseigner le $PATH dans: SHINKEN_DIR/resource.d/paths.cfg (sur le serveur Shinken).
Vérification de la configuration
Il est préférable de tester les commandes localement afin de voir si cela fonctionne bien. Par exemple
user@shinken:~$./check_snmp_storage.pl -H 127.0.0.1 -C public -m / -w 80% -c 90% -G\\ /dev: 0%used(0GB/0GB) /: 20%used(11GB/57GB) (<80%) : OK
Configuration des calendriers
Description sommaire
Les calendriers définissent les périodes pour monitorer les hôte :
Un objet calendrier décrit :
- La fréquence des contrôles en jour
- La plage horaire des contrôles dans la journée
Définir les calendriers
Créer un nouvel élément de calendrier
Dans la vue par défaut du plugin Monitoring appuyer sur = pour accéder à la vue système
Dans le menu Calendrier ajouter une élément +
Créer l'élément de calendrier en indiquant le nom
puis cliquer sur Ajouter
Renseigner les éléments de planification
Ajouter des plages de planification
Retourner dans le menu calendrier
Sélectionner le calendrier
Ajouter autant de plages horaires que nécessaire
Enregistrer les modifications
Retourner dans Calendrier puis Sauvegarder
Configuration des composants
Description sommaire
Les composants sont une association de 3 objets, qui définiront un contrôle avec :
- Une commande (ping par exemple)
- Un calendrier (jour et plage horaire )
- Une définition de contrôle ( fréquence a laquelle les contrôles sont effectués, au bout de combien d'essais un service ou un hôte est déclaré “down” et le temps entre chaque essai). Un objet composant décrit le processus de contrôle :
- La commande à exécuter et ses arguments
- Définition d'un contrôle (le délai entre deux contrôles)
- La période de contrôle (selon éléments de calendrier)
Créer le composant
Créer le composant
Dans la vue par défaut du plugin Monitoring appuyer sur = pour accéder à la vue système
Dans le menu Composants ajouter une élément +
Créer le composant en indiquant :
- le nom
- la commande
- Sélectionner un modèle graphique. La plupart des modèles sont déjà définis. Si vous souhaitez en créer un: Il suffit de mettre votre commande dans le champ Example of perfdata for this control et Enregistrer. Le plugin va générer un nouveau modèle.
- la définition de contrôle
- la période de contrôle
Modifier le composant ainsi créé
Renseigner les arguments
Certains arguments passés par une commande peuvent être variabilisés dans l'objet commande (cf guide avancé)
Renseigner les arguments de la commande
Il est possible d'utiliser des mots-clefs (tags)
Ces tags représentent des valeurs qui seront récupérées dans les informations de l'hôte afin de servir l'argument concerné.
Liste des tags disponibles :
- [[HOSTNAME]] : Nom du matériel
- [[IP]] : IP du matériel
- [[NETWORKPORTNUM]] : Numéro de port réseau
- [[NETWORKPORTNAME]] : Nom de port réseau
- [[NETWORKPORTDESCR]] : Port réseau ifDescr des matériels réseaux
- [SNMP:version] : Version SNMP de l'équipement réseau ou imprimante
- [SNMP:authentication] : Communauté SNMP de l'équipement réseau ou imprimante
Ainsi le tag [SNMP:authentication] va passer en argument la communaté SNMP (pour équipement réseau uniquement)
Renseigner les informations WeatherMap (optionnel)
Si le composant fourni des informations de perfdata (cf . guide utilisateur avancé) renseigner les informations permettant de formater ces informations si l'on souhaite les utiliser dans un WeatherMap.
Enregistrer la configuration
Retourner dans Composants puis Sauvegarder
Configuration du catalogue de composants
Description sommaire
Un catalogue de composant décrit pour un processus de monitoring :
- la listes des hôtes
- la liste des composants
- la liste des contacts
Création d'un catalogue de composants
Créer un catalogue de composants
Dans la vue par défaut du plugin Monitoring appuyer sur = pour accéder à la vue système
Dans le menu Catalogue de Composants ajouter une élément +
Indiquer le nom du nouveau catalogue
Puis cliquer sur Ajouter
Configuration du catalogue de composants
Mettre à jour le catalogue
- Indiquer les composants Dans le sous menu Composants
- Ajout d'un hôte statique les hôtes à monitorer 1), Dans le sous menu Hôtes statiques
- Sélectionner le type d'hôte à ajouter
- Sélectionner les hôtes dans la liste
- cliquer sur Ajouter
- Ajouter un contact (optionnel) Dans le sous menu Contacts, ajouter un contact qui sera prévenu si l'état des composants change (UP, DOWN, WARNING, etc…).
- Enregistrer les modifications dans l'onglet Catalogue de composants, appuyer sur Sauvegarder
Vérification de la configuration
Une fois le catalogue défini, Shinken devrait normalement redémarrer automatiquement.
Retourner dans le catalogue ainsi créer pour vérifier la présence de tous les éléments .
Conclusion
A partir de ce moment les composants rajoutés dans le catalogue sont monitorés et les données collectés seront affichées dans les différentes vues du plugin Monitoring.
