Monitorando no Zabbix as sessões BGP do RouterOS v6 (Mikrotik) via SNMP

Neste tutorial vamos aprender a monitorar o status da sessão BGP no RouterOS v6 o nosso “querido” Mikrotik, bem como receber notificações se a sessão cair ou reconectar.

Como a mikrotik não disponibiliza essas informações via SNMP das sessões BGP, usaremos das artimanhas. Então juntamente com meu amigo Saulo Costa qual identificou que existe uma OID dos script que estão no RouterOS (1.3.6.1.4.1.14988.1.1.8.1.1.2) e outra (1.3.6.1.4.1.14988.1.1.18.1.1.2.***) que é possivel executar-lo bem como ter retornos, e ai meu amigo as mentes voaram longe!

Acompanhe o raciocínio:

1º Crie um script em seu RouterOS

Darei o nome do script de bgp_snmp

A idéa é pegar as informações no scrip e apenas imprimi-las. Experimente executar o script agora!

Você terá uma saída em JSON com as informações que iremos coletar lá no Zabbix.

2º Configure o SNMP

Será necessário habiliar o write-access, então tenha certeza de ter uma community fora dos padrões (ex public {mando te matar!}) bem como restringir o acesso apenas para IP ou Prefixos de seus servidores.
Segue um exemplo:

3º Teste do seu servidor Zabbix

No exemplo meu router tem o IP 10.50.50.30 e minha community é sUpErS3cret0. Se você não tem as MIBS e o comando snmpwalk não “funciona” leia aqui.

Você tera um resultado com todos os seus scripts:

O que é iportante para nós é esse numerozinho aqui: 14988.1.1.8.1.1.2.7, mais propriamente dito o final dele, neste exemplo o nº 7, este é o identificador do script. Anote ele, vamos precisar ele lá no nosso template.
Agora vamos rodar o script e fazer um get para ver se temos o retorno com o OID 1.3.6.1.4.1.14988.1.1.18.1.1.2.X. Onde X é o nº do identificador do script (neste ex 7).

Você irá receber uma saída com todos os peers do seu router:

4º Importando o template para o Zabbix

Faça download do template RR Mikrotik – BGP – SNMP Script.xml e importe o mesmo.

5º Crie/Edite um host usando o template

Informe o Nome, grupo bem como IP com agente SNMP.

Selecione o template RR Mikrotik – BGP – SNMP Script

Lembra do identificador, precisamos informa-lo aqui.

Acesse os dados recentes para verificar se os itens foram criados (lembrado que ele é executado a cada 5min) então tenha paciência de aguardar 10min ou execute manualmente.

Bem mais simplique que o metodo do outro tutorial com script python.

Espero que tenha gostado! E mais uma vez deixo meu agradecimento ao parceio Saulo. Se fizer algo legal não deixe de compartilhar! Com isso você pode criar até mesmo outros templates, para coletar outras informações. Isso é o legal de compartilhar!

Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!

Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato clique aqui.

Rudimar Remontti

Trabalho atualmente como Gerente de Redes em um Provedor de Internet no Rio Grande do Sul.

Você pode gostar...

25 Resultados

  1. EUEMERSON OLIVEIRA disse:

    alguém já adaptou esse script para a versão mikrotik v7 ?

  2. GERALDO DE SOUSA CRUZ NETO disse:

    o que seria esse item disable que pega true quando o state por 1=idle?

  3. Eric disse:

    Essa config foi testada em qual V6 do router OS? eu tenho um BGP na V6.45.9 e tenho sessões full route e ptt com ix, e depois de todos os passos quando executo o comando snmpget da timeout na solicitação pois o print do comando fica lento com todas essas sessões e depois de tentar executar mais de uma vez o snmwalk ja não encontra mais o index do script ai preciso excluir e criar outro pra voltar a encontrar! Alguma ideia no que possa ser?

  4. Excelente projetinho, funcionou perfeitamente.
    Detalhe é só editarem o Template na OID , pois vem com o OID padrão ai cada Router terá o seu OID.
    Esse template dá para usar para monitorar o tráfego e as rotas pelo Grafana?
    Alguém consegue dar um help ai ???

  5. Vinicius Albino disse:

    Parabéns pelo tópico! Muito bom, funcionou certinho.
    Uma dúvida: Como consigo alterar o valor do item State = established(6)? Gostaria de monitorar pelo grafana, mas consigo obter somente o “numeral 6”

  6. Parabéns pelo trabalho e por compartilhar seus conhecimentos conosco, aqui já tenho várias ferramentas rodando somente seguindo seus tutoriais, muito agradecido, Deus abençoe!

  7. Mardonio Alves disse:

    Olá , ao executar o comando snmpwalk não retorna os valores de execução , só mostra linha que informa o nome do script. ao executar o script local no mikrotik , os valores retornam OK. o que poderia ser ?

    snmpwalk -v2c -c sUpErS3cret0 X.X.X.X 1.3.6.1.4.1.14988.1.1.8.1.1.2.12
    iso.3.6.1.4.1.14988.1.1.8.1.1.2.12 = STRING: “bgp_snmp”

  8. Excelente, parabéns…

  9. Eldio Venancio disse:

    Boa tarde. Primeiramente parabéns pelo projeto, funcionou perfeitamente quando tem poucas sessões BGP’s configuradas. Sabes me dizer onde posso alterar as restrições para o SNMP pegar um JSOn maior, pois tenho alguns mikrotiks com + de 12 sessões configuradas e ele da erro de “Cannot receive string value: out of memory.” na tentativa de coleta por parte do item SNMP. Abraço.

    • Verifica o nome do peer, se tiver algum caracter especial, espaço poderá dar erro.

      • Eldio Venancio disse:

        Quanto aos nomes só tinha letras, numeros, “-” e “_”.
        Pelo terminal, consigo pegar todos normalmente pelo snmpwalk.
        Renomeei todos os Peers de 1 até 16(1,2,3,4…..16) e fui removendo um por um até chegar em 11.
        Parece como se o resultado do Json no itém do Zabbix comporta um determinado tamanho de string.
        No retorno dentro da opção “Testar > Obter valor” dentro do item SNMP(Retorno Json) acredito que talvez tenha alguma variável no zabbix que possa alterar o tamanho maximo da string.

      • Eldio Venancio disse:

        Fiz mais um teste. Peguei o resultado pego via snmpwalk e coloquei o resultado em “valor” em vez de “Obter valor do host”. Desta forma não deu erro. Logo acredito que seja algo com o Zabbix+apache, pois o Script e o item em si funciona corretamente. O erro só dá quando o zabbix vai obter o resultado do host.

        • Eldio Venancio disse:

          Quando ele obtém um resultado com mais de 1703 caracteres ele da erro(usei o site quantasletras.com para contar caracteres).
          Peguei os 11 que estavam funcionando e fui adicionando um numero ao final deles(ex: a1, a12,a123,a1234) até dar o erro. O meu estava dando 1621 caracteres[funcionando].A estrutura de retorno começa em {“peer”: [ e vai até ]}(Sem usar as ” no inicio e no fim)
          Quando adicionei 83 caracteres distribuídos 10 a 10 em cada Peer ocorreu o erro. Deve ser algo relacionado a alocação de memória no Zabbix.

  10. Rafael disse:

    Muito bom seu tutorial, estava precisando monitorar as sessões BGP é funcionou massa de mais, testado e aprovado, muito obrigado por postar esse conteúdo. Testado e aprovado. fica minha contribuição como forma de agradecimento. Abç.

  11. Claudio disse:

    tentei de todas as formas fazer funcionar com o zabbix versao 4.4 , teria como me manda o script do xml para esta versao ? tentei alterar apenas o xml para o meu zabbix aceitar o arquivo xml porem percebi que faltou alguns itens do xml .

  1. 28 de dezembro de 2021

    […] PARA PARA…. Quando escrevi este tutorial não existia esse tutorial aqui, recomendo você ler ele, pois descobrimos outra forma mais […]

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *