Table des matières
Notes Rsyslog
Voir :
Voir aussi :
- Syslog-ng
- NXLog
- Snare
- Graylog2
Généralités
Voir :
Exemple de fichier de conf :
Vérifier la syntax du fichier de conf
rsyslogd -N1
Supprimer certaines classes de messages
*.=debug stop *.=info stop *.=notice stop #*.=warn stop #*.=err stop
Supprimer des messages voir https://linux.die.net/man/5/rsyslog.conf
# discards everything #*.* ~ *.* stop
/etc/rsyslog.conf
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat $SystemLogRateLimitInterval 0 $SystemLogRateLimitBurst 0
/etc/default/rsyslog
# Options for rsyslogd # -x disables DNS lookups for remote messages # See rsyslogd(8) for more details #RSYSLOGD_OPTIONS="" RSYSLOGD_OPTIONS="-x"
Conf client / serveur
Voir : https://www.linuxtricks.fr/wiki/rsyslog-centralisation-des-logs-sous-linux
Il est possible d'utiliser UDP, TCP, TLS, RELP https://gist.github.com/drmalex07/bb178d61f800488446d22de4301160f1
Conf serveur
apt-get install rsyslog rsyslog-relp
/etc/default/rsyslog
module(load="imtcp") #input(type="imptcp" port="1514" address="127.0.0.1") input(type="imtcp" port="1514")
iptables -A INPUT -i ens2 -s 51.91.254.172 -p tcp --dport 1514 -j ACCEPT iptables -A INPUT -i ens2 -p tcp --dport 1514 -j REJECT
Voir $AllowedSender
system restart rsyslog
Par défaut les logs arriverons ici : /var/log/syslog
Pour changer le fichier de destination
/etc/rsyslog.d/45-rsyslog-server.conf
$template syslog,"/var/log/clients/%fromhost%/syslog.log" *.* ?syslog # Plus de log dans /var/log/syslog ni ailleurs & stop
Conf client
/etc/rsyslog.d/20-pushlog.conf
$ActionQueueType LinkedList # Exécuter le traitement de façon asynchrone. $ActionQueueFileName srvrfwd1 # Préfixe de nom unique pour les fichiers spool. Active également le mode disque. $ActionQueueMaxDiskSpace 1g # Limite d'espace de 1 Go. $ActionQueueSaveOnShutdown on # Enregistrer les données sur le disque si Rsyslog est arrêté. $ActionResumeRetryCount -1 # Tentatives infinies en cas d'échec de connexion avec l'hôte. # jouter les lignes suivantes dans la section RULES : # Envoyer tous les messages sur le serveur de journalisation distant avec la commande suivante : # Les @@ doivent figurer dans la ligne de commande, le fait qu'il y en ai deux indique que les échanges se feront en TCP. *.* @@192.168.1.10:1514
Test
logger -s "TEST plop"
Les filtres
Voir :
3 types de filtres :
- Facility/Priority-based filters
- Property-based filters
- Expression-based filters
Facility/Priority-based filters
Property-based filters
:msg, contains, "123: Message for bucket 123" -/var/log/myapp/123.log
/etc/rsyslog.d/20-ufw.conf
# Log kernel generated UFW log messages to file :msg,contains,"[UFW " /var/log/ufw.log # Uncomment the following to stop logging anything that matches the last rule. # Doing this will stop logging kernel generated UFW log messages to the file # normally containing kern.* messages (eg, /var/log/kern.log) #& stop
Expression-based filters
Conf input
Voir
Old
Serveur rsyslog distant
Voir http://www.it-connect.fr/centralisez-vos-logs-avec-rsyslog/
Voir aussi :
- journald
- imjournal
apt-get install rsyslog
ou
yum install rsyslog
netstat -taupen |grep 514
Aucun processus n'écoute sur le port UDP 514.
Utilisation du port UDP 514. Il suffit de dé-commenter ces lignes :
/etc/rsyslog.conf
# UDP $ModLoad imudp $UDPServerRun 514 # TCP #$ModLoad imtcp #$InputTCPServerRun 514
systemctl restart rsyslog netstat -taupen |grep 514
udp 0 0 0.0.0.0:514 0.0.0.0:* 0 199126 5041/rsyslogd udp6 0 0 :::514 :::* 0 199127 5041/rsyslogd
Sur les clients, à la fin du fichier de conf, nous précisons où envoyer les logs
/etc/rsyslog.conf
# UDP *.* @IP_Adress_ou_FQDN:514 # TCP #*.* @@IP_Adress_ou_FQDN:514
Après le bloc « RULES » dans le fichier de configuration du serveur :
$template syslog,"/var/log/clients/%fromhost%/syslog.log"
On va ensuite appliquer ce template à tous les logs entrants :
*.* ?syslog
Règle iptables
iptables -A INPUT -m state --state NEW -m udp -p udp --dport 514 -j ACCEPT
Autres
/etc/rsyslog.d/listen.conf
$SystemLogSocketName /run/systemd/journal/syslog
/etc/rsyslog.conf
#$OmitLocalLogging on $OmitLocalLogging off
systemctl restart rsyslog systemctl restart systemd-journald
Voir /etc/systemd/journald.conf
A tester
/etc/rsyslog.conf
if $msg contains 'pcieport' then /dev/null & stop
if $msg contains 'pcieport' then {
action(type="omfile" file="/dev/null")
}
Exemple
$SystemLogRateLimitInterval 5 $SystemLogRateLimitBurst 1200 # In order to gain read access to logs, make user 'utilisateur' member of group adm $Template PreciseFormat,"%timegenerated:1:23:date-rfc3339% %HOSTNAME% %syslogpriority-text% %syslogtag%%msg:::drop-last-lf%\n" # Decomment to apply PreciseFormat template to every log # $ActionFileDefaultTemplate PreciseFormat # Base for system with Coding Control local3.* /var/log/mylog1.log;PreciseFormat local3.notice /var/log/mylog2.log;PreciseFormat # Finally discard local messages so they are not going to be written in other log files local0.*,local1.*,local2.*,local3.*,local4.*,local5.*,local6.*,local7.* stop
logger -p local0.notice -t MYTAG "my message"
Infos utiles
Valider la configuration
rsyslogd -N1
Docker et Rsyslog
docker-compose logging: driver: syslog options: tag: "BigDataSolyDBTmp" syslog-facility: "local5"
rsyslog
$Template CustomFormat,"%timegenerated:1:23:date-rfc3339% %HOSTNAME% %syslogpriority-text% %syslogtag%%msg:::drop-last-lf%\n" $ActionFileDefaultTemplate CustomFormat $IMUXSockRateLimitBurst 2000 $template syslogDocker, "/var/log/plop/%APP-NAME:::secpath-replace%.log" $umask 0002 local5.* ?syslogDocker local5.* stop
Pb
Erreur : SystemLogRateLimitBurst is currently not permitted
journalctl -p warning -u rsyslog
command 'SystemLogRateLimitBurst' is currently not permitted - did you already set it via a RainerScript command (v6+ config)? [v8.24.0 try http://www.rsyslog.com/e/2222 ]
Solution Remplacer $SystemLogRateLimitBurst 2000 par $IMUXSockRateLimitBurst 2000
/etc/rsyslog.d/plop.conf
#$SystemLogRateLimitBurst 2000 $IMUXSockRateLimitBurst 2000
Et redémarrer le service rsyslog
