Taille: 6381
Commentaire: Ajout des mises à jour du 9 décembre (4.0->4.1->4.2)
|
Taille: 6341
Commentaire: J'ai le sentiment qu'on devrait renommer cette page pour parler juste de rsyslog (et pas du serveur lui-même)
|
Texte supprimé. | Texte ajouté. |
Ligne 1: | Ligne 1: |
= Description = | ## Che fais le ménache -- PeBecue <<DateTime(2012-04-15T23:08:46+0100)>> |
Ligne 3: | Ligne 3: |
Il s'agit d'un SUN XFIRE 2100, un serveur 1U avec un opteron 64bits et d'un disque SATA de 80 Go | <<TableOfContents>> |
Ligne 5: | Ligne 5: |
Ragnarok fonctionne sur [http://www.openbsd.org/ OpenBSD]. | = Ragnarok = |
Ligne 7: | Ligne 7: |
= Les services = | Ragnarok est le serveur qui s'occupera (bientôt) de récupérer les logs des différents serveurs du Cr@ns. Il a reçu deux disques durs montés en RAID d'un teraoctet, et a été mis à neuf sous squeeze. |
Ligne 9: | Ligne 9: |
* le wifi (à ne pas confondre avec le wiki) ; quelques infos supplémentaires sur WifiTechnique/OpenBsd. * devrait stocker les sauvegardes de pegase (à rediscuter de qui le gère) ---- |
= Configuration et services = |
Ligne 13: | Ligne 11: |
= Les mises à jour = Openbsd sort une mise à jour bi-annuelle, une en novembre, l'autre en mai. Chaque mise à jour se fait de version en version (3.8->3.9, 3.9->4.0). |
Ragnarok a été installé sous squeeze, en debootstrap. |
Ligne 16: | Ligne 13: |
== 3.8 -> 3.9 == | Les services installés dessus sont : |
Ligne 18: | Ligne 15: |
* Il y a eu des modifications locales (qui ont été reportés dans les nouveaux fichiers) dans les fichiers suivants : * {{{/etc/rc}}} (lancement de {{{named}}}, {{{isakmpd}}} et {{{httpd}}} avec {{{systrace}}}) * {{{/mtree/special}}} ({{{pf.conf}}} en 0644) * {{{/etc/rc.conf}}} (activation de {{{named}}}, {{{ntpd}}}, {{{isakmpd}}}, {{{dhcpd}}}, {{{httpd}}}, {{{nfs_server}}}, {{{amd}}}, {{{pf}}}, {{{portmap}}}, {{{syslogd}}} et paramètre {{{amd_dir}}}) * {{{/etc/ssh/sshd_config}}} (root peut se loguer) * {{{/etc/sysctl.conf}}} (forwarding... le chiffrement de la swap était activé, il ne l'est plus) * Par contre, il semblerait qu'aucune mise à jour de paquet n'ai pu se faire : il y a eu un tas d'erreurs du style : {{{ --- bzip2-1.0.3 ------------------- Couldn't delete /usr/local/lib/libbz2.so.10.3 (bad md5) Couldn't delete /usr/local/bin/bzip2 (bad md5) Couldn't delete /usr/local/bin/bzip2recover (bad md5) Couldn't delete /usr/local/lib/libbz2.a (bad md5) Files kept as partial-bzip2-1.0.3 package }}} Supprimer les paquets {{{partial-*}}}, et relancer la mise à jour résoud le problème : {{{ for u in $(pkg_info 2>/dev/null|awk '/^partial/{print $1}'); do pkg_delete $u; done pkg_add -ui -F update -F updatedepends |
* La gestion des logs == Configuration sur Ragnarok == Ragnarok fonctionne avec rsyslog, il faudra donc passer tous les serveurs sous rsyslog pour qu'ils puissent envoyer leurs informations à celui-ci. Pour centraliser les logs, on utilise PostgreSQL, avec le paquet rsyslog-pgsql (la table par défaut s'appelle Syslog). L'envoi d'un serveur vers Ragnarok se fera à l'aide du protocole RELP (une surcouche de TCP, plus fiable), il faut donc veiller à installer le paquet rsyslog-relp. Une fois cela fait, on crée le répertoire rsyslog.d/ dans le dossier /etc/ s'il n'existe pas (a priori, il existe déjà, car rsyslog-psql crée un fichier psql.conf dans ce dossier). Et dedans, on va créer le fichier listen_relp.conf, que l'on va remplir ainsi : {{{ $ModLoad imrelp $InputRELPServerRun 20514 |
Ligne 39: | Ligne 28: |
== 3.9 -> 4.0 == | La première ligne sert à charger le module imrelp, la seconde place Ragnarok en écoute sur le port 20514, en attente de logs. Cela fait, on relance rsyslog via la commande "sudo /etc/init.d/rsyslog restart". |
Ligne 41: | Ligne 30: |
* Modifications locales : comme ci-dessus, plus : * {{{/etc/mail/aliases}}} (alias de {{{root}}} vers {{{root@crans.org}}}) * {{{/etc/rc.local}}} (on conserve le fichier déjà en production) * Problèmes particuliers rencontrés lors de la mise à jour 3.8 -> 4.0 : * La sortie de la commande {{{netstat -r -f encap}}}, utilisée pour obtenir la liste des clients authentifiés en ipsec, a changé de format. Cela cassait le script whos pour les bornes. * La mise à jour de rsync vers la version 2.6.8, où les options {{{-D}}} et {{{--devices}}} ne sont plus équivalentes. La sauvegarde par backuppc ne fonctionnait plus : * Erreur côté pegase (backuppc) : {{{ Connected to 138.231.144.11:873, remote version 29 Connected to module slash Sending args: --server --sender --numeric-ids --perms --owner --group --devices --links --times --block-size=2048 --recursive --checksum-seed=32761 --one-file-system --exclude=lost+found --exclude=etc/wifi/wifi-update/*/retry --ignore-times . . Checksum caching enabled (checksumSeed = 32761) fileListReceive() failed Done: 0 files, 0 bytes Got fatal error during xfer (fileListReceive failed) Backup aborted (fileListReceive failed) |
== (Re)Configuration des serveurs == Parlons de la reconfiguration des serveurs, par exemple, whatsupdoc. On s'assure d'abord que le paquet gérant les logs est rsyslog. Par ailleurs, il faut installer rsyslog-relp, pour que l'envoi des informations puisse se faire. Dans /etc/rsyslog.d, nous allons créer le fichier send_relp.conf, contenant les informations suivantes : {{{ $ModLoad omrelp *.* :omrelp:10.231.136.11:20514;RSYSLOG_ForwardFormat |
Ligne 58: | Ligne 38: |
* Erreur côté ragnarok (rsyncd) : {{{ 2006/11/29 00:32:01 [11328] connect from pegase.adm.crans.org (138.231.144.18) 2006/11/29 00:32:02 [11328] rsync on . from backupcrans@pegase.adm.crans.org (138.231.144.18) 2006/11/29 00:32:02 [11328] rsync: writefd_unbuffered failed to write 4 bytes [sender]: Broken pipe (32) 2006/11/29 00:32:02 [11328] rsync error: error in rsync protocol data stream (code 12) at /usr/obj/ports/rsync-2.6.8/rsync-2.6.8/io.c(1119) [sender=2.6.8] |
La première ligne charge le module d'envoi des données en RELP, la seconde spécifie que tous les logs doivent être envoyés à Ragnarok (10.231.136.11), sur le port 20514, via le module omrelp, dans un format prédéfini (RSYSLOG_ForwardFormat). Il ne reste qu'à relancer rsyslog via la commande "sudo /etc/init.d/rsyslog restart". === Généralisation de la configuration via bcfg2 === On supposera ici que les modifications de bcfg2 se font via darcs, on notera donc / comme étant la racine du répertoire darcs bcfg2. Dans /Cfg/etc/rsyslog.d, créer le répertoire send_relp.conf/ et listen_relp.conf/. Dans send_relp.conf/, créer le fichier send_relp.conf, et y mettre les lignes mentionnées au dessus. Dans listen_relp.conf/ créer le fichier listen_relp.conf, et y mettre les lignes mentionnées au dessus également. Dans /Bundler/, créer le fichier rsyslog.xml, et le remplir comme suit : {{{ <Bundle name="rsyslog" version="2.0"> <Service name="rsyslog"/> <Group name="syslog-server"> <ConfigFile name="/etc/rsyslog.d/listen_relp.conf"/> </Group> <Group name="syslog-client"> <Group name="syslog-server" negate="true"> <ConfigFile name="/etc/rsyslog.d/send_relp.conf"/> </Group> </Group> <Package name="rsyslog-relp"/> </Bundle> |
Ligne 65: | Ligne 65: |
Correction : remplacer {{{--devices}}} par {{{-D}}} dans la config de backuppc. | |
Ligne 67: | Ligne 66: |
== 4.0 -> 4.1 == | Dans /Metadata/, modifier le fichier groups.xml, on va modifier le groupe "ragnarok" pour commencer, chercher dans le fichier l'occurence 'Group name="ragnarok"', et y ajouter la ligne : |
Ligne 69: | Ligne 68: |
* Modifications locales: * /etc/rc.conf: toutes les modifications locales sont à reporter dans un fichier /etc/rc.conf.local, car à partir de cette release le fichier rc.conf devient "immuable" et les changements doivent apportés dans le fichier /etc/rc.conf.local (déjà possible auparavant, maintenant considéré comme obligatoire par la procédure de mise à jour); les changements apportés à la configuration de base apparaissent ainsi plus facilement. * Après vérification, c'était déjà fait, il faut donc que ça dure. * /etc/rc: les changements à apporter à ce fichier sont triviaux à appliquer. * fait sans souci * /etc/mail/aliases: seul point à vérifier, le retrait définitif de /etc/aliases pour utiliser /etc/mail/aliases dans la configuration de base. * la vérification a été effectuée * La config de PF doit être checkée par rapport à la nouvelle config par défaut des règles stateful (en particulier en ce qui concerne IPsec). Le fichier pf.conf ne nécessitera pas beaucoup de changements (voir [http://openbsd.org/faq/upgrade41.html#apps]) * après vérification, le pf.conf n'a pas subi de modifications (l'IPsec fonctionne avec les règles stateful) * les autres modifications (droits 644 de /etc/pf.conf, les modif de rc.local, sysctl.conf et sshd_config) sont à reporter comme pour les versions précédentes. * fait |
{{{ <Group name="syslog-server"/> }}} |
Ligne 81: | Ligne 72: |
* Mise à jour des paquets. * Problèmes : aucun. |
Maintenant, on modifie le groupe "crans-common", chercher l'occurence 'Group name="crans-common"', et y ajouter la ligne (là où il faut, histoire que le fichier reste lisible...) : |
Ligne 84: | Ligne 74: |
== 4.1 -> 4.2 == | {{{ <Group name="syslog-client"/> }}} |
Ligne 86: | Ligne 78: |
* Rien de spécial quant aux modifications locales des fichiers, les changements ont été apportés sans accrocs. | Dans la portion services du fichier, dans la catégorie divers, rajouter deux nouveaux groupes : |
Ligne 88: | Ligne 80: |
* Mise à jour des paquets : * Suite à [http://www.openbsd.org/faq/upgrade42.html#libexpat une erreur d'évaluation des développeurs OpenBSD], la bibliothèque expat (parser XML, une des dépendances de python entre autres) est passée (pour cette release uniquement, en effet expat fera partie de base43.tgz) dans l'archive xbase42.tgz. Cette archive a donc été installée en plus des classiques autres, et le paquet expat-2.0.0 supprimé. Apparemment la transition s'est faite sans accroc. |
{{{ <Group name="syslog-server" comment="Serveur de centralisation des logs"> <Bundle name="rsyslog"/> </Group> <Group name="syslog-client" comment="Serveurs qui ne centralisent pas les logs (cpt Obvious inside)"> <Bundle name="rsyslog"/> </Group> }}} |
Ligne 91: | Ligne 92: |
* Comme précédemment, aucun autre changement de format n'est annoncé pour les divers logs que nous utilisons, mais vigilance. | À partir de là normalement, on peut enregistrer la configuration, et c'est terminé ! |
Ligne 93: | Ligne 94: |
== 4.2 -> 4.3 (futur) == | Penser à faire add sur les nouveaux fichiers avant de faire un record et de pousser. |
Ligne 95: | Ligne 96: |
On va peut-être attendre qu'elle sorte... :) | NB: On ne sait pas pourquoi, mais au début whatsupdoc n'envoyait pas les logs, puis finalement après quelques bidouillages, sans qu'on ait compris la cause, ça a marché... À creuser lors de la généralisation. |
Ligne 97: | Ligne 98: |
= Histoire = | == Pour les switchs == Les logs des switchs sont envoyés vers {{{ragnarok}}} le protocole syslog (en UDP), via la directive de configuration: {{{ logging 10.231.136.11 }}} |
Ligne 99: | Ligne 104: |
Il s'agit du premier serveur SUN acheté par le CRANS. C'est aussi le premier serveur qui peut être stocké dans une armoire de switchs. | Ragnarok doit donc également autoriser l'envoi de log via UDP, ce qui se réalise à l'aide d'un fichier supplémentaire ( ./rsyslog.d/listen_switches.local.conf ): {{{ $ModLoad imudp $UDPServerRun 514 $AllowedSender UDP, 127.0.0.1, *.adm.crans.org, 10.231.136.0/24 }}} |
Ligne 101: | Ligne 111: |
Il est assez surprenant de par sa conception et aussi très étonnant quant à son silence de fonctionnement. | On a quelques problèmes ouverts sur le champ fromhost enregistré dans la base pgsql: les ip des switchs sont utilisés au lieu de leur nom d'hôte. En désactivant, certaines directives de rsyslog, on arrive à enregistrer le nom d'hôte mais c'est alors les autres serveurs qui sont enregistrés par leur adresse IP ! NB: On utilise ici le protocole UDP, car c'est le seul disponible sur les switchs (probablement par soucis de légèreté). == Pour les bornes wifi == En raison de la limitation du firewall, les bornes wifi envoient leurs logs au routeur wifi {{{gordon}}}. Ceci se réalise en redémarrant {{{syslogd}}} sur les bornes via la commande: {{{ killall syslogd; syslogd -R 138.231.148.1 -C16 }}} Il serait envisageable, dans le futur, d'inclure cette configuration par défaut: en rajoutant les directives suivantes dans {{{/etc/config/system}}} (catégorie {{{config}}}) {{{ option log_ip 138.231.148.1 option log_type file option log_file /dev/null }}} {{{gordon}}} doit de plus être configuré pour recevoir ces logs UDP: {{{ $ModLoad imudp $UDPServerRun 514 $AllowedSender UDP, 127.0.0.1, 138.231.148.0/24 }}} Ce dernier les transmet alors à {{{ragnarok}}} de la même manière que ses propres logs. |
Ligne 104: | Ligne 137: |
* CatégorieCrans/PageNonTerminée : Faire le point sur les différents éléments | CatégorieCrans CatégorieCrans/LesServeurs |
Sommaire
Ragnarok
Ragnarok est le serveur qui s'occupera (bientôt) de récupérer les logs des différents serveurs du Cr@ns. Il a reçu deux disques durs montés en RAID d'un teraoctet, et a été mis à neuf sous squeeze.
Configuration et services
Ragnarok a été installé sous squeeze, en debootstrap.
Les services installés dessus sont :
- La gestion des logs
Configuration sur Ragnarok
Ragnarok fonctionne avec rsyslog, il faudra donc passer tous les serveurs sous rsyslog pour qu'ils puissent envoyer leurs informations à celui-ci. Pour centraliser les logs, on utilise PostgreSQL, avec le paquet rsyslog-pgsql (la table par défaut s'appelle Syslog). L'envoi d'un serveur vers Ragnarok se fera à l'aide du protocole RELP (une surcouche de TCP, plus fiable), il faut donc veiller à installer le paquet rsyslog-relp.
Une fois cela fait, on crée le répertoire rsyslog.d/ dans le dossier /etc/ s'il n'existe pas (a priori, il existe déjà, car rsyslog-psql crée un fichier psql.conf dans ce dossier). Et dedans, on va créer le fichier listen_relp.conf, que l'on va remplir ainsi :
$ModLoad imrelp $InputRELPServerRun 20514
La première ligne sert à charger le module imrelp, la seconde place Ragnarok en écoute sur le port 20514, en attente de logs. Cela fait, on relance rsyslog via la commande "sudo /etc/init.d/rsyslog restart".
(Re)Configuration des serveurs
Parlons de la reconfiguration des serveurs, par exemple, whatsupdoc. On s'assure d'abord que le paquet gérant les logs est rsyslog. Par ailleurs, il faut installer rsyslog-relp, pour que l'envoi des informations puisse se faire. Dans /etc/rsyslog.d, nous allons créer le fichier send_relp.conf, contenant les informations suivantes :
$ModLoad omrelp *.* :omrelp:10.231.136.11:20514;RSYSLOG_ForwardFormat
La première ligne charge le module d'envoi des données en RELP, la seconde spécifie que tous les logs doivent être envoyés à Ragnarok (10.231.136.11), sur le port 20514, via le module omrelp, dans un format prédéfini (RSYSLOG_ForwardFormat). Il ne reste qu'à relancer rsyslog via la commande "sudo /etc/init.d/rsyslog restart".
Généralisation de la configuration via bcfg2
On supposera ici que les modifications de bcfg2 se font via darcs, on notera donc / comme étant la racine du répertoire darcs bcfg2.
Dans /Cfg/etc/rsyslog.d, créer le répertoire send_relp.conf/ et listen_relp.conf/. Dans send_relp.conf/, créer le fichier send_relp.conf, et y mettre les lignes mentionnées au dessus. Dans listen_relp.conf/ créer le fichier listen_relp.conf, et y mettre les lignes mentionnées au dessus également.
Dans /Bundler/, créer le fichier rsyslog.xml, et le remplir comme suit :
<Bundle name="rsyslog" version="2.0"> <Service name="rsyslog"/> <Group name="syslog-server"> <ConfigFile name="/etc/rsyslog.d/listen_relp.conf"/> </Group> <Group name="syslog-client"> <Group name="syslog-server" negate="true"> <ConfigFile name="/etc/rsyslog.d/send_relp.conf"/> </Group> </Group> <Package name="rsyslog-relp"/> </Bundle>
Dans /Metadata/, modifier le fichier groups.xml, on va modifier le groupe "ragnarok" pour commencer, chercher dans le fichier l'occurence 'Group name="ragnarok"', et y ajouter la ligne :
<Group name="syslog-server"/>
Maintenant, on modifie le groupe "crans-common", chercher l'occurence 'Group name="crans-common"', et y ajouter la ligne (là où il faut, histoire que le fichier reste lisible...) :
<Group name="syslog-client"/>
Dans la portion services du fichier, dans la catégorie divers, rajouter deux nouveaux groupes :
<Group name="syslog-server" comment="Serveur de centralisation des logs"> <Bundle name="rsyslog"/> </Group> <Group name="syslog-client" comment="Serveurs qui ne centralisent pas les logs (cpt Obvious inside)"> <Bundle name="rsyslog"/> </Group>
À partir de là normalement, on peut enregistrer la configuration, et c'est terminé !
Penser à faire add sur les nouveaux fichiers avant de faire un record et de pousser.
NB: On ne sait pas pourquoi, mais au début whatsupdoc n'envoyait pas les logs, puis finalement après quelques bidouillages, sans qu'on ait compris la cause, ça a marché... À creuser lors de la généralisation.
Pour les switchs
Les logs des switchs sont envoyés vers ragnarok le protocole syslog (en UDP), via la directive de configuration:
logging 10.231.136.11
Ragnarok doit donc également autoriser l'envoi de log via UDP, ce qui se réalise à l'aide d'un fichier supplémentaire ( ./rsyslog.d/listen_switches.local.conf ):
$ModLoad imudp $UDPServerRun 514 $AllowedSender UDP, 127.0.0.1, *.adm.crans.org, 10.231.136.0/24
On a quelques problèmes ouverts sur le champ fromhost enregistré dans la base pgsql: les ip des switchs sont utilisés au lieu de leur nom d'hôte. En désactivant, certaines directives de rsyslog, on arrive à enregistrer le nom d'hôte mais c'est alors les autres serveurs qui sont enregistrés par leur adresse IP !
NB: On utilise ici le protocole UDP, car c'est le seul disponible sur les switchs (probablement par soucis de légèreté).
Pour les bornes wifi
En raison de la limitation du firewall, les bornes wifi envoient leurs logs au routeur wifi gordon. Ceci se réalise en redémarrant syslogd sur les bornes via la commande:
killall syslogd; syslogd -R 138.231.148.1 -C16
Il serait envisageable, dans le futur, d'inclure cette configuration par défaut: en rajoutant les directives suivantes dans /etc/config/system (catégorie config)
option log_ip 138.231.148.1 option log_type file option log_file /dev/null
gordon doit de plus être configuré pour recevoir ces logs UDP:
$ModLoad imudp $UDPServerRun 514 $AllowedSender UDP, 127.0.0.1, 138.231.148.0/24
Ce dernier les transmet alors à ragnarok de la même manière que ses propres logs.