Monitorando sessões BGP do MikroTik/RouterOS com Zabbix

porJorge Iwano

Monitorando sessões BGP do MikroTik/RouterOS com Zabbix

Se você utiliza roteadores MikroTik para fechar sessões BGP, já deve ter percebido que não é possível monitorar os status das sessões por meio do protocolo de gerenciamento SNMP.

Enquanto o RouterOS não incorpora o monitoramento das sessões por meio do protocolo SNMP, existe uma alternativa que desenvolvi utilizando Agente/SSH do Zabbix e Scripts do MikroTik.

Então vamos ao desafio;

Desenvolvendo regra de descoberta

Precisamos criar uma regra de descoberta(LLD) no Zabbix para que ele detecte todos os peers BGP configurados no roteador MikroTik. Então desenvolvi um script na linguagem do roteador eu imprime uma saída no formato JSON com os dados dos peers.

{
:local list [/routing bgp peer find]; 
:local count 0; 
:local total [:len $list];
:local append ",";
:put "{\"data\":["; 
:foreach i in=$list do={; 
  :set count ($count + 1); 
  :local name [/routing bgp peer get value-name=name number=$i];
  :local remoteas [/routing bgp peer get value-name=remote-as number=$i];
  :local disabled [/routing bgp peer get value-name=disabled number=$i];
  :if ($count = $total) do={ :set append ""; };
  :if ( $count <= $total) do={; 
    :put "{\"{#PEERNAME}\":\"$name\",\"{#REMOTEAS}\":\"$remoteas\",\"{#DISABLED}\":\"$disabled\"}$append";
  };
}; 
:put "]}";
}

 

Para fins de teste, você pode executar manualmente  o código acima na CLI do seu roteador MikroTik e deverá obter a saída similar abaixo.

{"data":[
{"{#PEERNAME}":"eBGP - Operadora1","{#REMOTEAS}":"123456","{#DISABLED}":"false"},
{"{#PEERNAME}":"eBGP - Operadora2","{#REMOTEAS}":"123412","{#DISABLED}":"false"},
{"{#PEERNAME}":"iBGP - Site1","{#REMOTEAS}":"65332","{#DISABLED}":"true"},
{"{#PEERNAME}":"iBGP - Site2","{#REMOTEAS}":"65332","{#DISABLED}":"false"}
]}


 

Criando Template

Agora que temos a informação dos peers BGP, podemos iniciar a criação do template no Zabbix

 

Crie a regra de descoberta e preencha conforma imagem abaixo.

 

Se achar necessário, crie o filtro para não monitorar interfaces desativadas.

 

Criando Item prototype

Depois que criamos a regra de descoberta, precisaremos criar os items do tipo prototype. Isso vai fazer com que o zabbix crie um item dinâmico para cada peer descoberto.

Com base nas informações que vão vir pelo JSON do LLD, iremos montar o item para pegar status de cada sessão.

{#PEERNAME} – Vai trazer o nome do peers cadastrado.

{#REMOTEAS} – Vai trazer o numero do ASN remoto.

{#DISABLED} – Vai informar se o peers está desativado. Os valores podem ser true ou false.

Segue abaixo a montagem do item.

Os valores que o MikroTik retorna para este item podem ser;

idle / connect / active / opensent / openconfirm / established

 

Criando Triger prototype

Com base nos valores obtidos com o item criado, agora iremos criar uma trigger prototype para alarmar caso o status do peer venha com algum valor diferente de established.

Segue abaixo a montagem do trigger.

 

Definindo macros

O último detalhe agora é configurar as macros do template com as informações referente ao acesso SSH do MikroTik.

Segue abaixo a declaração dos valores de cada macro.

 

Conclusão

Espero ter ajudado a comunidade Zabbix/MikroTik com essa solução. Fiquem a vontade para comentar e compartilhar.

Até logo.

 

Sobre o Autor

Jorge Iwano author

Profissional de TI, 15 anos de experiencia nas áreas de TI e Telecomunicações. Entusiasta em tecnologia e aberto as novas tendências. Procuro inovar e sempre aperfeiçoando habilidades. Gerente de Redes na Gigacom do Brasil LTDA

1 comentário até agora

Rudson CostaPostado em1:35 pm - nov 24, 2018

Show de bola Mestre

Deixe uma resposta