Como limite o tamanho do meu syslog?

13

Eu tenho o computador da minha mãe executando o Ubuntu 12.04 LTS. Ele está funcionando muito bem, mas todo o repentino syslog foi preenchido. E, preenchendo, quero dizer que acabei de excluir um /var/log/syslogtamanho de 400 GB. Sim - Gigabytes.

Embora eu tenha certeza de que havia alguma informação útil lá, não tenho certeza de que 400 GB seja qualquer tipo de informação a ser analisada. E o que é realmente incrível é que isso aconteceu dentro de um período de 8 horas - eu corria por dfvolta do meio-dia e, entre então e agora, a unidade dela preenchia 30% (de pouco menos de 70% a 100%).

O que poderia estar causando isso e como eu poderia corrigi-lo? `

EDIT Parece que o usb é o ofensor:

Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157829] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157836] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157842] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157849] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157857] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157863] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157870] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157877] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157884] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157891] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Wayne Werner
fonte
2
Eu diria que, em vez de limitar o tamanho, você deve tentar descobrir o que o preenche. Deve haver muitas mensagens repetidas, tente executar tail -n20 /var/log/syslogpara dar uma olhada nas últimas 20 linhas.
Mikewhatever
Eu tentei isso antes hosing o arquivo - nada parecia ser repetido, mas eu vou dar uma olhada novamente
Wayne Werner
Portanto, parece que o problema é "demond_nscan", sobre o qual não encontro nada no google. nscané um aplicativo de varredura de porta, então essa pode ser a modificação de alguém (mas estou teorizando). Se esse não é um aplicativo que você esteja tentando executar explicitamente, recomendo tentar encontrar o executável (algo como find / -iname demond_nscan) e renomeá-lo / alterar suas permissões para que não seja executável. (Dessa forma, se é realmente importante para alguma coisa, você não perdeu, e se ele foi lançado por outra coisa, você pode notar também, verificação. crontab -l?
Steve Kroon
1
O demond_nscan parece estar relacionado aos drivers de digitalização da lexmark.
Wayne Werner

Respostas:

12

Você deve descobrir o que está causando a grande quantidade de mensagens, como se você corrigisse esse problema e corrigisse o arquivo de log grande.

No entanto, até então, você pode colocar uma base de rotação de log em uma das opções abaixo.

  • hora (por exemplo, rodar todos os dias)
  • tamanho (por exemplo, gire quando o arquivo atingir 10mb)

Isso já estará configurado no sistema por padrão: /etc/logrotate.d/rsyslog

 /var/log/syslog
{
    rotate 7
    daily
    missingok
    notifempty
    delaycompress
    compress
    postrotate
            reload rsyslog >/dev/null 2>&1 || true
    endscript
 }

A partir disso, você pode ver que ele girará o arquivo / var / log / syslog diariamente e manterá 7 cópias do arquivo girado.

Você pode alterar isso para girar em um limite de tamanho, digamos 1mb ou reduzir quantas cópias ele armazena.

Aviso: Isso não corrigirá a causa raiz do seu problema , mas demorará algum tempo, pois impedirá o preenchimento do sistema de arquivos.

  • Fonte: /etc/logrotate.d/rsyslog
  • Fonte: man logrotate
dannyla
fonte
2
Isso não limitará o tamanho do syslog real!
Abu_bua 14/10/18
6

Limitar o tamanho do logrotate

Abra o /etc/logrotate.d/syslogarquivo de configuração

sudo nano /etc/logrotate.d/syslog

O arquivo parece sth. gostar

/var/log/syslog
{
    rotate 7
    daily
    missingok
    notifempty
    delaycompress
    compress
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate
    endscript
}
....
...

Adicione, por exemplo, size 100k entre parênteses. Depois deve parecer com:

/var/log/syslog
{
    rotate 7
    size 100k
    daily
    missingok
    notifempty
    delaycompress
    compress
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate
    endscript
}

Observe que isso limita o tamanho dos arquivos rotativos, e não o arquivo syslog real. Salve o arquivo. A próxima vez que o trabalho do cron de rotação de log for iniciado, limitará o tamanho dos logs rotacionados.

Limitar o tamanho do syslog atual

Para limitar o tamanho de /var/log/syslog, você deve editar o /etc/rsyslog.d/50-default.confe definir um tamanho de log fixo.

Adicione ou modifique essa configuração, alterando a seguinte linha em /etc/rsyslog.d/50-default.conf:

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

Aqui está um trecho do manual do rsyslog :

Canais de saídasão definidos através de uma diretiva $ outchannel. Sua sintaxe é a seguinte: $ outchannel name, file-name, max-size, action-on-max-name é o nome do canal de saída (não o arquivo), file-name é o nome do arquivo a ser gravado , max-size, o tamanho máximo permitido e o comando action-on-max-size a ser emitido quando o tamanho máximo for atingido. Este comando sempre tem exatamente um parâmetro. O binário é a parte da ação no tamanho máximo antes do primeiro espaço, seu parâmetro é tudo por trás desse espaço. Observe que o tamanho máximo é consultado antes de gravar a mensagem de log no arquivo. Portanto, certifique-se de definir esse limite razoavelmente baixo para que qualquer mensagem possa caber. Para a versão atual, é útil configurá-lo 1k abaixo do esperado. O tamanho máximo sempre deve ser especificado em bytes - não há símbolos especiais (como 1k, 1m, …) Neste ponto de desenvolvimento. Lembre-se de que $ outchannel apenas define um canal com "nome". Não o ativa. Para fazer isso, você deve usar uma linha seletora (veja abaixo). Essa linha do seletor inclui o nome do canal mais um sinal de $ na frente dele. Uma amostra pode ser:. : omfile: $ mychannel Em sua forma atual, os canais de saída fornecem principalmente a capacidade de limitar o tamanho de um arquivo de saída. Para fazer isso, especifique um tamanho máximo. Quando esse tamanho é atingido, o rsyslogd executa o comando action-on-max-size e reabre o arquivo e tenta novamente. O comando deve ser algo como um script de rotação de log ou algo semelhante.

Se não houver um comando action-on-max-size ou o comando não resolver a situação, o arquivo será fechado e nunca será reaberto pelo rsyslogd (exceto, é claro, pelo huping). Essa lógica foi integrada quando tivemos problemas graves com arquivos maiores que 2gb, o que poderia levar ao núcleo de dumping do rsyslogd. Nesses casos, é mais apropriado parar de gravar em um único arquivo. Enquanto isso, o rsyslogd foi corrigido para suportar arquivos maiores de 2 GB, mas obviamente apenas em sistemas de arquivos e versões de sistemas operacionais que o fazem. Portanto, ainda pode fazer sentido impor um limite de tamanho de arquivo de 2 GB.

Aqui o tamanho máximo é de 1 MB, coloque esta linha antes da *.*; ...linha

$outchannel mysyslog,/var/log/syslog,1048576

e mude a *.*; ...linha para

*.*;auth,authpriv.none  :omfile:$mysyslog

Reinicie o rsyslogd

sudo service rsyslog restart
abu_bua
fonte
0

Eu tive o mesmo problema com uma Lexmark Pro915 por duas semanas. Eu fiz duas coisas e agora funciona bem. Eu reinstalei o driver. (Não pense que isso foi o que ajudou.) Peguei a extensão USB que estava usando, que tornava o comprimento total quase 15 'de comprimento e que talvez não fosse totalmente compatível. Suspeito que o driver da Lexmark para sistemas Linux possa estar detectando um sinal ruim ou com tempo insuficiente e desejando informar sobre ele 10 bilhões de vezes por dia. Tente melhorar sua conexão de alguma forma.

Logrotate e soluções similares não me ajudaram. Kern.log e syslog juntos registravam mais de 1 TB por dia! A rotação do log pode ajudar se você puder configurá-lo para ser executado a cada doze minutos.

Dale F.
fonte