Logs qui explosent : problème rsyslog / pdns

Bonjour à tous,

Je tente de terminer la mise en place d’un serveur Skolelinux (aussi appelé debian-edu), basé sur Debian Lenny 5.0.4. En gros, ce système s’articule autour de SaMBa et LTSP, adossés à PowerDNS et OpenLDAP.

Ce serveur s’inscrit dans un réseau déjà configuré, j’ai donc dû modifier la configuration pour eth0, et en conséquence pas mal de fichiers de configuration, en suivant ce post.

J’avais pas mal lutté avant de trouver cette méthode, sans résultats probants ; à l’heure actuelle, on dirait bien que ça fonctionne… Sauf que, à présent, des fichiers de logs se remplissent à toute vitesse, en particulier : syslog, messages, mail.log, mail.info, auth.log, user.log, debug, dhcp.log, kern.log, et autres logs de pdns.

Pour arrêter la catastrophe, je n’ai pas trouvé d’autre solution que :

[code]# /etc/init.d/pdns stop

/etc/init.d/rsyslog restart[/code]

Ça en revanche, c’est souverain : l’explosion s’arrête net. Notez que ça marche aussi en arrêtant slapd au lieu de pdns.
Si je me contente de redémarrer rsyslog, ça limite la casse sur les autres fichiers, mais syslog et messages continuent systématiquement à grossir, plus ou moins vite rejoints par les autres fichiers.

Le contenu des logs montre une boucle de remplissage, en général de 5 à 10 messages qui sont répétés sur plusieurs dizaines de milliers de lignes (syslog se remplit de 20.000 lignes par seconde, environ…). Le bourrage commence toujours par syslog , puis les autres suivent au fil du temps (sur mon dernier test, c’était auth.log en deuxième, et après c’est plus flou, parce que quand les autres rentrent en jeu, ça devient difficile à suivre…).

A ce stade, je ne comprends simplement pas ce qu’il se passe. C’est clairement lié au système de DNS (ou LDAP), probablement une configuration foireuse qui entraîne une boucle, mais je ne vois pas comment faire pour déterminer ce qui cloche…
Toute idée sera bonne à prendre, alors n’hésitez pas ! Merci d’avance !

Peut-on avoir un échantillon de ces logs ?
Tu peux, en attendant de trouver le soucis, désactiver la journalisation de powerdns.

Bonjour Niloo, et merci de te pencher sur ce problème !

J’ai trouvé plus bourrin comme solution : stopper la journalisation tout court :smiling_imp:
Ouais bon, OK, c’est super moyen : je vais bien sûr tester l’arrêt de la journalisation de pdns.

Des extraits de log, en voilà : il faut juste s’imaginer chaque séquence répétée sur des kilomètres…

/var/log/syslog

Mar 16 12:54:39 tjener slapd[3537]: daemon: shutdown requested and initiated. Mar 16 12:54:39 tjener slapd[3537]: slapd shutdown: waiting for 0 threads to terminate Mar 16 12:54:17 tjener pdns[18984]: Creating backend connection for TCP Mar 16 12:54:17 tjener pdns[18984]: About to create 3 backend threads for UDP Mar 16 12:54:17 tjener pdns[18982]: Listening on controlsocket in '/var/run/pdns.controlsocket' Mar 16 12:54:17 tjener pdns[18984]: Guardian is launching an instance Mar 16 12:54:17 tjener pdns[18984]: This is a guarded instance of pdns Mar 16 12:54:17 tjener pdns[18984]: UDP server bound to 127.0.0.1:53 Mar 16 12:54:17 tjener pdns[18984]: UDP server bound to 192.168.1.58:53 Mar 16 12:54:17 tjener pdns[18984]: UDP server bound to 192.168.0.254:53 Mar 16 12:54:17 tjener pdns[18984]: TCP server bound to 127.0.0.1:53 Mar 16 12:54:41 tjener slapd[3537]: slapd stopped. Mar 16 12:54:17 tjener pdns[18984]: TCP server bound to 192.168.1.58:53 Mar 16 12:54:17 tjener pdns[18984]: TCP server bound to 192.168.0.254:53 Mar 16 12:54:17 tjener pdns[18984]: PowerDNS 2.9.21.2 (C) 2001-2008 PowerDNS.COM BV (Nov 25 2008, 22:40:57, gcc 4.3.2) starting up Mar 16 12:54:17 tjener pdns[18984]: PowerDNS comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it according to the terms of the GPL version 2.

/var/log/messages

Mar 16 12:54:17 tjener pdns[18984]: About to create 3 backend threads for UDP Mar 16 12:54:17 tjener pdns[18982]: Listening on controlsocket in '/var/run/pdns.controlsocket' Mar 16 12:54:17 tjener pdns[18984]: This is a guarded instance of pdns Mar 16 12:54:17 tjener pdns[18984]: PowerDNS 2.9.21.2 (C) 2001-2008 PowerDNS.COM BV (Nov 25 2008, 22:40:57, gcc 4.3.2) starting up Mar 16 12:54:17 tjener pdns[18984]: PowerDNS comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it according to the terms of the GPL version 2.

/var/log/mail.log

Mar 16 12:07:35 tjener imapd-ssl: Connection, ip=[::ffff:192.168.1.58] Mar 16 12:07:35 tjener imapd-ssl: LOGOUT, ip=[::ffff:192.168.1.58], rcvd=11, sent=309Le remplissage de ce fichier n’avait pas commencé lors du dernier test…

/var/log/auth.log

Mar 16 12:05:01 tjener CRON[7406]: pam_unix(cron:session): session opened for user root by (uid=0) Mar 16 12:05:01 tjener CRON[7408]: pam_unix(cron:session): session closed for user root Mar 16 12:05:02 tjener CRON[7407]: pam_unix(cron:session): session closed for user munin Mar 16 12:05:01 tjener CRON[7408]: pam_unix(cron:session): session opened for user root by (uid=0) Mar 16 12:10:01 tjener CRON[8572]: pam_unix(cron:session): session closed for user root Mar 16 12:10:01 tjener CRON[8571]: pam_unix(cron:session): session opened for user munin by (uid=0) Mar 16 12:09:01 tjener CRON[8338]: pam_unix(cron:session): session closed for user root Mar 16 12:10:02 tjener CRON[8571]: pam_unix(cron:session): session closed for user munin Mar 16 12:09:01 tjener CRON[8338]: pam_unix(cron:session): session opened for user root by (uid=0)Le remplissage de ce fichier n’avait pas commencé lors du dernier test…

Euh, par contre, je pige pas : jusque-là, je me contentais de tester la manip décrite dans le premier post (arrêt de pdns, redémarrage de rsyslog), puis je constatais à nouveau le problème après avoir redémarré pdns. Curieux de voir si ce n’était pas aussi (plutôt ?) lié à slapd, dans un nouveau test j’ai arrêté slapd avant de redémarrer rsyslog. En redémarrant slapd, le problème ne se pose plus.
Je viens de tester ceci :

[code]# /etc/init.d/slapd restart

/etc/init.d/pdns restart

/etc/init.d/rsyslog restart[/code]

Et… rien, tout fonctionne à merveille.

Entre temps, j’ai “juste” modifié à la main /etc/resolv.conf, qui contenait ceci :

[code]# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)

DO NOT EDIT THIS FILE BY HAND – YOUR CHANGES WILL BE OVERWRITTEN

nameserver 127.0.0.1
search intern[/code]… pas très pratique pour se connecter à Internet : j’y ai donc inséré, avant la première déclaratoin “nameserver” la ligne “nameserver 192.168.1.1”. Je vais tester le retrait de la ligne, histoire de voir si ça change vraiment quelque chose.

Voilà, si tu as besoin d’autre chose pour te faire une idée, je te le donnerais avec grand plaisir !

Ouais, je pars un peu dans tous les sens… Disons que l’administration d’un serveur Linux n’est clairement pas mon métier premier, et que j’essaie de comprendre les concepts et interactions sur le tas. C’est moins efficace que des cours en classe, on est d’accord :wink:

EDIT :
Après test de modification de /etc/resolv.conf, il est CLAIR que ça change quelque chose. Si j’enlève la ligne désignant la passerelle, ça repart comme en 14 : bombardement de log assuré. En revanche, je remets la ligne, je redémarre rsyslog, et tout va bien, le soleil brille et les oiseaux chantent… ah non, ça c’est dehors… tout va bien, les journaux se remplissent normalement.
Je ne sais pas pourquoi la passerelle n’était pas indiquée de base dans le fichier (pas très pratique pour les mises à jour de paquets, ça), ni pourquoi slapd/pdns/rsyslog (rayer les mentions inutiles) s’affolent à ce point dans ce cas. Mais ça semble déjà être un grand pas vers une solution, non ?

Voici le contenu de /etc/network/interfaces :

[code]# /etc/network/interfaces – configuration file for ifup(8), ifdown(8)

This file was created by debian-edu-profile during the Debian installation

… and heavily modified by essaion, Emperor of Wasted Time

The loopback interface

auto lo
iface lo inet loopback
dns-search intern

Carte reseau integree

Connexion au LAN existant

auto eth0
iface eth0 inet static
address 192.168.1.58
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 127.0.0.1 192.168.1.58 192.168.1.1
dns-search intern

Carte reseau PCI

Connexion au nouveau LAN (LTSP, clients du domaine, etc.)

auto eth1
iface eth1 inet static
address 192.168.0.254
netmask 255.255.255.0
broadcast 192.168.0.255[/code]
En voyant ça, je ne comprends pas à quoi joue resolvconf : le fichier /etc/resolv.conf n’a rien à voir avec ce que contient le fichier /etc/network/interfaces ?! Après avoir modifié à la main /etc/resolv.conf, j’ai fait un # /etc/init.d/resolvconf reload pour voir : la ligne “nameserver 192.168.1.1” disparaît bien, et les journaux recommencent à se remplir dans la foulée…

Une idée ? resolvconf irait-il piocher la configuration réseau ailleurs (et cet ailleurs serait donc mal configuré) ?

EDIT : hm, c’est plus tordu que je ne pensais. Dans /etc/resolv.conf, si le serveur apparaît en tant que nameserver, sous son adresse de loopback ou celle de eth0 (pas testé avec eth1), le bourrage de logs recommence. Retour à l’état initial du fichier, redémarrage de rsyslog, et tout va bien à nouveau. Y a donc bien quelque chose de déconnant dans la configuration réseau (DNS ?) sur l’hôte… mais quoi ?

Personnellement, je ne configure les DNS que dans le fichier /etc/resolv.conf et non dans le fichier /etc/network/interfaces ou les deux.
Donc je te suggère de virer les lignes dns-* dans le fichier d’interface et de vérifier que dans le resolv, tout soit ok.

Sur cette machine as-tu un paquet genre network-manager ?
Pour le savoir : dpkg -l | grep network-manager
Si oui je peux te conseiller de le supprimer car j’ai constaté pas mal de soucis sur plusieurs machines quand ce paquet est présent.

Si tu constates toujours que le fichier resolv est modifié contre ton grès, tu as toujours la possibilité de le verrouiller avec la commande chattr en activant l’immuabilité sur ce fichier.

Hm, je vais tester ça, mais a priori, rien n’est pris en compte dans /etc/network/interfaces pour la constitution du /etc/resolv.conf. Ce qui est curieux, mais peut-être lié à la présence d’un serveur DNS en local (?! … je n’ai pas trouvé d’info pertinente dans mon cas sur le fonctionnement de resolvconf). Donc le modifier ne devrait pas changer la situation… En même temps, mettre des ‘#’ en début de ligne, j’adore :wink:

[quote]Sur cette machine as-tu un paquet genre network-manager ?[/quote]Non : un dpkg -l | grep manager ne ramène rien de ce tonneau. Donc c’est pas le problème (malheureusement).

Je note la manip pour verrouiller le fichier /etc/resolv.conf… Mais le problème, c’est plutôt qu’il me semble nécessaire de faire figurer 127.0.0.1 et/ou 192.168.1.58 en tant que nameservers dans ce fichier, et que s’il contient l’une de ces deux lignes, le remplissage de logs recommence…

Il y a donc très probablement un problème de configuration quelque part, je parierais sur LDAP (enfin, les données DNS dans LDAP quoi), mais je n’y connais absolument rien de ce côté-là (je me suis bêtement contenté de suivre la manipulation décrite dans la page indiquant quoi modifier en cas d’IP différente, en l’adaptant à mon cas : j’ai peut-être simplement fait une boulette… mais ne sais même pas comment vérifier cela).

Un gros merci pour ton retour en tout cas !

EDIT : mise en commentaire des lignes “dns*” dans /etc/network/interfaces, puis # /etc/init.d/resolvconf reloadMême /etc/resolv.conf résultant que précédemment (un seul nameserver paramétré : 127.0.0.1). Une ligne a tout de même attiré mon attention : “Not updating PowerDNS, disabled in /etc/default/pdns”… Après examen du fichier indiqué, rien de palpitant : resolvconf ne met pas à jour le recurseur définit dans /etc/powerdns/pdns.conf. Celui-ci est de toute façon correct, et n’a effectivement pas besoin d’être mis à jour.

Quelques nouvelles de mes déboires : je ne comprends toujours pas en quoi une (probable) mauvaise configuration du DNS embrouille rsyslog au point que celui-ci remplit les logs avec des lignes même pas dans le bon ordre (flagrant dans syslog et auth.log, voir plus haut).

Je n’ai pas trouvé comment arrêter la journalisation de pdns : commenter “logging-facility” dans /etc/powerdns/pdns.conf arrête bien la journalisation dans les fichiers définis dans /etc/rsyslog.conf (/var/log/pdns/pdns-[info|warn|err].log), mais cela ne change pas le fait que les autres logs se remplissent à toute vitesse).

Du coup, en bon gros bourrin, j’arrête purement et simplement la journalisation, à grands coups de “/etc/init.d/rsyslog stop”.
Le plus curieux dans l’histoire, c’est que tout le reste semble fonctionner correctement (résolution DNS en local, attribution DHCP, etc.)

Si quelqu’un a la moindre suggestion sur ce qu’il faudrait regarder, je suis preneur !
Merci d’avance !

Salut,
Je suis tombé là-dessus un peu par hasard…

Et si…

[quote]Dans le même temps, paramétrons ces log pour ne pas qu’ils fassent une taille énorme via le proccessus des logrotate. Pour ce fait, ajouter simplement dans /etc/logrotate.d/rsyslog les lignes suivantes, juste après /var/log/messages
/var/log/pdns.log
/var/log/pdns-recursor.log[/quote]

nyrodev.info/index.php/2009/03/2 … bian-lenny

Salut, et merci pour cet avis !

Malheureusement, ça ne résout rien : l’astuce consiste juste à “faire tourner” les fichiers de log de pdns, pour n’avoir que 24 heures d’historique par fichier. Mon problème, c’est qu’à la vitesse où les logs se remplissent, /var est saturé en moins de cinq minutes… Et vu le nombre de fichiers touchés et le contenu qui y est inséré, il y a clairement un malaise…

J’avoue que je ne comprends toujours pas pourquoi tous ces fichiers sont touchés. Par exemple, dans /var/log/kern.log, il y a “juste” une ligne répétée plusieurs milliers de fois :

Je ne comprends pas ce que ça a à voir avec le DNS… :frowning:

J’ai rencontré un soucis au niveau des logs également et cela a été corrigé récemment suite à un rapport de bug.
Que te retourne cette commande :

# dpkg -l | grep linux-image ii linux-image-2.6-amd64 2.6.26+lenny1 Linux 2.6 image on AMD64 ii linux-image-2.6.26-2-amd64 2.6.26-21lenny4 Linux 2.6.26 image on AMD64
Le premier est un pseudo-paquet, c’est donc bien le noyau 2.6.26-2 qui tourne sur ce serveur, ce que confirme :

# uname -a Linux tjener.intern 2.6.26-2-amd64 #1 SMP Tue Mar 9 22:29:32 UTC 2010 x86_64 GNU/Linux
Mmh, en jetant un oeil sur kernel.org, je constate que, en effet, le noyau n’est pas d’une prime fraîcheur… Alors, mise à jour (et si oui, comment ?) ou pas ?

C’est justement la version 2.6.26-21lenny4 qui corrigeait le soucis présent dans la version 2.6.26-21lenny3 au niveau des logs.

Effectivement il y a une grosse différence de version entre les dépôts lenny et kernel.org mais cela vient tout simplement du fait que les autres noyaux ne sont pas considérés comme suffisamment stable.
Tu peux toujours essayer de mettre un noyau plus récemment (testing par exemple) et de voir si c’est mieux.

Merci pour ta suggestion !
Je viens d’installer la version du noyau disponible dans squeeze (2.6.32-3-amd64)… hélas, ça ne corrige rien !
J’ai bien vérifié que c’était ce noyau qui était utilisé (uname -a).

Les journaux de log sont toujours remplis à toute vitesse, avec une boucle de texte présentant des entrées même pas dans l’ordre chronologique. Rien n’indique que le problème ne vient pas du noyau, mais en tout cas une version décemment récente ne le corrige pas…

Un truc tout de même que j’ai remarqué : lorsque j’arrête rsyslog, la dernière ligne du fichier /var/log/messages contient bien l’information “Kernel logging (proc) stopped”. Quel que soit ce qui crée cette boucle, cela ne plante pas apparemment pas rsyslog…

Ah misère, que de galères sur ce serveur…

Peux-tu nous poster tes fichiers de configuration de rsyslog ?

Hmm, en fait non : j’ai fait mon windowsien, j’ai simplement tout cassé (pour changer de distro). Après avoir passé pas mal de temps sous SambaEdu, debian-edu ça fait quand même vachement mal (gestion bien moins simplifiée), et surtout je disposais d’une quantité de temps très limitée (le serveur aurait dû être en prod depuis… deux semaines…).

Je suis donc revenu sous SambaEdu, et force est de constater que ça marche vraiment bien. Vu que ce n’est pas prévu pour ça, je dois implémenter la partie “passerelle + filtrage” à la main, mais c’est du velours comparé à tout ce que j’ai dû affronter depuis le début de l’installation de ce serveur.
Question non résolue donc, dommage car j’aurais bien aimé avoir le fin mot de l’histoire, mais je n’avais simplement plus le temps de chercher…

Merci pour tes avis, Niloo : ce n’est pas du temps complètement perdu, vu que ça m’a fait réfléchir sur pas mal de choses dans l’intervalle. Bonne continuation et à plus !