Como você implementou o gerenciamento de logs em seus servidores?


13

Estou tentando descobrir como outras pessoas implementam seus sistemas de gerenciamento de logs.

Eu tenho 20 a 30 servidores Linux e algumas caixas do Windows (a maioria delas virtualizadas). Utilizamos muitos scripts Perl e Bash para realizar a maioria de nossos trabalhos automatizados e estou tentando padronizar o log deles.

Eu estive olhando log4perl e log4sh para o log de scripts e syslog-ng para obter todos os logs em um servidor de log centralizado. Também li sobre o splunk, apesar de parecer que a edição corporativa é muito cara e eu posso ultrapassar o limite de licenças gratuitas com todos os meus servidores.

Eu já vi outras ferramentas, como swatch e logcheck, mas não tenho certeza de como todas essas peças se encaixam ... Todas as recomendações serão muito bem-vindas!


Respostas:


8

Eu tenho cerca de 30 servidores e apenas uso o syslog direto para enviar todos os logs para um único servidor de log. Para backup, todas as máquinas também são configuradas para armazenar seus próprios logs localmente por alguns dias, usando logrotate para cuidar da rotação e exclusão de logs antigos.

Cada um dos meus servidores de aplicativos executa um pequeno script perl para enviar seus logs para o syslog, que depois encaminha para o host de log (script perl abaixo).

Em seguida, no host de log, temos alguns scripts personalizados semelhantes à verificação de log que basicamente observam os logs recebidos quanto a qualquer coisa suspeita.

Também temos todo o email de todos os hosts indo para um local, para que, se algum programa reclamar dessa maneira, recebamos todas as mensagens. Teoricamente, isso poderia ir para uma única caixa de correio na qual um programa poderia atuar e analisar.

Aqui está o meu script perl de log. Ele funciona direcionando a saída do programa para ele e, em seguida, syslogs a saída e cospe de volta para que você possa enviá-la para outro lugar (envio para multilog). Você também pode dar a opção -q para acessar o syslog.

#!/usr/bin/perl

use Sys::Syslog;
use Getopt::Long;

$SERVER_NAME = `hostname`;
chomp $SERVER_NAME;
$FACILITY = 'local0';
$PRIORITY = 'info';

GetOptions ('s=s' => \$SERVER_NAME, 'f=s' => \$FACILITY, 'p=s' => \$PRIORITY, 'q+' => \$quiet);

#print "$SERVER_NAME\n$FACILITY\n$PRIORITY\n";

#Sys::Syslog::setlogsock('unix');
openlog ($SERVER_NAME,'ndelay',$FACILITY);

if (!($quiet)) {syslog($PRIORITY,"Logging Started -- Logger version 1.1");}

$| = 1;

while (<>) {
    if (!($quiet)) {print $_ unless $_ =~ /^\s+$/};
    chomp;
    syslog($PRIORITY,$_) if $_;
}

closelog;

$| = 0;

O script é bastante útil, mas com o syslog nos clientes e o syslog-ng em um servidor (ou mesmo o syslog-ng nos clientes também), você pode obter essa funcionalidade com mais controle sobre a filtragem dos logs.
thepocketwade

@thepocketwade: Muito verdade. Eu nunca precisei da funcionalidade adicional.
jedberg

2

Embora ainda não o tenha implementado, estou planejando mover todas as minhas máquinas de geração de logs para o rsyslog e implementar um servidor do tipo bastião que funcionará como o coletor de syslogs. A partir daí, acho que a versão gratuita do Splunk pode fazer tudo o que preciso para extrair informações.

Agora apenas para implementá-lo ...


2

Eu uso um host syslog central. Cada sistema de borda envia * .debug ao host de log central. O host central do syslog executa o syslog-ng e possui regras para dividir os logs, para que cada máquina gere seus próprios arquivos nomeados para esse dia. Ele também despeja tudo em um único arquivo, no qual eu corro um descendente do logcheck.sh.

Uma vez por dia, eu executo um compactador de log, que fecha os logs com mais de 7 dias e exclui qualquer coisa com mais de 28 dias. Entre os dois, ele fornece aos logs uma vida esperada de 35 dias no servidor, o que significa que todos os logs devem fazer backups mensais, onde podem ser recuperados por até dois anos.

É um armazenamento intenso, mas parece ser a melhor maneira de garantir cobertura.


Eu tenho um sistema semelhante, mas meu servidor de log possui pastas predefinidas (email, auth, catchall) nas quais os logs são filtrados. Em um ponto, eu estava pensando em usar o splunk. Eu poderia encaminhar dados do servidor de log para o servidor splunk facilmente.
thepocketwade

1

Para o log centralizado, eu recomendo o LogZilla . Nós o usamos há mais de um ano e absolutamente amamos. A interface do usuário é extremamente fácil de aprender, o uso e a instalação levaram cerca de uma hora.

Mesmo se não o fizer, você realmente deve tentar fugir do monitoramento baseado em script, pois é exatamente isso que você obtém ... o monitoramento. O que você deve tentar alcançar é Gerenciamento. Reparar problemas nos principais interlocutores, etc. reduzirá bastante a quantidade de "incêndios" acionados pelo monitoramento por script. Aqui está um artigo muito bom sobre gerenciamento de syslog:

http://www.cisco.com/en/US/technologies/collateral/tk869/tk769/white_paper_c11-557812.html


0

Usamos um dispositivo da LogLogic para o registro corporativo. É baseado no syslog, portanto, todas as caixas * nix não têm problemas em usá-lo; existe um pequeno aplicativo que precisa ser instalado nos servidores Windows. Posso pesquisar o que eu quiser, incluindo consultas REGEX, e parece ser capaz de lidar com um pouco de carga (nossa configuração do Active Directory sozinha gera uma quantidade incomparável de tráfego).


1
Apenas tome cuidado ao avaliar seus produtos ... recebi cerca de 10 chamadas / e-mails deles, eles são MUITO persistentes.
Flamewires

Acho que isso pode ser dito para praticamente qualquer fornecedor hoje em dia e não tem influência na funcionalidade do produto real. Você não quer saber quantas vezes DELL, EMC, etc vêm bater / chamando por aqui ....
Tata

0

Para o servidor de registro centralizado, você pode dar uma olhada no meu projeto Octopussy .

É muito trabalho no começo, mas depois você pode fazer muitas coisas com esses logs!


0

Aqui está um tutorial que escrevi que aborda todos os aspectos do registro e análise centralizados.

Link: http://crunchtools.com/centralizing-log-files/


Também estou olhando o log4sh para um projeto que eu tenho internamente (eventualmente com código aberto, mas trabalhando agora), chamado scriptlog, essencialmente você o executa antes dos comandos de que se preocupa com a saída e faz algumas coisas mágicas, como adicionou um aviso string ou CRITICAL, também possui um plugin nagios para monitorá-lo. Vou postar quando eu tirá-lo fora
fatherlinux
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.