Shinken est un logiciel de monitoring système et réseau. Vous allez pouvoir surveiller vos serveurs directement à partir de son interface web et recevoir des alertes quand un service comme apache cesse de fonctionner ou lorsque votre machine consomme une quantité trop importante de mémoire vive.
Je vais détailler l’installation et la configuration de Shinken sur une machine Debian Squeeze.
Pour réaliser ce tutoriel j’ai pri appuie sur 3 sites :
Le blog de nicolargo
wiki.monitoring-fr.org
www.tcweb.org
Etape 1 : Installation de Shinken :
On installe curl pour récupérer la dernière version de shinken.
[sh]apt-get install curl[/sh]
et lsb-release sinon vous aurez une erreur lors de l’installation de shinken
[sh]apt-get install lsb-release[/sh]
On récupére maintenant la dernière version de Shinken à l’aide de cette commande :
[sh]curl -L http://install.shinken-monitoring.org | /bin/bash[/sh]
Une fois l’installation terminée on va modifier le fichier shinken-specific.cfg pour configurer le mot de passe de l’interface web et ajouter le module Mongodb qui vous évitera d’avoir cette erreur au lancement de l’interface web :
[sh]vi /usr/local/shinken/etc/shinken-specific.cfg[/sh]
[sh]define module {
module_name WebUI
module_type webui
host 0.0.0.0
port 7767
auth_secret MOTDEPASSE
modules Apache_passwd,ActiveDir_UI,Cfg_password,PNP_UI,Mongodb
manage_acl 1
play_sound 0
allow_html_output 0
max_output_length 100
}[/sh]
host : Par défaut l’interface web écoute sur toutes les interfaces réseaux disponibles (0.0.0.0), vous pouvez changer l’adresse IP en la remplaçant par l’une de vos interfaces réseaux
auth_secret : A modifier avec votre mot de passe
On va aussi éditer le mot de passe du compte admin (par défaut:admin) dans le fichier contacts.cfg
[sh]vi /usr/local/shinken/etc/contacts.cfg[/sh]
[sh]
define contact{
use generic-contact
contact_name admin
email votre@mail.com ; adresse mail
pager 0600000000 ; telephone
password motdepasseadmin ; mot de passe
is_admin 1
}
[/sh]
On relance shinken pour prendre en compte la configuration :
[sh]/etc/init.d/shinken restart [/sh]
Pour accéder à l’interface web de Shinken il faut utiliser l’url suivante : http://ip_srv_supervision:7767
Etape 2 : Découverte automatique du réseau
Une des forces du logiciel Shinken est sa fonction de découverte automatique du réseau.
Pour se faire il suffit d’installer nmap sur le serveur Shinken
[sh]apt-get install nmap[/sh]
D’éditer le fichier ressource.cfg en ajoutant le réseau que devra scanner nmap
[sh]vi /usr/local/shinken/etc/resource.cfg[/sh]
[sh]#– Discovery
# default snmp community
$SNMPCOMMUNITYREAD$=public
# what to discover by default
$NMAPTARGETS$=192.168.1.0/24
# If your scans are too slow, try to increase minrate (number of packet in parallel
# and reduce the number of retries.
$NMAPMINRATE$=1000
$NMAPMAXRETRIES$=0[/sh]
$NMAPTARGETS$= : Ajouter le réseau qui sera scanner par nmap
et de lancer la commande suivante :
[sh]/usr/local/shinken/bin/shinken-discovery -c /usr/local/shinken/etc/discovery.cfg -o /usr/local/shinken/etc/objects/discovery/ -r nmap[/sh]
Enfin on redémarre shinken pour qu’il prenne en compte l’ajout des nouveaux hosts.
Les fichiers de configuration des hosts découverts automatiquement se trouve dans /usr/local/shinken/etc/objects/discovery/
[sh]/etc/init.d/shinken restart [/sh]
En vous rendant sur l’interface web vous risquez de rencontrer cette erreur :
Si c’est le cas il vous faudra installer les plugins manquant nécessaire au check.
Rien de plus simple rendez-vous dans le dossier /usr/local/shinken/
[sh]cd /usr/local/shinken/[/sh]
Vous pouvez obtenir une liste des plugins installables avec cette commande :
[sh]./install -h[/sh]
Voici une bonne base de plugins à installer par défaut qui vous éviteras les erreurs présentées dans la capture ci-dessus
[sh]./install -p check_snmp_bandwidth
./install -p check_netint
./install -p check_wmi_plus
./install -p nagios-plugins
./install -p manubulon[/sh]
Etape 3 : Ajout d’un host manuellement
Pour avoir une configuration plus fine que lors d’une découverte automatique des hôtes, nous pouvons rajouter manuellement les hôtes dans Shinken ainsi que les services supervisés ect …
La définition des hosts se fait dans le dossier /usr/local/shinken/etc/hosts/
Pour chaque host que l’on souhaite rajouter il faut créer un fichier .cfg
Nous allons ajouter manuellement l’host test.labo qui est un serveur debian dans Shinken
On crée un nouveau fichier .cfg dans /usr/local/shinken/etc/hosts/
vi /usr/local/shinken/etc/hosts/test.labo.cfg
[sh]
define host{
use generic-host,ssh,
host_name test.labo
address 10.0.0.13
icon_set server
}[/sh]
use : permet d’utiliser des templates d’hosts
contact_groups : permet de définir les groupes de contacts tels définit
host_name : nom à faire apparaitre (pour l’interface web surtout)
address : indispensable pour joindre la machine.
icon_set : l’icon a utiliser pour l’interface web
Dans cet exemple nous supervisons le ping et le ssh de la machine test.labo ayant pour IP 10.0.0.13
On redémarre Shinken pour prendre en compte la configuration
[sh]/etc/init.d/shinken restart[/sh]
Dans l’interface web de Shinken nous pouvons maintenant voir le serveur que nous venons de rajouter :
On peut rajouter la template « linux » qui va superviser le système du serveur en modifiant le fichier .cfg que nous avons créer de cette manière:
[sh]
define host{
use generic-host,ssh,linux
host_name test.labo
address 10.0.0.13
icon_set server
}[/sh]
Vous trouverez la liste des templates disponiblent dans /usr/local/shinken/etc/packs/
On redémarre Shinken pour prendre en compte la configuration
[sh]/etc/init.d/shinken restart[/sh]
Voilà ce que nous obtenons dans l’interface web de Shinken
Si vous avez des erreurs vous pouvez passer Shinken en mode debug avec cette commande :
[sh]/etc/init.d/shinken -d start[/sh]
Les logs sont dans /tmp/shinken_checkconfig_result
Etape 4 : Configuration du snmp
Pour que Shinken puisse récupérer des informations sur le système comme l’usage du CPU et de la RAM il faut configurer le snmp sur la machine supervisé.
Je vais configurer snmp sur une machine Debian Squeeze. Attention la configuration peut changer selon la distribution.
[sh]apt-get install snmpd -y[/sh]
Il faut modifier le fichier de configuration suivant pour autoriser snmp à être écouter à distance /etc/snmp/snmpd.conf
[sh] vi /etc/snmp/snmpd.conf[/sh]
[sh]#agentAddress udp:127.0.0.1:161
agentAddress udp:0.0.0.0:161[/sh]
[sh]#rocommunity public default -V systemonly
rocommunity public 192.168.1.10[/sh]
Remplacer 192.168.1.10 par l’adresse IP de votre serveur Shinken
On redémare snmpd pour que la configuration soit prise en compte
[sh]/etc/init.d/snmpd restart[/sh]
On peut vérifier que le deamon écoute bien les connexions distantes avec la commande suivante :
[sh]netstat -an |grep -i udp[/sh]
Sur votre serveur de supervision vous pouvez tester la bonne remonter des informations grâce à la commande suivante :
[sh]apt-get install snmp[/sh]
[sh]snmpwalk -v 2c -c public 10.0.0.13[/sh]
Remplacez 10.0.0.13 par l’ip de la machine sur laquelle vous avez configuré le snmp.
Etape 5 : Configuration du Firewall
Si vous disposez d’un firewall il faut ouvrir sur vos serveurs qui seront supervisés, le port 161 et 162 en UDP.
Pour le firewall Iptables :
[sh]iptables -A INPUT -m state –state NEW -i eth0 -p udp –dport 161:162 -j ACCEPT[/sh]
Si vous souhaitez aller plus loin avec Shinken vous pouvez consulter mon article sur comment ajouter de nouveaux services sur Shinken ;-)
Bonjour,
J’ai suivi votre tuto pour installer shinken. L’installation c’est ok, cependant à la fin l’état est toujours UNKNOWN ou CRITICAL. Lorsque je veux superviser la machine elle même les état son UNKNOWN service check time out. Et lorsque je veux superviser une autre machine je n’ai qu’un seul état (ssh) et son état est CRITICAL connection refused.
Savez vous d’ou peut venir ce problème ?
Merci
Salut,
C’est pour superviser quel OS ? Je pense que tu as un soucis dans configuration du snmp ! Du moins pour les remontées CPU,RAM ect.
Pour ssh utilises tu le port par défaut (22) ?
Ophyde
Bonjour,
Concernant les problème ssh, oui j’utilise le port 22.
Concernant la config snmp j’ai les 2 identiques sur les 2 machines (debian 7). Mais celle qui pose problème pour les remonté de CPU, RAM… est celle qui héberge shinken, pour l’autre pas de problème hormis ssh
La machine ssh est sur le même réseau que ton serveur Shinken ?
Concernant ton autre soucis pour les remonté d’information snmp, ton serveur shinken tu l’attaques par son ip privé ou en 127.0.0.1 (localhost) ?
Fait un :
snmpwalk -v 2c -c public localhost
puis
snmpwalk -v 2c -c public ip_serveur_shinken
Normalement tu devrais avoir une remontée d’information avec une des deux commandes
Bonjour,
Désolé de ne répondre que maintenant.
J’avais mis 127.0.0.1 dans le fichier de conf de l’hote, je test ces commandes des que j’ai 5 minutes.
merci
Re,
j’ai tester les commandes, il faut donc bien mettre l’ip du serveur dans la config est pas son adresse local.
désolé pour la multitude de com j’ai oublié de répondre pour ssh. Oui les 2 sont sur le même réseau
Salut,
Fallait éditer tes messages ça t’aurais éviter de faire plusieurs postes :-).
Pour le ssh tu aurais pas un parfeu iptables qui tourne sur le serveur que tu essayes de superviser et qui autorise seulement certaine ip à se connecter ?
C’est quoi l’erreur exacte qui t’ai remonté sur Shinken ?
Ophyde
j’ai pourtant regardé si je pouvais les modifier mais vu comment ! :/
Non je n’ai pas de parefeu sur le serveur. L’erreur c’est « connection refused ».
C’est une maquette sous VMWare mais je pense pas que ça ai de l’influence
Si tu essayes de te connecter en ssh à partir de shinken sur le serveur que tu essayes de superviser ça marche ? Tu as peut être des restrictions au niveau de ta conf ssh :-)
Bonjour,
Bon en fait sur ce coup j’avais fais le boulet … La seul machine a qui je demandais de superviser le ssh été la seule sur laquelle je ne l avais pas activé … :/
Forcément ça risque d’être difficile ! \o/
Au moins tu as résolu ton problème.
Bonjour,
merci pour ce tuto qui m’a été fort utile.
Cependant, j’ai une question. Dans le WebUI, mon serveur Shinken (nommé Hubble) est vu comme « Hublle » et comme « localhost ».
Avec localhost (en bleu : unknow), j’ai un onglet Linux qui apparait (normal, il est sous Debian 7), et avec Hubble, j’ai pas d’onglet Linux mais un test DB2 en critique, hors, j’ai pas de base de DB2 sur ce serveur.
Aurais-je loupé un truc ?
Note : je suis débutant avec la supervision, pour le moment j’en suis à des phase de test pour au final déployer un GLPI + FusionInventory + Shinken.
Merci :)
Salut,
Peux tu me faire un screen de ton soucis ?
j’ai un peu du mal à bien cerner le probléme !
Merci :-)
PS : Tu peux me transférer le screen par mail —– > https://www.ophyde.com/about/
Bonjour et merci de la réponse.
J’avais trop de truc bizarre sur le serveur, du coup j’ai tout réinstallé de 0 …
Après réinstallation, j’ai bien mon serveur local Shinken qui est vu par son nom avec un template linux, le Dashboard fonctionne et nmap m’a bien trouvé tout mes hosts ! \o/
Cependant, je n’arrive pas à faire remonter les infos système via snmp, ni de localhost (mon serveur Shinken (Debian 7.5) nommé Hubble), ni d’un autre serveur Linux (basé sur Ubuntu Server 8.04). J’ai suivis ta procédure.
Sur mon serveur Shinken :
# netstat -an |grep -i udp
udp 0 1216 0.0.0.0:37189 0.0.0.0:*
udp 0 0 0.0.0.0:919 0.0.0.0:*
udp 0 0 127.0.0.1:973 0.0.0.0:*
udp 0 0 0.0.0.0:33268 0.0.0.0:*
udp 0 0 0.0.0.0:55391 0.0.0.0:*
udp 0 0 0.0.0.0:111 0.0.0.0:*
udp 0 0 0.0.0.0:161 0.0.0.0:*
udp6 0 0 :::49475 :::*
udp6 0 0 :::919 :::*
udp6 0 0 :::111 :::*
udp6 0 0 ::1:161 :::*
# snmpwalk -v 2c -c public 192.168.172.3
iso.3.6.1.2.1.1.1.0 = STRING: « Linux hubble 3.2.0-4-686-pae #1 SMP Debian 3.2.57-3+deb7u2 i686 »
iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.8072.3.2.10
iso.3.6.1.2.1.1.3.0 = Timeticks: (7781448) 21:36:54.48
iso.3.6.1.2.1.1.4.0 = STRING: « Me »
iso.3.6.1.2.1.1.5.0 = STRING: « hubble »
iso.3.6.1.2.1.1.6.0 = STRING: « Sitting on the Dock of the Bay »
iso.3.6.1.2.1.1.7.0 = INTEGER: 72
iso.3.6.1.2.1.1.8.0 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.1.9.1.2.1 = OID: iso.3.6.1.6.3.10.3.1.1
iso.3.6.1.2.1.1.9.1.2.2 = OID: iso.3.6.1.6.3.11.3.1.1
iso.3.6.1.2.1.1.9.1.2.3 = OID: iso.3.6.1.6.3.15.2.1.1
iso.3.6.1.2.1.1.9.1.2.4 = OID: iso.3.6.1.6.3.1
iso.3.6.1.2.1.1.9.1.2.5 = OID: iso.3.6.1.2.1.49
iso.3.6.1.2.1.1.9.1.2.6 = OID: iso.3.6.1.2.1.4
iso.3.6.1.2.1.1.9.1.2.7 = OID: iso.3.6.1.2.1.50
iso.3.6.1.2.1.1.9.1.2.8 = OID: iso.3.6.1.6.3.16.2.2.1
iso.3.6.1.2.1.1.9.1.3.1 = STRING: « The SNMP Management Architecture MIB. »
iso.3.6.1.2.1.1.9.1.3.2 = STRING: « The MIB for Message Processing and Dispatching. »
iso.3.6.1.2.1.1.9.1.3.3 = STRING: « The management information definitions for the SNMP User-based Security Model. »
iso.3.6.1.2.1.1.9.1.3.4 = STRING: « The MIB module for SNMPv2 entities »
iso.3.6.1.2.1.1.9.1.3.5 = STRING: « The MIB module for managing TCP implementations »
iso.3.6.1.2.1.1.9.1.3.6 = STRING: « The MIB module for managing IP and ICMP implementations »
iso.3.6.1.2.1.1.9.1.3.7 = STRING: « The MIB module for managing UDP implementations »
iso.3.6.1.2.1.1.9.1.3.8 = STRING: « View-based Access Control Model for SNMP. »
iso.3.6.1.2.1.1.9.1.4.1 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.1.9.1.4.2 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.1.9.1.4.3 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.1.9.1.4.4 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.1.9.1.4.5 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.1.9.1.4.6 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.1.9.1.4.7 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.1.9.1.4.8 = Timeticks: (0) 0:00:00.00
iso.3.6.1.2.1.25.1.1.0 = Timeticks: (8319520) 23:06:35.20
iso.3.6.1.2.1.25.1.2.0 = Hex-STRING: 07 DE 06 0D 09 24 16 00 2B 02 00
iso.3.6.1.2.1.25.1.3.0 = INTEGER: 1536
iso.3.6.1.2.1.25.1.4.0 = STRING: « BOOT_IMAGE=/boot/vmlinuz-3.2.0-4-686-pae root=UUID=60f6911b-4f35-43a6-b15b-bc678e585a8c ro quiet
»
iso.3.6.1.2.1.25.1.5.0 = Gauge32: 2
iso.3.6.1.2.1.25.1.6.0 = Gauge32: 99
iso.3.6.1.2.1.25.1.7.0 = INTEGER: 0
iso.3.6.1.2.1.25.1.7.0 = No more variables left in this MIB View (It is past the end of the MIB tree)
Et le fichier snmpd.conf :
# Listen for connections from the local system only
# agentAddress udp:127.0.0.1:161
agenAddress udp:0.0.0.0:161
#rocommunity public default -V systemonly
rocommunity public 192.168.1.3
# Listen for connections on all interfaces (both IPv4 *and* IPv6)
agentAddress udp:161,udp6:[::1]:161
Merci beaucoup pour l’aide apportée ! :)
Pour un raison que j’ignore, les remonté système se sont faite toutes seule en cours de mâtiné, sans que je modifie un fichier … o.O
Par contre, j’ai toujours rien pour mon serveur distant sous Ubuntu 8.04 …
Pour Ubuntu, comme le fichier de conf snmpd à l’air de changer un peu, j’ai suivis cette doc : http://doc.ubuntu-fr.org/tutoriel/configurer_snmp_pour_utiliser_cacti_depuis_une_machine_distante
Mais j’ai rien pour le moment :(
Pour infos, je cherche aussi à surveiller des clients Windows, des imprimante Brother, Canon et Ricoh et des Switch cisco. Pour ces derniers, ça marche :)
j’ai le même soucis, si le probleme est résolu, pourrais je avoir la solution? :)
ah et j’ai nagios qui me demande un mdp quand je vais sur la page serveur Oo
Salut,
Si tu as laissé les mots de passes par défaut c’est :
login : admin
mdp : admin
C’est pour avoir accès au graphe ;-)
Ophyde
Les checks sur l’interface de shinken sont dans quels états ? Pending ?
Ophyde
Bonjour, merci pour le tuto il est d’une grande aide :)
j’ai une question au sujet des fichier de configuration, j’ai un autre fichier command.cfg pour un de mes plug in ( router cisco)
dois-je mettre les define command dans le fichier command.cfg du shinken principal ou je dois le laisser dans ceux du plug in? ( de toute façon dans les deux cas, cela ne fonctionne pas car quand je met les commande dans le cfg de shinken et que je restart, il fail le check)
edit : j’ai trouvé, il y avait un probleme de doublon, maintenant il ne s’affiche toujours pas dans shinken ….
Salut Franz,
As-tu configuré un define service dans les hosts que tu souhaites superviser avec ton check ?
Tu peux te référer à ce tuto pour l’ajout de nouveau service :
https://www.ophyde.com/shinken-supervision-de-nouveaux-services/
Ophyde
oui j’ai cette commande pour test le cpu de mon routeur cisco
qui se trouve dans /usr/local/shinken/etc/packs/network/command.cfg
define command {
command_name check_switch_cpu
command_line $PLUGINSDIR$/check_nwc_health –hostname $HOSTADDRESS$ –timeout $_HOSTSWITCH_TIMEOUT$ –community $_HOSTSNMPCOMMUNITY$ –critical=$_HOSTSWITCH_CPU_LOAD_CRIT$ –warning=$_HOSTSWITCH_CPU_LOAD_WARN$ –mode cpu-load
}
dans mon fichier cfg de mon host ( cisco.cfg ) j’ai mis :
define service{
service_description Cpu
use generic-service
register 0
host_name ayon
check_command check_switch_cpu
}
apres le restart, rien ne s’affiche et pourtant en shell j’ai bien l’information qui remonte des info cpu … j’avoue je seche extremement ><
Tu peux me montrer ton fichier cisco.cfg complet ?
Ophyde
biensur,
le voici:
define host{
use router
host_name cisco
alias router
address 10.12.0.250
}
# Definition du service de Load Average
define service{
use generic-service
host_name cisco
service_description Load Average
check_command check_load!5.0,4.0,3.0!10.0,8.0,6.0
}
define service{
service_description Memory
use generic-service
register 0
host_name cisco
check_command check_switch_memory!10.12.0.250!60!public!60!80
}
define service{
service_description Cpu
use generic-service
register 0
host_name cisco
check_command check_switch_cpu
}
donc a part mon load average, rien ne s’affiche
Passe la variable register à 1 et redémarre le process shinken, il y a du mieux ?
wow…
ok ca fonctionne maintenant, il sert a quoi exactement ce register ( je suis un nouveau sur linux et encore plus sur le monitoring ^^ )
en tout les cas un grand merci a toi ! tu mériterais un boite de praline ! :)
Visiblement quand la variable register est à 0 shinken n’utilise pas le service et le considère comme une template.
Par défaut si tu ne précise pas cette variable elle est à 1.
Je ne suis pas contre une boite de praline :D
Ophyde