rsyslog trunca a mensagem também com $ MaxMessageSize

1

Eu tenho um contêiner alpino oficial com o rsyslog instalado, meu /etc/rsyslog.conf é:

$MaxMessageSize 64k
$ModLoad imuxsock # provides support for local system logging
$ModLoad imklog   # provides kernel logging support
$KLogPermitNonKernelFacility on
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022

*.*;auth,authpriv.none          -/var/log/syslog

Eu executo rsyslog com rsyslogd -f /etc/rsyslog.conf , parece que $MaxMessageSize é 1k em vez de 64k Onde estou errado?

UPDATE

Eu tenho tente dentro do contêiner do ubuntu e funciona perfeitamente, parece que o alpine é o problema, no ubuntu o rsyslog é a versão 7.4.4, no alpine 8.18.0

UPDATE 2

Eu também tentei com o syslog-ng e tenho o mesmo resultado, tamanho máximo 1k, talvez seja um limite de contêineres docker alpino?

    
por hellb0y77 28.08.2017 / 15:10

1 resposta

1

Eu tropecei no mesmo problema ontem e depois de algumas escavações, encontrei o motivo.

Vou resumir: o libc lib usado no alpine é o musl libc ( link ). Se você verificar a implementação da função syslog ( link ), você pode ver que o comprimento da variável buf que representa a mensagem é codificado para 1024.

Uma solução é conectar e enviar a mensagem (implementando o syslog RFC) ao soquete /dev/log . Isso funciona bem.

Outra possibilidade seria usar glibc na biblioteca alpina, mas não sei se é realmente possível.

    
por 26.09.2018 / 18:22