terça-feira, 4 de março de 2014

The Dude para monitoramento de serviços e servidores



Fala Pessoal,

Depois de um tempo sem postar nada! (correria) hoje vou compartilhar com vocês como configurar o The Dude. Acredito que muitos que estão lendo esse artigo já tiveram algum tipo de contato com essa ferramenta e já a conhecem. 

Mas para aqueles que nunca ouviram falar, basicamente o The Dude é uma ferramenta FREE que permite monitorar seu ambiente de rede incluindo servidores, switchs, roteadores e muitos mais.

Uma vez instalado, o Dude permite realizar um scan em sua rede para encontrar todos os dispositivos ao alcance de uma sub-rede especifica. Outras informações mais detalhadas, como informações sobre o disco, CPU, memória são capturadas através do Protocolo SNMP

A ideia desse artigo, é demonstrar possíveis customizações no Dude afim de tornar sua interface um tanto mais amigável, já vez que a interface nativa não traz muitas informações.

Bem...vamos colocar a mão na massa!

Faça o download da versão 4 do The Dude através no link http://www.mikrotik.com/thedude



Apesar da versão 4 ainda constar como beta, até hoje, não tive nenhum problema com ambiente monitorado com essa versão. A vantagem da versão 4, é que nela encontramos a opção de idioma Português.

Instalando o The Dude (Executar, next...next...finish!!!)

Depois de instalado, ao executar o Dude pela primeira vez, devemos escolher o idioma, em nosso exemplo estou trabalhando com Brazilian-portuguese.


Vamos cancelar a parte de descoberta pois vamos inserir os dispositivos manualmente.


Instalando o Dude como serviço

Habilite a aplicação para iniciar como serviço. Depois de configurado, dentro dos serviços do windows irá aparecer como The Dude Server.


Adicionando um novo dispositivo

No canto superior esquerdo do mapa local clique no sinal de +, em seguida clique em Dispositivo.



Insira o IP ou Hostname do Dispositivo e clique em avançar.



Aqui devemos adicionar os serviços a serem monitorados, clique no sinal de +



Adicione nesse primeiro momento apenas o testador Ping e clique em OK.



Dispositivo cadastrado.



Clique 2 vezes sobre o dispositivo para entrar nas propriedades do mesmo. Altere o campo nome de IP para o nome do seu servidor ou serviço.



Dispositivo depois do nome alterado. 


Mudando o Plano de Fundo do Mapa

O plano de fundo padrão do Dude é o Grid. Para alterar esse plano de fundo copie a imagem que deseja para o caminho C:\Program Files\Dude\data\files\images. Em clique em configurações > Guia Plano de Fundo e selecione a nova imagem de fundo


Para quem quiser, no link abaixo você poderá baixar o arquivo exemplo para plano de fundo

Mudando a cara do dispositivo

Agora vamos mudar a cara do dispositivo cadastrado, em nosso exemplo primeiramente vamos inserir um ícone qualquer que represente nosso servidor ou serviço e em seguida vamos inserir informações na etiqueta do dispositivo como consumo atual de CPU, Memória, Disco, informações detalhadas de partições de disco e hora de última atualização do display.

Atribuindo uma imagem ao dispositivo

As imagens disponíveis pelo Dude por padrão são bem toscas! Por isso  podemos baixar algo melhor da internet e associar ao dispositivo. Você pode jogar na internet algo do tipo Server Icons e salva-las dentro do diretório C:\Program Files\Dude\data\files\images

Já com a imagem dentro do diretório, clique com o botão direito sobre o dispositivo e selecione aparência.


Selecione a guia imagem e siga a ordem da imagem abaixo para atribuir uma nova imagem ao dispositivo.
Com o item 3 (Escala) você poderá ajustar o tamanho da imagem depois de adicionada.


Exibindo consumo atual de CPU, Memória e Processador

Como dito no início desse artigo, a captura de informações mais detalhadas de hardware e até mesmo de sistema ocorrem através do protocolo SNMP. Portanto para isso, devemos instalar e configurar no(s) dispositivo(s) que queremos monitorar a opção de serviço SNMP. 

Em Features do Windows, adicione a opção SNMP Server



Após instalação do serviço SNMP, vá nos serviços do Windows e procure pelo SNMP Service.
Abra a guia security e adicione uma nova comunidade SNMP chamada DUDE somente como READ ONLY

Isso permitirá a máquina onde está instalado o Dude à conectar nesse servidor e coletar dados do hardware\sistema.

Ainda nas propriedades do SNMP, é possível permitir conexão SNMP somente de um ou mais dispositivos específicos ou de qualquer dispositivo da rede.


Configurando SNMP no Dude

Clicar 2 vezes sobre o dispositivo e seguir as etapas da imagem abaixo para incluir um novo perfil SNMP:



Selecionar o novo Perfil SNMP criado.



Exibindo informações atualizadas de CPU, Memória e Disco do dispositivo

Botão direito no dispositivo > Aparência


No campo etiqueta coloque o código abaixo e altere o intervalo de atualização da legenda para 30 segundos

[Device.Name]
[device_performance()]
Ultima Atualização: [Time]


Exibindo informações atualizadas de volumes de disco

Abra novamente a opção aparência do dispositvo > guia geral, insira o código abaixo no campo Etiqueta:

[Device.Name]
[device_performance()] C:\ [round(((((oid("1.3.6.1.2.1.25.2.3.1.5.1")-oid("1.3.6.1.2.1.25.2.3.1.6.1"))*oid("1.3.6.1.2.1.25.2.3.1.4.1"))/1024)/1024)/1024)]GB free of [round(((oid("1.3.6.1.2.1.25.2.3.1.5.1")*oid("1.3.6.1.2.1.25.2.3.1.4.1")/1024)/1024)/1024)]GB
E:\ [round(((((oid("1.3.6.1.2.1.25.2.3.1.5.3")-oid("1.3.6.1.2.1.25.2.3.1.6.3"))*oid("1.3.6.1.2.1.25.2.3.1.4.3"))/1024)/1024)/1024)]GB free of [round(((oid("1.3.6.1.2.1.25.2.3.1.5.3")*oid("1.3.6.1.2.1.25.2.3.1.4.3")/1024)/1024)/1024)]GB
[Device.ServicesDown]

Ultima Atualização: [Time]

Obs. Os trechos do código destacados na imagem abaixo, representam as unidades de disco:
Sendo 1 = C:\, 2=D:\, 4=E:\ e assim por diante.

Exemplo destacado

Dispositivo depois de configurado para exibir detalhes dos volumes de disco.


Agora que já configuramos as informações que desejamos exibir em nosso dispositivo, o próximo passo será configurar os PROBES para esse dispositivo, que de fato serão os responsáveis por testar e monitorar serviços de nosso dispositivo.

Em nosso exemplo, vamos monitorar os seguintes itens abaixo:

· Memória RAM
· Processador
· Volume de Disco (C:) ou outros
· Latência de Rede
· Ping (ICMP)



Criando Probes

Acesse o Menu  Probes, botão +


Probe para testar consumo de memória RAM

Irá testar o consumo de memória RAM, em nosso exemplo se o consumo de memória RAM do dispositivo exceder 90%, será disparado um alerta.

Claro que o valor de 90% é só um padrão que estou usando nesse artigo, mas você pode configurar o percentual de consumo de acordo com o seu ambiente. Basta alterar o valor 90 do campo Erro para qualquer outro valor de sua preferência.
Obs.: A configuração de alertas (visuais, e-mails, mensagens, etc...veremos mais a frente)

Nome:                ALERTA_CONSUMO_MEMORIA
Disponível:        if(mem_usage()>0, 1, -1)
Erro:                  if(mem_usage()<90, "", "Consumo de memoria RAM maior que 90%")
Valor:                mem_usage()


Probe para testar consumo de Processador

Nome:                 ALERTA_CONSUMO_PROCESSADOR
Disponível:         if(cpu_usage()>0, 1, -1)
Erro:                   if(cpu_usage()<85, "", "Consumo do Processador maior que 85%")
Valor:                 cpu_usage()
Unidade:             %


Probe para testar volumes de discos

Antes de criar um pobre para monitorar volumes de discos, devemos criar um função.
Para isso, acesse o menu Function e depois adicione uma nova função com os parâmetros abaixo:

Nome:
driveC_SERVER01

Descrição:
Alerta de consumo drive C

Código:
if(array_size(oid_column("1.3.6.1.2.1.25.2.3.1.6",10,5)),round((oid("1.3.6.1.2.1.25.2.3.1.6.1",10,5)/oid("1.3.6.1.2.1.25.2.3.1.5.1",10,5))*100),"False")



Criando Probe para testar volumes de discos

Nome:                ALERTA_DE_DISCO_SERVER01 (C:)
Disponível:        driveC_SERVER01()<>"False"
Erro:                   if(driveC_SERVER01()<>"False",if(driveC_SERVER01() < 90, "", concatenate("Alerta: Drive C = ",                                              driveC_SERVER01(), "%")), "O drive C: ultrapassou o 90% de uso")
Valor:                 driveC_SERVER01()
Unidade:            %


Probe para Latência de Rede

Irá testar a Latência de Rede, se a latência ultrapassar 40 milissegundos um alerta será disparado.

Nome:               ALERTA_DE_LATENCIA_DE_REDE
Disponível:        ping(device_property("FirstAddress")) >= 0
Erro:                  if(array_element(ping(device_property("FirstAddress")), 0) <40 , "", "Latencia acima de 40ms")
Valor:                ping(device_property("FirstAddress"))
Unidade:           ms



Probe para PING

Nome:                 ALERTA_PING


Com todos os Probres criados, agora vamos associa-los aos dispositivos que queremos monitorar.

Clique duas vezes sobre o dispositivo, guia serviços, no campo testador adicionar o Probe criado anteriormente. Mais abaixo temos os campos onde devemos configurar o tempo entre os testes, isso será o “gatilho” para notificação do serviço.

Em resumo esses números querem dizer que se o consumo de memória do dispositivo estiver acima dos 90% por mais de 1 minuto, será disparado um alerta.

Testador memória RAM

Testador Processador

Testador Discos


Testador Latência de Rede

Testador Ping

E POR ULTIMO...CONFIGURANDO NOTIFICAÇÕES POR EMAIL

1) Insira as informações dos servidores DNS e SMTP de sua empresa.


2) Crie uma nova notificação menu Notifications > Adicionar novo notificação com mostrado na imagem abaixo. Será necessário criar uma notificação para cada serviço que queremos receber o alerta.


3) Clique duas vezes no dispositivo e siga as etapas da imagem abaixo para adicionar a notificação criada ao dispositivo.



Dica: Faça o download do arquivo Strings.zip no link abaixo e extraia o arquivo strings.txt dentro do diretório do Dude abaixo:
C:\Program Files\Dude (Antes renomeie o atual strings.txt para strings.old)


Isso ajudará no momento em que receber um alerta onde será informado o status desse alerta (Aberto ou Fechado) Isso é feito através da variável no titulo do e-mail de notificação Service.Status


Pronto! agora você já possui o BÁSICO para monitorar o seu ambiente. Com isso para cadastrar novos servidores, basta apenas copiar/colar um dispositivo e editar algumas informações.


Algumas outras opções com o Dude



Probe para verificar aplicativo em execução

Irá testar se um aplicativo ou executável está em execução com base no Task Manager do Windows.

Nome:               ALERTA_EXECUTAVEL_CALC
Disponível:        if(array_find(oid_column("1.3.6.1.2.1.25.4.2.1.2"), "calc.exe")>0, 1, -1)
Erro:                  if(array_find(oid_column("1.3.6.1.2.1.25.4.2.1.2"), "calc.exe")>0, "", "O executavel **calc.exe** foi finalizado!")
Valor:                running


Probe para verificar se um serviço está em Execução

Irá verificar se um serviço do services do Windows está em execução.

Nome:               ALERTA_EXECUTAVEL_CALC
Disponível:       if(array_find(oid_column("1.3.6.1.4.1.77.1.2.3.1.1"),"The Dude Server")>0, 1, 0)
Erro:                 if(array_find(oid_column("1.3.6.1.4.1.77.1.2.3.1.1"),"The Dude Server")>0, "", "O Serviço The Dude Server está Parado") 
Valor:                1

Obs. O nome do serviço a ser verificado deve ser exatamente como o exibido na coluna nome do services do Windows


Probe para verificar porta TCP

Verifica se um determinado site/porta estão acessíveis


Probe para Monitorar Temperatura do Ambiente

Nesse exemplo vou usar um servidor físico dentro do CPD (HP Proliant ML 110) para monitorar a temperatura do Ambiente.

Primeiro crie uma função chamada getTemperature com na imagem abaixo.
O OID utilizado para isso foi o oid("1.3.6.1.4.1.232.6.2.6.8.1.4.0.1")


O segundo passo é criar o Probe que utilizará a função getTemperature conforme informações abaixo. Nesse probe, basicamente eu digo que se a temperatura atingir 25 graus ou mais, será disparado um alerta.

Nome:               ALERTA_TEMPERATURA_CPD
Tipo:                 Função
Agente:             Padrão
Disponível:   getTemperature()
Erro:   if(getTemperature()<25, "", "Temperatura do CPD acima de 25 graus")
Valor:   getTemperature()
Unidade:           C




Em nosso caso, quero mostrar a temperatura atual na etiqueta do dispositivo que estou utilizando.
Portanto vamos inserir na etiqueta o código abaixo:

****  [getTemperature()] º C ****


Depois de inserido, teremos algo parecido com a imagem abaixo:



Depois disso, basta criar os alertas de e-mail e configurar de acordo com suas necessidades. 

Dude Acesso via Web

Você pode configurar o modo Web do Dude que permite acesso ao mesmo via browser. Habilite a opção Web e defina a porta para publicação do acesso.



Bem pessoal por hora é isso! Nos próximos posts vou demonstrar como monitorar roteadores, switch e até até mesmo capturar temperatura de dispositivos.

abraços!