Introduction
Le plugin Monitoring de GLPI permet de paramétrer depuis celui-ci les éléments essentiels de la supervision par SHINKEN :
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 :
Les plugins nagios (et donc les commandes) ont été normalement installés avec Shinken.
Pour ajouter des commandes cf . le Guide utilisateur avancé.
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).
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
Les calendriers définissent les périodes pour monitorer les hôte :
Un objet calendrier décrit :
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
Ajouter des plages de planification
Retourner dans le menu calendrier
Sélectionner le calendrier
Ajouter autant de plages horaires que nécessaire
Retourner dans Calendrier puis Sauvegarder
Description sommaire
Les composants sont une association de 3 objets, qui définiront un contrôle avec :
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 :
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 :
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.
Retourner dans Composants puis Sauvegarder
Description sommaire
Un catalogue de composant décrit pour un processus de monitoring :
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
Mettre à jour le catalogue
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 .
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.