Introduction
Le système de supervision utilisant checkmk est installé sur gaffe.
- url web: https://gaffe.grenode.net/check_mk/
- url web: https://gaffe-ttnn.grenode.net/check_mk/
Ajouter un nouvel utilisateur de check_mk
L'authentification de check_mk est commune avec celle de nagios (check_mk utilise nagios pour fonctionner). L'authentification est faite 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
USER=#<mon_utilisateur>
[ -n $USER ] && sudo htpasswd /etc/nagios3/htpasswd.users $USER
Surveiller un nouvel équipement
À 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.).
Nous faisons en sorte que check_mk utilise ssh pour joindre les machines.
Installation de l'agent check_mk sur le nouvel équipement
Note : L'installation et la configuration de l'agent check_mk est automatisée via Ansible.
# /!\ Utiliser la version depuis squeeze-backports ou supérieur
apt-get install check-mk-agent
avec xinetd (deprecated)
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
avec ssh
# Créer un utilisateur check_mk_agent
adduser --system --home /var/lib/check_mk_agent --group check_mk_agent --shell /bin/sh
# 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
# Rajouter la clé de gaffe dans le fichier `/var/lib/check_mk_agent/.ssh/authorized_keys`
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
Les machines doivent être rajoutées dans check_mk avec le tag ssh.
Ajout dans la conf du serveur check_mk
Sur le serveur de supervision, 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
Inventaire du nouvel équipement
Rajouter si besoin l'IP du nouvel équipement dans /etc/ssh/ssh_config
(pour définir le bon port SSH).
Ensuite, on peut faire l'inventaire initial check_mk :
# avec ssh
sudo -u nagios check_mk -v -I <host>
Une fois que ça a fonctionné et qu'on est content des services détectés, recharger la conf nagios :
# avec reload de nagios
check_mk -O
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.
Les plugins à installer sur Grenode
ipsec (mrpe plugin)
On commence par récupérer les plugins :
SRC=https://www.grenode.net/Documentation_technique/Divers/Supervision-checkmk/mrpe_plugins/check_ipsec2
DST=/usr/local/lib/nagios/plugins/check_ipsec2
sudo curl -o $DST $SRC
sudo chmod +x $DST
sudo mkdir /etc/check_mk
SRC=https://www.grenode.net/Documentation_technique/Divers/Supervision-checkmk/mrpe_plugins/utils.sh
DST=/usr/local/lib/nagios/plugins/utils.sh
sudo curl -o $DST $SRC
sudo chmod +x $DST
sudo etckeeper commit "Installation plugins mrpe"
sudo apt-get install fping
Ensuite on demande le status des tunnels, par exemple sur ?radeau :
ipsec status
Security Associations (2 up, 0 connecting):
estran_via_ldn_edx[4]: ESTABLISHED 15 minutes ago, 80.67.188.193[C=FR, ST=France, L=Nancy, O=Grenode, CN=radeau-13.grenode.net]...149.7.4.180[C=FR, ST=France, L=Lyon, O=Grenode, CN=estran-13.grenode.net]
estran_via_ldn_edx{1}: INSTALLED, TUNNEL, ESP SPIs: cab905f6_i ce35dac0_o
estran_via_ldn_edx{1}: 10.13.50.8/32 === 10.13.50.6/32
estran_via_ldn_ielo[3]: ESTABLISHED 17 minutes ago, 80.67.188.193[C=FR, ST=France, L=Nancy, O=Grenode, OU=grenode, CN=radeau-ldn.grenode.net, E=noc@grenode.net]...212.85.148.234[C=FR, ST=France, L=Grenoble, O=Grenode, OU=Grenode, CN=estran.grenode.net]
estran_via_ldn_ielo{2}: INSTALLED, TUNNEL, ESP SPIs: cb88db4e_i c01ef4b1_o
estran_via_ldn_ielo{2}: 10.8.50.8/32 === 10.8.50.6/32
Pour chacun des tunnels (ici, estran_via_ldn_edx
et estran_via_ldn_ielo
),
on ajoute un check au fichier /etc/check_mk/mrpe.cfg
:
check_gre_ipsec_estran_via_ldn_ielo /usr/local/lib/nagios/plugins/check_ipsec2 -c estran_via_ldn_ielo
check_gre_ipsec_estran_via_ldn_edx /usr/local/lib/nagios/plugins/check_ipsec2 -c estran_via_ldn_edx
On peut tester la config pour être sûr (avec X
étant le nombre de tunnels) :
sudo /usr/local/lib/nagios/plugins/check_ipsec2 -a X
smart (check_mk plugin)
(Cf http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=649677)
USER=<login>
SRC=https://www.grenode.net/Documentation_technique/Divers/Supervision-checkmk/checkmk_plugins/smart
DST=/usr/lib/check_mk_agent/plugins/smart
sudo curl --user $USER -o $DST $SRC
sudo chmod +x $DST
sudo apt-get install smartmontools
Après l'ajout de plugins il faut refaire l'inventaire sur le serveur.
# avec xinetd
check_mk -v -I <host>
# avec ssh
sudo -u nagios check_mk -v -I <host>
Et recharger la conf 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 -v -II <host>
# avec ssh
sudo -u nagios check_mk -v -II <host>
Borg backup
Il est possible d'ajouter un check sur la date du dernier point de sauvegarde effectué par Borg (voir. la section Borg dans Espaces de sauvegarde).
Et ainsi envoyer une notification 'warning' si la dernière sauvegarde date de plus d'un jour, et une alerte critique si cette date est supérieure à deux jours.
SRC=https://www.grenode.net/Documentation_technique/Divers/Supervision-checkmk/mrpe_plugins/utils.sh
DST=/usr/local/lib/nagios/plugins/utils.sh
sudo curl -o $DST $SRC
sudo chmod +x $DST
SRC=https://raw.githubusercontent.com/bebehei/nagios-plugin-check_borg/884175407799c6dd4cb51621efa0a6df5c3a4ffb/check_borg
DST=/usr/local/lib/nagios/plugins/check_borg
sudo curl -o $DST $SRC
sudo chmod +x $DST
sudo etckeeper commit "Installation plugins check_borg"
Afin d'utiliser les infos relatives au repo borg (repo et mot de passe), il est
nécessaire de modifier le script pour sourcer le fichier . /etc/.borg
# ajouter ``. /etc/.borg`` en haut du fichier
vi /usr/local/lib/nagios/plugins/check_borg
Et enfin on ajoute le script dans /etc/check_mk/mrpe.cfg
LDN_Backups /usr/local/lib/nagios/plugins/check_borg -w '1 day ago' -c '2 day ago'
Installation du serveur de supervision
# Installation d'apache2
apt-get install apache2-mpm-itk
# Configuration du serveur
SSL_CRT=/etc/ssl/certs/grenode-crt.pem
SSL_KEY=/etc/ssl/private/grenode-key.pem
cat > /etc/apache2/sites-availables/ << EOF
<VirtualHost *:80>
ServerAdmin root AT grenode.net
ServerName nagios.grenode.net
AssignUserId nagios nagios
Redirect permanent / https://gaffe.grenode.net/
</VirtualHost>
<VirtualHost *:443>
ServerAdmin root AT grenode.net
ServerName gaffe.grenode.net
AssignUserId nagios nagios
SSLEngine on
SSLCertificateFile $SSL_CRT
SSLCertificateKeyFile $SSL_KEY
Include /etc/apache2/sites/gaffe.grenode.net/*.conf
</VirtualHost>
EOF
mkdir -p /etc/apache2/sites/gaffe.grenode.net/
cat > /etc/apache2/sites/gaffe.grenode.net/00-base.conf << EOF
DocumentRoot /var/www/gaffe.grenode.net
EOF
mkdir -p /var/www/gaffe.grenode.net
# installation de mysql
apt-get install mysql-server mysql-client
touch /root/.my.cnf
chmod og-rwx /root/.my.cnf
vim /root/.my.cnf # rajout du mot de passe root mysql
# les prérequis (ceux choisis)
apt-get install pnp4nagios nagios3 nagios-nrpe-server ndoutils-nagios3-mysql
rm -f /etc/apache2/conf.d/nagios3.conf
rm -f /etc/apache2/conf.d/pnp4nagios.conf
ln -sf /etc/nagios3/apache2.conf /etc/apache2/sites/gaffe.grenode.net/20-nagios3.conf
ln -sf /etc/pnp4nagios/apache.conf /etc/apache2/sites/gaffe.grenode.net/20-pnp4nagios.conf
dpkg-statoverride --add --update nagios nagios 751 /var/lib/nagios3
a2dismod deflate
service apache2 restart
# installation de checkmk
apt-get install check-mk-server check-mk-livestatus check-mk-multisite check-mk-config-nagios3
# Activer le ssh pour check_mk
cat > /etc/check_mk/conf.d/500-ssh.conf <<EOF
datasource_programs = [
( "ssh -o 'ControlPath ~/.ssh/cmk-%r@%h:%p' -o 'ControlMaster auto' -o 'ControlPersist 600' -b 91.224.149.11 -l check_mk_agent <IP> sudo /usr/bin/check_mk_agent", ['ssh'], ALL_HOSTS ),
]
EOF
Installation du nagircbot
apt-get install nagircbot
Ensuite, la configuration se passe dans /etc/default/nagircbot
:
- on passe à
ENABLED
- on met le serveur, le chan et le nick
- dans les options, on ajoute le mot de passe du chan, et on filtre les alertes
matchant
gresille