Grenode dispose d'une machine en dehors de son réseau (gaffe à Toulouse) qui permet de surveiller tous les services de Grenode et de ses membres.

Sur cette machine sont installés :

  • nagios et check mk pour surveiller les services et hôtes
  • munin pour monitorer les machines
  • observium pour monitorer la consommation réseau des membres, et les routeurs de Grenode (utilisé seulement par Grenode)

Les URLs pour accéder à ces services :

Créer un compte pour permettre à un adhérent d'un membre d'accéder à l'interface web

L'authentification de check_mk est commune avec celle de nagios (check_mk utilise nagios pour fonctionner). L'authentification est faire par le biais du REMOTE_USER d'apache.

Les identifiants et mots de passe sont stockés dans le fichier htpasswd /etc/nagios3/htpasswd.users ; pour générer un nouveau couple utilisateur / mot de passe :

USER=#<mon_utilisateur>
[ -n $USER ] && sudo htpasswd /etc/nagios3/htpasswd.users $USER

Il faut ensuite ajouter le login ($USER) dans le fichier /etc/check_mk/conf.d/00_contact-common.mk pour les accès à check_mk.

Pour observium, il faut créer un utilisateur via la cli PHP (le mot de passe utilisé sera celui du htpasswd). Voir Observium

Mettre en place de la supervision pour un hôte ou un service d'un membre

À la différence de nagios, check_mk dispose d'un mécanisme d'autoconfiguration. Il permet de « détecter » un bon nombre de services automatiquement.

L'autoconfiguration repose sur l'installation d'un agent sur les équipements que l'on souhaite surveiller. Il est aussi possible d'utiliser les sondes habituelles (sondes distantes, snmp, etc.).

Méthode de surveillance

Nous faisons en sorte que check_mk utilise ssh pour joindre les machines, ce qui nous permet d'effectuer la surveillance via l'IP de TTNN, et ainsi de surveiller tous les services depuis l'extérieur de notre réseau. La première chose à faire est donc de permettre à gaffe-ttnn de joindre la machine à surveiller en ssh.

Installation de l'agent check_mk

Sur debian :

apt-get install check-mk-agent

Attention, sur des versions antérieures à wheezy, il faut utiliser la version de squeeze-backports.

Installation avec xinetd (obsolète)

apt-get install xinetd

# activer check-mk dans xinetd
sed -e 's/^\([[:space:\]]only_from[^=]*=\).*/\1 127.0.0.1 91.216.110.7/' -i /etc/xinetd.d/check_mk
sed -e 's/^\([[:space:\]]disable[^=]*=.*\)/#\1/' -i /etc/xinetd.d/check_mk
service xinetd reload

Installation via ssh

On crée un utilisateur check_mk :

adduser --system --home /var/lib/check_mk_agent --group check_mk_agent --shell /bin/sh

On l'autorise à lancer check_mk avec les droits root :

# Créer un fichier `/etc/sudoers.d/check_mk_agent`
cat > /etc/sudoers.d/check_mk_agent <<EOF
check_mk_agent        ALL=NOPASSWD: /usr/bin/check_mk_agent
EOF

Enfin, on rajoute la clef de gaffe dans les clefs autorisées :

mkdir /var/lib/check_mk_agent/.ssh
cat >> /var/lib/check_mk_agent/.ssh/authorized_keys <<EOF
command="sudo /usr/bin/check_mk_agent",no-port-forwarding,no-agent-forwarding,no-X11-forwarding ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDiyusB/Xk1LVNoBNfgsPk9kNRP1nlwsjWdv78FOOjXEyPZoPeGSMtfeMLcxLhEZdTwcIIsx9BjOmE1Lz5b90dJLa5bXu76f0ZWkyaC2bEbCxfCIx0DjLeOCoQmyeBoCqowWS0Bwb58pn8UziYXwZU3GPlGNiDU4J/kllq2zepg2FpTrfdhGpOIZMHzoKqZbEwSUGmKnISv/Bl6h3DUYZuKGjvIivhaP7OOKYYq3U8IzifAQvR3NeRheQK1Wd7qRnZGsjBnLd5wwrNpyR3XZnm45rRB1GXBYfzBoQWfA6jNsxq98jfKAuNng2LTRbAymJnK3G1BXk6DOz4XKU+MDt6d1PYTphpqjQhGmsram1LFJUzg2vyc/J4bkx6Rs+HigQ2rqBmEDkdySy4qj+d+F4eSoZ6Hhj9Or3S1xwsQpnaNAzpZ9eRDL7ZUKN/1rfBVG4S5dJXdfGxgDciaCDdLHF8fe83VQriLklIUtevvH9tAm0Zg1VemvP8Omx6+SEi8GkYrBEuunRlxgW81LnL2UIrgHF6rra4v9Cz/Vk7Vw0bAoe0nr++6LbMIuWzA58swO4JzoTu0P8QFu4norIjp3YWHaBnYrOxbCp87Pcrd6/286oUOcpeO9w4EBENJydUWAegPcSEeoy2CLmkour/ec26izKwHfUJzLh8DEYLiKZdy/w== nagios@gaffe.grenode.net
EOF
chmod 700 /var/lib/check_mk_agent/.ssh
chown check_mk_agent:check_mk_agent /var/lib/check_mk_agent/.ssh

Attention, lorsque l'on rajoute des machines à surveiller via ssh, il faut les ajouter avec le tag ssh dans la configuration de check_mk.

Changement du port ssh par défaut

Pour changer le port ssh par défaut, on fait ça dans /etc/ssh/ssh_config :

Host *.grenode.net
    Port 51083

Host 91.216.110.1 91.216.110.6 91.216.110.8 91.216.110.9 91.216.110.11 91.216.110.19 91.216.110.20 91.216.110.21 91.216.110.98 91.216.110.99 80.67.163.60
    Port 51083

Il ne faut donc pas d'oublier d'y ajouter une éventuelle nouvelle IP.

Ajout dans la conf du serveur check_mk

Les fichiers de configuration se trouvent dans le répertoire /etc/check_mk/conf.d. La syntaxe des fichiers est en python. En terme d'organisation de la configuration :

  • 00_contact-common.mk : contient les informations de contact pour les notifications.
  • 00_hosts-{grenode,gresille}.mk : contient les informations concernant les hôtes.
  • 30_check-{common,grenode,gresille}.mk : contient les informations concernant les services/check.
  • 99_extra-common.mk

Ajout d'un plugin mrpe/check_mk

L'équivalent de nrpe pour check_mk est mrpe. Le principe de fonctionnement est le même et les plugins nrpe sont compatibles avec mrpe.

Régénération de la configuration

Après l'ajout de plugins il faut refaire l'inventaire sur le serveur.

# avec xinetd
check_mk -I <host>

# avec ssh
sudo -u nagios check_mk -I <host>

Et recharger la configuration nagios :

# avec reload de nagios
check_mk -O

# avec restart de nagios
check_mk -R

Il est possible de suprimer l'inventaire d'une machine et de le reconstruire complètement :

# avec xinetd
check_mk -II <host>

# avec ssh
sudo -u nagios check_mk -II <host>

Monitorer une machine d'un membre avec munin

Il faut installer le paquet check-mk-agent ; on peut ensuite générer sur gaffe une configuration de base pour les checks.

Pour surveiller des services supplémentaires, on peut utiliser mrpe, en installant nagios-plugins, puis créant un fichier etc/check_mk/mrpe.cfg, et en regénérant l'inventaire sur le serveur.

Le fichier etc/check_mk/mrpe.cfg comprend le nom du check et la commande, par exemple sur une machine de Rézine pour les checks apt :

check_rzn_apt       /usr/lib/nagios/plugins/check_apt -t 20 -c ''