1 votes

Rsyslog n'envoie pas de messages en mémoire tampon

Mon exigence est de consigner tous les messages sur la machine distante. Pour atteindre cet objectif, j'ai deux versions identiques de rsyslog (rsyslogd 8.1901.0 (alias 2019.01)) sur les deux machines (serveur : 192.168.122.12 et client : 192.168.122.13).

En outre, si la machine distante est en panne, je dois mettre en mémoire tampon tous les messages afin de les envoyer plus tard, lorsqu'elle sera en ligne. Le problème est que cela a un comportement très étrange. Lorsque je ferme le serveur distant et que j'enregistre quelque chose, le message n'est jamais envoyé, même lorsque la machine distante est à nouveau en ligne. Parfois, lorsque j'enregistre à nouveau quelque chose, certains des anciens messages (mis en mémoire tampon) sont envoyés (jamais tous). Comme vous pouvez le constater, j'utilise une connexion TCP.

Ma configuration est la suivante :

Serveur : /etc/rsyslog.conf

module(load="imuxsock") # provides support for local system logging
module(load="imklog")   # provides kernel logging support
module(load="imtcp")
input(type="imtcp" port="514" ruleset="remote")
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$WorkDirectory /var/spool/rsyslog

$DebugLevel 2
$DebugFile /var/log/rsyslog-debug.log

template (name="DynFile" type="string" string="/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log")

template(name="CustomFileFormat" type="list") {
    property(name="timereported" dateFormat="rfc3339")
    constant(value=" ")
    property(name="hostname")
    constant(value=" ")
    property(name="syslogtag")
    property(name="msg" spifno1stsp="on" )
    property(name="msg" droplastlf="on" )
    constant(value="\n")
}

ruleset(name="remote") {
  action(type="omfile" dynaFile="DynFile" Template="CustomFileFormat")
  stop
}
$IncludeConfig /etc/rsyslog.d/*.conf
auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none          -/var/log/syslog
#cron.*                         /var/log/cron.log
daemon.*                        -/var/log/daemon.log
kern.*                          -/var/log/kern.log
lpr.*                           -/var/log/lpr.log
mail.*                          -/var/log/mail.log
user.*                          -/var/log/user.log
mail.info                       -/var/log/mail.info
mail.warn                       -/var/log/mail.warn
mail.err                        /var/log/mail.err
*.=debug;\
        auth,authpriv.none;\
        news.none;mail.none     -/var/log/debug
*.=info;*.=notice;*.=warn;\
        auth,authpriv.none;\
        cron,daemon.none;\
        mail,news.none          -/var/log/messages
*.emerg                         :omusrmsg:*

Client : /etc/rsyslog.conf

$LocalHostName my.test.machine.corp.es

module(load="imuxsock") # provides support for local system logging
module(load="imklog")   # provides kernel logging support
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$WorkDirectory /var/spool/rsyslog

$DebugLevel 2
$DebugFile /var/log/rsyslog-debug.log

*.* action(
        type="omfwd"
        target="192.168.122.12"
        port="514"
        protocol="tcp"
        queue.type="linkedlist"
        queue.size="10000"
        queue.filename="fwd_msgs"
        action.resumeRetryCount="-1"
        queue.saveOnShutdown="on"
        action.resumeinterval="30"
)

$IncludeConfig /etc/rsyslog.d/*.conf
auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none          -/var/log/syslog
#cron.*                         /var/log/cron.log
daemon.*                        -/var/log/daemon.log
kern.*                          -/var/log/kern.log
lpr.*                           -/var/log/lpr.log
mail.*                          -/var/log/mail.log
user.*                          -/var/log/user.log
mail.info                       -/var/log/mail.info
mail.warn                       -/var/log/mail.warn
mail.err                        /var/log/mail.err
*.=debug;\
        auth,authpriv.none;\
        news.none;mail.none     -/var/log/debug
*.=info;*.=notice;*.=warn;\
        auth,authpriv.none;\
        cron,daemon.none;\
        mail,news.none          -/var/log/messages
*.emerg                         :omusrmsg:*

0voto

Lesha The Leo Points 11

Vous pouvez essayer de mettre en place cette clause :

$ActionSendTCPRebindInterval nbr- [disponible depuis 4. l'action d'envoi TCP de fermer et de rouvrir la connexion à l'hôte distant. distant tous les nbr de messages envoyés. Zéro, la valeur par défaut, signifie qu'aucun traitement n'est effectué. Cette directive est utile pour une utilisation avec équilibreurs de charge. Notez qu'il y a une surcharge de performance de performances, il est donc conseillé de ne pas "relier" trop souvent la connexion (ce que signifie "trop souvent" dépend de votre niveau de confiance). configuration, une règle empirique est que cela ne devrait pas être beaucoup plus souvent qu'une fois par seconde).

Vous pouvez essayer quelque chose comme $ActionSendTCPRebindInterval 10000 . Gardez à l'esprit que cela entraîne une surcharge de performance supplémentaire si la réouverture de la connexion est trop fréquente.

PS. Vous pouvez lire ceci sur le documentation .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X