[technique] Quelques modifications sur la VM nagios et check_mk

Fabien Dupont fab at kafe-in.net
Dim 14 Oct 21:31:37 CEST 2012


Bonsoir technique@,

La VM nagios était en rade suite à l'incident sur h5 car le SSD utilisé
pour stocker les résultats de nagios est précisément monté en iSCSI
depuis h5.

Du coup, pour essayer d'éviter ça, j'ai mis en place multipathd sur ce
montage iSCSI afin de profiter de l'option queue_if_no_path de ce
daemon.

En quelques mots, multipathd permet de gérer l'accès à des block devices
via plusieurs chemins. Dans le cas d'iSCSI, c'est plusieurs chemins
réseaux. Ainsi, si un chemin tombe, il « switche » sur un autre sans
coupure. Il permet aussi de faire du roud-robin entre ces chemins
histoire d'avoir plus de débit.

Ici, on n'a qu'un seul chemin réseau, multipathd ne sert virtuellement à
rien. Mais, il permet d'avoir une couche supplémentaire entre le block
device « réel » et celui utilisé pour le montage. Et cette couche peut
gérer l'option queue_if_no_path.

Cette option permet de mettre en file d'attente les I/O en cas de
rupture de chemin vers un bloc device. Tous les I peuvent éventuellement
être fait depuis le cache (à tester) mais les O sont mis dans une file
d'attente. Ainsi, les processus à l'origine de ces I/O sont en « hang »
en attendant que le device revienne à la vie. Et, du coup, le kernel ne
se plante pas à essayer de faire des I/O sur un device qui n'existe plus
et il ne remonte le montage en read-only.

La mise en place de cette option est simple :

# apt-get install multipath-tools-boot multipath-tools
# reboot
# multipath -ll
mpath0 (14945540000000000b2675eba9a15c9d43cca993ffd6d6476) dm-0 IET,VIRTUAL-DISK
size=12G features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  `- 2:0:0:0 sda 8:0 active ready running

Ici, on voit que le WWID du device « multipathé » est :
14945540000000000b2675eba9a15c9d43cca993ffd6d6476

Du coup, on peut créer le fichier de conf :
# cat /etc/multipath.conf
defaults {
    user_friendly_names yes
    features        "1 queue_if_no_path"
}

blacklist {
    devnode "^vd"
}

multipaths {
    multipath {
        wwid 14945540000000000b2675eba9a15c9d43cca993ffd6d6476
        alias ssd1.sda
    }
}

Le block « blacklist » permet de ne pas utiliser multipath pour le(s)
disque(s) de la VM (/dev/vda, /dev/vdb, etc.). Ça ne sert à rien pour
ces disques.

L'instruction « alias » sur le multipath permet de lui donner un nom
sympathique. C'est pénible de taper le WWID dans les montages.

Du coup, après un redémarrage du daemon :
# /etc/init.d/multipath-tools restart
# multipath -ll
ssd1.sda (14945540000000000b2675eba9a15c9d43cca993ffd6d6476) dm-0 IET,VIRTUAL-DISK
size=12G features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  `- 2:0:0:0 sda 8:0 active ready running
# ls /dev/mapper/
control  ssd1.sda

Il ne reste qu'à modifier la fstab en conséquence :
# grep ssd1 /etc/fstab
/dev/mapper/ssd1.sda /nagiosdata ext4 discard,noatime,_netdev 0 0

Et voilà pour multipath.

Au passage, j'ai ajouté les plug'in S.M.A.R.T de check_mk sur les h*
et sur gw histoire d'essayer de prédire les pannes de disques.

Sur l'agent :
# scp -P2222 root at nagios.tetaneutral.net:/usr/share/check_mk/agents/plugins/smart /usr/lib/check_mk_agent/plugins/

Sur la VM nagios (pour h4, par exemple) :
# cmk -I h4
smart.stats       2 new checks
smart.temp        1 new checks
# cmk -O
Generating Nagios configuration...OK
Validating Nagios configuration...OK
Precompiling host checks...OK
Reloading Nagios...OK

Et voilà :).
-- 
((__))  
 (00)    Fabien Dupont   
(o__o)  www.kafe-in.net



Plus d'informations sur la liste de diffusion technique