Aller au contenu

[Resolu] [Debian] syslog-ng


sunfun

Messages recommandés

bonsoir tout le monde,

j'ai installé un serveur debian 2.6.12-2-686 :yes:

je souhaite mettre en place une centralisation des logs via le demon syslog-ng :cartonrouge:

sur le serveur, j'ai réussi à centraliser les logs du serveur dans un autre fichier que le fichier habituel /var/log/syslog

par contre, ce que je souhaite faire, c'est de récupérer les logs des autres machines et d'en faire un traitement après sur le serveur de log (filtrer par service comme DNS, DHCP, etc.) :-D

voici la configuration actuelle du fichier /etc/syslog-ng/syslog-ng.conf :

# sources

# all known message sources
source s_all {
	# message generated by Syslog-NG
	internal();
	# standard Linux log source (this is the default place for the syslog()
	# function to send logs to)
	unix-stream("/dev/log");
	# messages from the kernel
	file("/proc/kmsg" log_prefix("kernel: "));
	# use the above line if you want to receive remote UDP logging messages
	# (this is equivalent to the "-r" syslogd flag)
	#udp();
};

source remote {
   udp(ip(0.0.0.0) port(514));
   };

######
# destinations

# some standard log files
destination d_syslog_file { file("/u0/log/$HOST/$HOST.$YEAR$MONTH$DAY-$HOUR.log" owner("root") group("root") perm(0644) create_dirs(yes) dir_perm(0755)); };


filter f_phoenix {host("phoenix") and facility(DAEMON); };

log { source(remote); filter(f_phoenix); destination(d_syslog_file); };

c'est un fichier minimal, je n'ai pas mis toutes les lignes pour ne pas surcharger le post

j'arrive à générer le fichier de log de mon propre serveur, mais je n'arrive pas à récupérer les logs des autres serveurs, notamment le serveur phoenix que je mentionne

sur le serveur phoenix, notamment dans le fichier /etc/syslog.conf, voici sa configuration :

*.*							 @aquarius

aquarius est le nom du serveur de centralisation de log

je ne vois pas du tout comment faire pour centraliser les logs

j'ai déjà redémarré les serveurs syslog-ng côté serveur et sysklogd côté client

avez-vous une idée ? :pastaper:

merci de votre aide :yes:

sunfun :yes:

Lien vers le commentaire
Partager sur d’autres sites

Ok pour ce qui est de syslog-ng il y a quelques incohérences...

Je te montre un de mes fichiers épuré :

Côté serveur :

### I) Options
options {
	chain_hostnames(off);
	sync(0);
	stats(43200);
	use_fqdn(no);
};
### II) Sources
source Cluster { tcp (ip ("10.0.0.7") port (514) ); };
### III) Destinations
destination mail_melody_1 { file("/var/log/melody_1/mail.log"); };
### IV) Filtres
filter f_mail_melody_1 { host("10.0.0.5"); };
### V) Les logs
log { source(Cluster); filter(f_mail_melody_1); destination(mail_melody_1); };

en gros je procède comme cela avec syslog-ng, en gros dis toi que tu as 5 étapes pour arriver à tes fins, enfin c'est une rigueur que je m'impose :)

Maintenant côté client :

### I) Options
options {
	chain_hostnames(off);
	sync(0);
	stats(43200);
};
### II) Sources
source src {
	unix-stream("/dev/log");
	internal();
	pipe("/proc/kmsg");
};
### III) Destinations
destination mail { tcp (ip ("10.0.0.7") port (514) ); };
### IV) Filtres
filter f_mail { facility(mail) and not match (imapd); };
### V) Les logs
log { source(src); filter(f_mail); destination(mail); };

Sinon, tu as pas mal de ressources sur le net...

En ce qui concerne la suppression des logs après une durée, il faut voir du côté de rotatelog...

En gros, met daily dans ton fichier de conf et rotate 6

toto.log {
	daily
	missingok
	rotate 6
}

Comme toujours, tu as une multitude de ressources sur le web :)

voili

Lien vers le commentaire
Partager sur d’autres sites

bonjour rafailow,

tout d'abord, merci d'avoir répondu :francais:

ensuite, pour syslog-ng, je ne vois pas trop de quelles incohérences tu parles

pourrais-tu être plus précis ?

en effet, si c'est par rapport aux options, je n'utilise pas tout

ensuite, j'utilise une option use_dns(yes) pour bénéficier de la résolution DNS, c'est pour ça que je n'indique pas d'adresse IP dans mon fichier /etc/syslog-ng/syslog-ng.conf

ensuite, je vois que tu filtres directement par service en filtrant sur mail.log

c'est très intéressant je prends note :transpi:

merci encore :yes:

sunfun :-D

Lien vers le commentaire
Partager sur d’autres sites

Oui autant pour moi, j'ai lu très vite et en diagonal ton post et quand j'ai vu un 0.0.0.0, j'y ai vu une incohérence..

désolé :ouioui:

Sinon tu as réussi à régler le problème avec syslog-ng? et ton rotatelog?

Sinon pour l'exemple cité, ca correspond aux logs mail d'un node d'un cluster mail... :francais:

Lien vers le commentaire
Partager sur d’autres sites

bonsoir rafailow,

il n'y a pas de mal :transpi:

alors pour syslog-ng, le problème est résolu

mais comme il manque encore des petits détails, comme l'épuration des logs tous les 6 jours que je n'arrive pas à faire

je n'utilise pas logrotate, d'ailleurs comment ça marche concrètement ? :cbon:

merci de ton aide :fumer:

sunfun :roll:

Lien vers le commentaire
Partager sur d’autres sites

Pour logrotate le fonctionnement est très simple, par exemple:

crée un fichier dans /etc/logrotate.d/exemple

/var/log/exemple.log {
	daily
	missingok
	rotate 7
	compress
	notifempty
}

Avec ca, tu fais un rotation des logs tous les jours, tu gardes cette rotation sur une durée de 7 jours, en prime il te compresse tes logs...

Je te donne un exemple concret d'une rotation de logs qui tourne pour apache2 sur une machine en prod :

/var/log/apache2/*.log {
	weekly
	missingok
	rotate 52
	compress
	sharedscripts
	notifempty
	create 640 root adm
	prerotate
			/usr/lib/cgi-bin/awstats_updateall.pl -awstatsprog="/usr/lib/cgi-bin/awstats.pl" now
	endscript
	postrotate
			if [ -f /var/run/apache2.pid ]; then
					/etc/init.d/apache2 restart > /dev/null
			fi
			rename "s/\.1.gz$/.`date -I`.gz/" /var/log/apache2/*.1.gz
			mv /var/log/apache2/*.gz /var/archived_logs/apache2/
	endscript
}

Là je fais une rotation chaque semaine, je garde les rotations sur une durée de 52 semaines (tu remarqueras que cela est rendu inutile parce que je deplace les logs dans un autre répertoire...) ils sont compressés, j'execute le script awstats avant la rotation et j'execute un renommage des fichiers de logs pour passer de toto.log.1.gz à toto.2006-12-10.gz, ça me permet de m'y retrouver plus facilement et un déplacement des logs après rotation.

Je pense que l'exemple sera plus parlant que de longs discours...

Bonne chance :)

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

bonsoir rafailow,

merci beaucoup de tes conseils, j'en prends note :roll:

toutefois, j'ai autre chose à te proposer que logrotate :francais:

il faut ajouter cette ligne dans la crontab de root

0 0 * * *	   /usr/bin/find /u0/log -mtime +5  -exec rm {} \;

cela signifie que chaque nuit à 00h00, il va regarder dans /u0/log (ou le répertoire dans lequel tu stockes les logs, par défaut, il me semble que c'est /var/log) et faire un check par rapport à la date, et si les logs datent de plus de 5 jours, c'est supprimé :smack:

merci encore de ton aide précieuse :oops:

je mets ce sujet en résolu

:D

sunfun ;)

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...