Bonjour à tous,
J'ai farfouillé un peu partout sur le web sans trouver mes réponses, je viens donc poster une question sur LE forum qui va bien… :-)
Les serveurs concernés sont des RHEL5 64bits et RHEL6 64bits
Je cherche à configurer un serveur rsyslog afin de rediriger les logs applicatifs d'instances jboss-portal et jboss-as.
Je suis arrivé à configurer le serveur syslog sans trop de mal, il suffit de configurer le fichier /etc/rsyslog.conf
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
Côté clients, j'ai fait un test en redirigeant tous les logs vers le serveur syslog
*.* @syslogserver:514
C'est comme ça que je me suis rendu compte que tous les logs étaient enregistrés dans /var/log/messages
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
Les instances contiennent plusieurs applications java (ear) et a un fichier logback.xml permettant de rediriger les logs en local, c'est là que j'ai ajouté un "écouteur" ou appender pour rediriger le slogs sur le réseau
<appender name="SYSLOG-USER" class="ch.qos.logback.classic.net.SyslogAppender">
<syslogHost>syslogserver</syslogHost>
<facility>USER</facility>
<suffixPattern>[%thread] %logger %msg</suffixPattern>
</appender>
<root level="INFO">
<appender-ref ref="console" />
<appender-ref ref="SYSLOG-USER" />
</root>
Ca logue ! c'est cool !! mais… il y a toujours un mais :-)
- Comment faire pour rediriger les logs sur le serveur syslog des applications dans un fichier spécifique ? afin de ne pas polluer /var/log/messages
A mon sens et d'après mon interprétation des fichiers de conf il y a 3 approches
- Soit on log directement depuis l'écouteur
- Soit on log en local
- Soit on log en local et en plus en redirige les logs sur le serveur syslog
Prenons un exemple :
Côté client dans /etc/rsyslog.conf
Est-ce possible d'utiliser un "localX" pour rediriger mes logs sur le serveur ? local8 n'existe pas , est-ce possible de le créer ? Est-ce possible que mon écouteur écrive dans local8 et que le serveur syslog du client redirige les logs sur le serveur ? ce serait à mon sens la solution idéale. comment identifier côté serveur ce client et rediriger ses logs dans /var/log/network/client1/jboss_instance1/appli1.log
# Save boot messages also to boot.log
local7.* /var/log/boot.log
local8.* @serversyslog:514
Voilà le problème est posé… J'attends vos retour avec impatience …
A+
Mathieu
# plusieurs endroits en meme temps
Posté par NeoX . Évalué à 0. Dernière modification le 25 janvier 2013 à 09:39.
alors deja depuis tes serveurs tu peux dire de logger à plusieurs endroits.
ainsi tu trouves des lignes qui font doublons dans le fichier de config de syslog
on peut donc en deduire que tu dois pouvoir faire
apres il faut voir sur le serveursyslog, tu dois pouvoir trier ce que tu recois en fonction de l'emetteur
pour le mettre dans un fichier à part.
par exemple :
/var/log/serveurRHEL5_64.log
/var/log/serveurRHEL6_64.log
# Tri au niveau du serveur central rsyslog
Posté par Fabien . Évalué à 3.
Rsyslog est capable de trier les messages grâce aux facilities mais dispose d'autres critères.
Il peut trier sur le contenu du message, le syslogtag et d'autres choses encore.
Voici un exemple :
Je trie sur le critère du tag du message, j'envoie les messages qui matchent vers un fichier spécifique.
La deuxième ligne me permet ensuite d'ignorer les messages précédemment matchés afin qu'ils ne se retrouvent pas dans d'autres fichiers de logs (tel que mail.info … dans mon cas).
L'idée est donc de regarder les critères de tri proposés (bien que celui du syslogtag soit efficace) et de formater tes messages sur les clients en fonction de ce tri.
Tu peux par exemple ajouter un nom de machine aux syslogtags afin de séparer les logs d'une même application tournant sur plusieurs clients.
N'oublie pas de configurer logrotate pour tous ces nouveaux fichiers.
[^] # Re: Tri au niveau du serveur central rsyslog
Posté par popof . Évalué à -1.
Yeah c'est exactement ce que je cherches …
Pourrais tu me fournir des exemples précis de tes fichiers de conf ? Côté client et côté serveur ?
Merci bcp !
[^] # Re: Tri au niveau du serveur central rsyslog
Posté par NeoX . Évalué à 0.
exemple
man apache
car c'est dans la conf apache (par exemple)
que tu regles ce qu'il va envoyer dans les logs.
donc s'il envoie sa ligne de log habituel et que tu lui demande de rajouter "toto" au debut
man syslog
pour dire au receveur de filtrer ce qui contient "toto"
[^] # Re: Tri au niveau du serveur central rsyslog
Posté par Fabien . Évalué à 1.
Voir la doc du filtrage de rsyslog
L'exemple précédant fait parti de ma configuration rsyslog
il utilise les "Property-Based Filters"
Entraîne toi déjà sur le serveur central à maîtriser ce type de filtrage en utilisant les logs déjà présents sur le serveur ou en générant de faux logs avec la commande logger ( -t 'tag' pour configurer l'étiquette du message).
Dès que tes règles seront en place, il ne te reste plus qu'à envoyer les logs de tes serveurs clients (tu peux utiliser cette technique de filtrage pour ne relayer que certains logs) vers le serveur central.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.