Monitoramento de syslog-ng Server (Linux) com Zabbix

Da mesma forma que visto no Post sobre Monitoramento de Pools DHCP em servidores Linux, é comum que certas vezes esbarremos em necessidades que a ferramenta não oferece monitoramento de forma Nativa. Mas, como estamos falando do Zabbix, isto é só uma questão de vontade e pequenas adaptações. 😀

Primeiro: O que é Syslog?

O crescimento das redes de computadores (como se diz em todas as introduções de Monografias de T.I) se dá devido à adição de mais e mais componentes de Hardware. Estes componentes estão vindo cada vez mais inteligentes, inclusive gerando informações sobre seu estado (impressoras=tonner acabando, quantidade de páginas impressas, interrupções na impressão/papel preso. Switch=acesso às configurações, comandos executados em seu terminal, alteração no estado das portas e etc).

Estas informações geralmente ficam no equipamento em um armazenamento pequeno e temporário (geralmente entre 10 e 50 MegaBytes). Devido a essa baixa capacidade de armazenamento, os registros gerados são descartados em pouco tempo, fazendo com que dados históricos sejam perdidos, junto com a capacidade de acompanhar ou entender certos problemas.

Os sistemas operacionais (proprietários ou livres) também armazenam este tipo de informação em seus sistemas de arquivos. O Linux (em suas várias Distros), geralmente os coloca em /var/log.

Estes equipamentos e sistemas vão se multiplicando (junto com os problemas e famosos ‘causos do além’). Então, como recolher estas informações de maneira centralizada e persistente? Resposta: Servidor Syslog remoto.

Existem alguns servidores Syslog com esta finalidade. Este tutorial se foca no Syslog-NG.

Syslog-NG

O que é?

Servidor Syslog remoto com suporte ao padrão descrito na RFC 5424 que carrega o padrão Syslog de trabalhar os registros, sendo interoperável entre dispositivos e diferentes Sistemas. No servidor que o Hospeda, utiliza as Portas 514 (tanto TCP quanto UDP), gravando os arquivos no diretório configurado no arquivo /etc/syslog-ng/syslog-ng.conf (diretivas destination).

Considerações

  • Este tutorial não pretende cobrir a instalação ou manutenção do Syslog-NG, mas sim oferecer aos Administradores, uma ideia de como monitora-los com o auxílio do Zabbix;
  • Não são dadas garantias de funcionamento ou exata adaptação ao(s) cenário(s) do Leitor. São passos executados em uma instalação ‘do mundo real’, que funcionaram nas configurações descritas ao longo do Tutorial;
  • Sempre faça Backups dos arquivos de configuração, mesmo que em pequenas.

Cenário

  • Servidor Zabbix na versão 2.2.0;
  • Servidor a ser monitorado: Ubuntu 12.04.3 LTS com o Agente Zabbix versão 2.0.9 (a ser atualizado);
    • Os arquivos de configuração do zabbix_agentd estão em /etc/zabbix;
  • Aplicação alvo do monitoramento: Syslog-NG Versão 3.3.4 (apt-get install syslog-ng);
    • O servidor Syslog-NG recebe registros de Switchs, routers e diversos Servidores Linux;
    • Foi criada uma partição com um arranjo de discos utilizando LVM, totalizando 400GB montada em /data
    • Para cada host, o servidor Syslog cria automaticamente um conjunto de diretórios no padrão /data/log/$host/$ano/$mes/$dia/$arquivos_de_log
  • O usuário que roda o zabbix_agent tem que ter um shell válido (/bin/bash neste caso).

O que é importante monitorar em um Servidor deste tipo?

Bem, na verdade seus requisitos podem ser diferentes dos meus. Estes foram os mais importantes pra mim:

  1. portas UDP/TCP 514 e informações de um Template Linux padrão: memória, rede, discos, processos e etc (que não serão abordadas aqui);
  2. partição ou ponto de montagem do armazenamento de Logs;
  3. quantidade de hosts que estão utilizando o servidor para Logs;
  4. lista de hosts que estão utilizando o servidor para Logs;
  5. consumo de disco por host.

Passo a passo para o monitoramento

O monitoramento de dados “não padrão” geralmente é feito via UserParameter. Aqui, para o Syslog, utilizaremos essa técnica novamente.

Primeiro: configurar o sudoers, adicionando as seguinte linhas no fim do arquivo:

zabbix ALL=NOPASSWD:/bin/ls
zabbix ALL=NOPASSWD:/usr/bin/du

Elas “liberam” o usuário zabbix a executar os comandos ls e du como super-usuário, sem precisar informa a senha.

Segundo: editar o arquivo de configuração do Zabbix Agentd (zabbix_agentd.conf), adicionando (ou alterando/descomentando) a seguinte linha:

Include=/etc/zabbix/zabbix_agentd.d/

Isto fará com que o agente Zabbix considere o diretório zabbix_agentd.d como possível fonte de configuração adicional, lendo-o a cada inicialização.

Terceiro: criar um arquivo userparameter_SysLog.conf no diretório /etc/zabbix/zabbix_agentd.d com o seguinte conteúdo:

UserParameter=logged.hosts.list,sudo ls /data/log|sed 's/\t/\n/g'
UserParameter=logged.hosts.count,sudo ls /data/log|wc -w
UserParameter=logged.hosts.space.total,sudo du -s /data/log|sed 's/\t/;/g'|cut -d ";" -f1
UserParameter=logged.hosts.space.host[*],sudo du -s /data/log/$1|sed 's/\t/;/g'|cut -d ";" -f1

Quarto: reiniciar o processo Zabbix_agentd.

OBS: caso o processo não suba, verifique os arquivos de configuração alterados e veja se alguma linha está incorreta inclusive com o arquivo dos “UserParameter”.

Explicando os parâmetros criados

  • logged.hosts.list: traz a lista dos hosts (separados por “new lines”) que estão utilizando este servidor de syslog;
  • logged.hosts.count: quantidade (em número inteiro) de hosts utilizando estes servidor;
  • logged.hosts.space.total: total de dados em uso, do diretório principal na partição utilizada para guardar os logs;
  • logged.hosts.space.host[*]: espaço total ocupado por cada host que utiliza este servidor Syslog;
    • o parâmetro esperado neste item ( [*] ), é o nome/ip do host que se deseja saber o quando ocupa de espaço no Servidor Syslog.

Para o último item, cabe uma ressalva: quando um host ou ativo de rede é apontado para este servidor Syslog, é criada uma pequena árvore (como comentado à cima, em Cenário). Esta árvore tem como Base o Nome ou IP do host:

  • Nome: caso o Servidor Syslog consiga recuperar no servidor DNS, o registro PTR (ponteiro) para o IP que acaba de chegar;
  • IP: Caso o item anterior não funcione.

Criando os itens

Lista de hosts logados:

Item lista de hosts

Item resultante (Lastest data):

Lastest Data - lista hosts

Contador de hosts Logados:

Item qtd de hosts_

Resultado:

Resultado qtd de hosts

Espaço total utilizado pelos hosts:

Item espaço total

Resultado:

Item espaço total - Resultado

Espaço utilizado por um host específico:

Item Espaço do host

Resultado:

Item Espaço do host - Resultado

Implementando a auto-busca para novos hosts adicionados

O servidor Syslog-NG irá receber vários novos hosts ao longo de seu funcionamento na rede. Configura um novo item (logged.hosts.space.host[]) para cada host certamente não é nada prático.

Para resolver isto, iremos utilizar o LLD (Low Level Discovery).

Em resumo, ele fará uma busca, de tempos em tempos, para verificar se existem novos hosts utilizando o servidor Syslog e caso existam, criará automaticamente um item logged.hosts.space.host para cada um deles.

Aviso: O LLD apesar de super útil, pode não ser compreendido no primeiro momento. Para compreender dê uma olhada aquiaqui.

Utilizando LLD para verificar espaço em novos hosts

A continuação deste tutorial vem em breve.

Abraço a todos e feliz ano novo!

Anúncios

2 comentários sobre “Monitoramento de syslog-ng Server (Linux) com Zabbix

  1. oi werneck, boa tarde!
    eu li a sua apresentacao sobre envio de email pelo zabbix e queria saber se voce disponibiliza os scripts de gtalk autenticado e email autenticado e os demais descritos na apresentacao para que eu possa testar…
    obrigado,
    mario
    marques_m@yahoo.com

Se desejar, comente!

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s