Nossos sistemas Linux executam o utilitário logwatch (8) por padrão. Em um sistema RedHat / CentOS / SL, o Logwatch é chamado pelo /etc/cron.daily/
cronjob, que envia um email diário com os resultados. Esses e-mails têm um assunto como:
Subject: Logwatch for $HOSTNAME
O problema é que, por padrão, esses e-mails diários são muito barulhentos e contêm muitas informações supérfluas (erros HTTP, uso diário de disco, etc.) que já são monitoradas por outros serviços (Nagios, Cacti, syslog central, etc.). Para 100 sistemas, o carregamento do email é insuportável. As pessoas ignoram os e-mails, o que significa que podemos perder problemas detectados pelo logwatch.
Como posso reduzir a quantidade de ruído gerado pelo logwatch, mas ainda usar o logwatch para nos notificar sobre problemas significativos?
Vou postar minha própria resposta abaixo, mas gostaria de ver o que os outros fizeram.
Nota : Eu tenho uma pergunta semelhante em relação ao FreeBSD, no FreeBSD: o periódico (8) é muito barulhento. Como posso controlar o nível de ruído?
fonte
Sim - o logwatch geralmente é muito barulhento. Você já mencionou desabilitar as verificações completamente.
Se você não quiser fazer isso, evite que certos eventos apareçam. Por exemplo - não é interessante se o nagios se conectar via ssh a um sistema DMZ. Mas é interessante se houver outros logins via ssh.
Usamos o rsyslog em vez do ksyslogd (primeiro instale o rsyslog e remova o ksyslogd). Com o rsyslog, você pode ajustar o que vai para os logs e o que não (por exemplo, criar uma expressão que elimine mensagens dos "nagios conectados" contendo sshd). Dessa forma, o logwatch relatará apenas informações úteis.
Outro caso pode ser o xinetd - não quero ser informado sobre conexões bem-sucedidas - isso pode ser configurado no xinetd itselv - sem desativar a verificação do loginet para o xinetd.
fonte
Como ponto de interesse, segui a opção 2 da resposta de Stefan Lasiewski, mas, para meus propósitos, queria incluir apenas linhas específicas em vez de excluir todo o ruído que não queria.
Eu estava configurando o vsftpd, então criei
/etc/logwatch/conf/services/vsftpd.conf
e, em vez de usar algo como o*Remove = testuser
que remove linhas que incluem o textotestuser
, usei a linha*OnlyContains = "testuser"
que retorna apenas linhas, incluindo esse texto.Esses 2 scripts funcionam basicamente usando
grep
egrep -v
.A diferença é que você pode usar
*Remove
quantas vezes quiser, mas com*OnlyContains
você precisará usá-lo uma vez se quiser algo ou algo mais ou algo mais. Então, para vários valores que você faz*OnlyContains = "testuser|testuser2|testuser3"
fonte
Você já pensou em canalizar as mensagens de status de e-mail para um servidor de lista, talvez um que possa fornecer resumos com base em atributos programáveis de tamanho e / ou duração / idade? A abordagem não reduz a quantidade de logs enviados por email, mas pode controlar a quantidade de emails individuais em lote para reduzir a frequência de email.
fonte
Recentemente, eu precisava acalmar a saída do serviço sshd. Algumas das seções eram bastante longas e não podiam ser controladas definindo o nível de detalhe.
Não é uma solução ideal, mas acabei substituindo o script sshd copiando-o daqui:
/usr/share/logwatch/scripts/services/sshd
para aqui:/etc/logwatch/scripts/services/sshd
Obviamente, agora você precisa manter as atualizações nesse arquivo de script, mas ele fornece um controle muito bom sobre o que é produzido. Como alternativa, suponho que você possa canalizar a saída
logwatch
através de uma ferramenta comoawk
oused
remover o que não deseja, mas isso me pareceu mais difícil.fonte
Eu tinha a mesma pergunta no UNIX e Linux Stackexchange e aqui está a resposta que eu o corrigi:
Você pode dizer ao logwatch para olhar 7 dias em vez de 1 dia, alterando o parâmetro Range no seu
logwatch.conf
:Você pode dizer
logwatch
para executar semanalmente, em vez de diariamente, movendo-o do diretório cron semanal para ocron
diretório diário :Obrigado a @JeffSchaller
fonte