quinta-feira, 2 de fevereiro de 2017

Gerente SNMP com o Node.js


Neste post vamos criar um pequeno script para rodar em node.js para fazer leituras de OIDs de uma MIB  fornecida por um Agent criado por um serviço nativo do Windows.
Para rodar este script é necessário o conhecimento de Node.js existem vários artigos na internet.
A gerência com o protocolo SNMP pode ser visto na figura abaixo:



















Temos o Agente que fica próximo ao dispositivo gerenciado colhendo as informações e inserindo em uma MIB (Mangement Information Base), estas informações são armazenadas em uma árvore onde os nós são identificados pelos OIDs (Object Identifier).
Na figura abaixo temos um detalhe desta estrutura:











O gerente através de uma conexão de rede solicita ao agente informações contidas na MIB, para isto é fornecido o numero do OID onde está a informação desejada na arvore.

Para podemos ver o funcionamento do script vamos ativar um serviço do Windows para por em operação um Agente que armazena em uma MIB as informações do Windows.

Uma vez este Agent funcionando podemos partir para o script do node,js.

Vamos lá:

Entre em Painel de controle-->Ativar ou Desativar recursos do Windows:
























Clicando-se na aba Ok  o serviço é iniciado:






















Iniciado o serviço precisamos configurá-lo, para isto vamos em Painel de Controle --> Ferramentas Administrativas:























Entrammos no item serviços:






















Entraremos no intem Serviço SNMP:


Entre na Aba Segurança:























Nesta parte adicionamos a comunidade "public" e escolhemos quem pode acessar a máquina:






















Depois desta inclusão a janela ficará como abaixo:























Clicando-se em Ok o Agente SNMP está disponivel no IP da máquina.
Neste ponto para verificar o funcionamento do Agente pode ser utilizado algum software de visualização de Mibs como por exemplo o MIB Browser que tem versão free na internet.

Agora vamos ao script do Node.js, que é bastante simples:

var snmp = require ("net-snmp");

var session = snmp.createSession ("127.0.0.1", "public");

var oids = ["1.3.6.1.2.1.1.3.0", "1.3.6.1.2.1.1.1.0"];

var msgOid=[];
var msgValue=[];

session.get (oids, function (error, varbinds)
 {
    if (error) 
    {
        console.error (error);
    } 
    else
    {
        for (var i = 0; i < varbinds.length; i++)
        {
            if (snmp.isVarbindError (varbinds[i]))
            {
                console.error (snmp.varbindError (varbinds[i]));

            }
               
            else
            {
                //console.log (varbinds[i].oid + " = " + varbinds[i].value);

                msgOid[i]=varbinds[i].oid.toString();
                msgValue[i]=varbinds[i].value.toString();

                console.log(msgOid[i] + "-->" + msgValue[i] );  
            }                
        }                  
    }
});

Salvar o script em uma pasta com a extensão .js após isto deve ser feita instalação do módulo usando o comando:

npm install net-snmp --save

A pasta ficará como na figura abaixo:






















No meu exemplo usei o nome do arquivo do script snmpGerente.js e a pasta node-modules foi criada com o comando npm install net-snmp --save.
Para rodar o script entre no prompt do DOS mude o diretório para a pasta.

Após estar dentro da pasta que tem o script e a pasta dos modulos execute o script com o comando:

node  <nomeArquivo.js >

A figura abaixo mostra um exemplo:






















Como pode ser visto temos a informação de 02 OIDs ( 1.3.6.1.2.1.1.3.0" e "1.3.6.1.2.1.1.1.0 ) que estão no array do script, pode ser colocados mais OIDs, separados por virgula
Se o serviço SNMP foi configurado para ser visto por qualquer host, podemos ver através de outra máquina informando no script o IP correspondente.
Não tratamos aqui o funcionamento do Trap para deixar menos extenso esta publicação.


É isto ai.

Até a próxima.

Nenhum comentário:

Postar um comentário