mardi 25 juin 2013

Mise à jour Squeeze -> Wheezy

Ce billet porte mal son nom. En effet, il est censé recueillir mes notes prises lors de la mise à jour de mes serveur de Debian 6 (Squeeze) à Debian 7 (Wheezy) et surtout les surprises que j'ai eues. En fait, les cinq paragraphes ci-dessous traitent de Munin, car tout le reste a fonctionné ou, au moins, était documenté (en amont ou lors de la migration).

Munin : racine en double sur le plugin df

La racine apparaît deux fois sur le plugin df. Pour corriger, éditer le fichier /etc/munin/plugin-conf.d/munin-node et, dans la section [df*], exclure le rootfs :

[df*]
env.exclude none unknown iso9660 squashfs udf romfs ramfs debugfs rootfs
env.warning 92
env.critical 98


Munin : erreur du plugin apt_all

Le plugin apt_all ne fonctionne plus. La tâche cron de mise à jour renvoie des messages d'erreur :

E: The value 'testing' is invalid for APT::Default-Release as such a release is not available in the sources
E: The value 'unstable' is invalid for APT::Default-Release as such a release is not available in the sources


Après investigation, il s'agit apparemment d'un problème similaire à celui-ci : Bug#702442: munin-node: apt_all uses different state files for cron job and as a plugin.

Pour corriger, éditer le fichier /usr/share/munin/plugins/apt_all et modifier la variable "@releases" :

#my @releases = ("stable", "testing","unstable");
my @releases = ("stable");

Puis définir dans /etc/munin/plugin-conf.d/munin-node la variable d'environnement MUNIN_PLUGSTATE :

[apt_all]
env.MUNIN_PLUGSTATE /var/lib/munin-node/plugin-state/root/


Munin - alertes Munin et plugin ntp_states

Certains plugins Munin se traînent lamentablement, à tel point que le timeout expire, comme le signale le journal :

2013/06/11-09:10:59 [30489] Service 'ntp_states' timed out.
2013/06/11-09:11:01 [30489] Service 'open_files' timed out.
2013/06/11-09:11:02 [30489] Node side timeout while processing: 'fetch open_files'
[...]
2013/06/11-09:15:59 [30772] Service 'postfix_mailvolume' timed out.
2013/06/11-09:16:01 [30772] Service 'postfix_mailvolume' timed out.
2013/06/11-09:16:02 [30772] Node side timeout while processing: 'config proc_pri'

On se retrouve avec des graphiques en pointillés.
Explication du problème :
J'avais désactivé IPv6 sur mon serveur mail. (Ou je croyais l'avoir fait.) Lors de la mise à jour, IPv6 a été réactivé et le démon NTP a choisi comme serveurs de référence des serveurs en IPv6. Il faut savoir aussi que le plugin Munin ntp_state part de l'adresse IP des serveurs et effectue une requête DNS pour obtenir son nom. Et cette requête prenait beaucoup de temps et échouait ; je ne sais pas exactement pourquoi.
Pour contourner ce problème, deux possibilités. La première est simplement de désactiver de nouveau IPv6 :

  • sysctl net.ipv6.conf.all.disable_ipv6=1

Il est aussi possible de ne pas résoudre les adresses en modifiant le plugin. Dans /usr/share/munin/plugins/ntp_state, commenter les lignes 116 à 123 :

#        if ($packet) {
#                my @answer = $packet->answer;
#                foreach my $rr (@answer) {
#                        if ("PTR" eq $rr->type) {
#                                $host = $rr->ptrdname;
#                        }
#                }
#        }


Munin - erreurs "Use of uninitialized value ..."

Au passage, je me suis rendu compte que mes logs étaient remplis de cette erreur :

Use of uninitialized value in pattern match (m//) at /usr/share/perl5/Net/Server.pm line 600.

C'est le package libnet-server-perl qui est en cause. Il est encore en version 2.006 et ce bug n'est donc pas encore résolu : libnet-server-perl: Uninitialized value in pattern match spam. On peut appliquer le patch ou attendre que la version 2.007 soit mise sur les dépôts.

Munin - Erreur 404 lors de la consultation des graphiques

Après mise à jour de Munin (tout court, pas -node), je ne pouvais tout simplement plus accéder à l'interface de Munin : erreur 404. Pour cause, le lien vers le fichier de configuration avait sauté. Il m'a donc suffit de le refaire :

  • ln -s /etc/munin/apache.conf /etc/apache2/conf.d/munin.conf