Notes Rsyslog

Voir :

https://access.redhat.com/documentation/fr-fr/red_hat_enterprise_linux/7/html/system_administrators_guide/s1-basic_configuration_of_rsyslog

https://access.redhat.com/documentation/fr-fr/red_hat_enterprise_linux/7/html/system_administrators_guide/s1-configuring_rsyslog_on_a_logging_server

https://wiki.debian.org/fr/Rsyslog

https://wiki.archlinux.org/index.php/Rsyslog

https://www.loggly.com/use-cases/rsyslog-manual-configuration-and-troubleshooting/

https://selivan.github.io/2017/02/07/rsyslog-log-forward-save-filename-handle-multi-line-failover.html

Voir aussi :

Syslog-ng

NXLog

Snare

Graylog2

Généralités

Voir :

https://fr.wikipedia.org/wiki/Syslog

https://docs.fedoraproject.org/en-US/Fedora/23/html/System_Administrators_Guide/s1-basic_configuration_of_rsyslog.html

https://www.the-art-of-web.com/system/rsyslog-config/

Exemple de fichier de conf :

https://github.com/openstack/swift/blob/master/etc/swift-rsyslog.conf-sample

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 messagesvoir 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 :

https://docs.fedoraproject.org/en-US/Fedora/23/html/System_Administrators_Guide/s1-basic_configuration_of_rsyslog.html

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

https://www.rsyslog.com/using-the-text-file-input-module/

https://rsyslog-doc.readthedocs.io/en/latest/configuration/modules/imfile.html

https://stackoverflow.com/questions/31426373/rsyslogs-new-configuration-format-for-input-files

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 ]

SolutionRemplacer $SystemLogRateLimitBurst 2000 par $IMUXSockRateLimitBurst 2000

/etc/rsyslog.d/plop.conf

#$SystemLogRateLimitBurst 2000
$IMUXSockRateLimitBurst 2000

Et redémarrer le service rsyslog

Voir : http://www.celtha.es/blog/notas-sobre-rsyslog/