{{tag>Brouillon Log Syslog}} = 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 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 : * 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 ] Solution Remplacer ''$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/