Monitorando no Zabbix as sessões BGP do RouterOS/Mikrotik (Script Python)
Neste tutorial vamos aprender a monitorar o status da sessão BGP no RouterOS/Mikrotik, bem como receber notificações se a sessão cair ou reconectar.
PARA PARA PARA…. Quando escrevi este tutorial não existia esse tutorial aqui, recomendo você lêr ele, pois descobrimos outra forma mais simples.
Como a mikrotik não disponibiliza essas informações via SNMP (até o momento, esperaça de pobre é a ultima que morre) teremos que usar das artimanhas, então nosso amigo Gabriel Vargas Padilha fez um script em python mikrotikBgpZabbixScript para buscar as informações, eu montei a parte do Zabbix.
Se aida não tem o Zabbix instalado siga: Instalação do Zabbix 5 LTS + Grafana + NGINX + PostgreSQL + Telegram
Configuração
Requisitos:
– RouterOS 6.48 ou maior
– Zabbix Server 5.x
– Distribuição: Debian 10/11
Configuração no RouterOS/Mikrotik
Será necessário criar um usuário com permissões somente de leitura bem como restringindo o acesso para somente o IP do Zabbix, para fazer a conexão para coletas de dados.
/user add group=read address=IP_ZABBIX name=SEU_USUARIO password=SUA_SENHA
Se desejar desativar as infomação de login. Isso fará com que você não veja mais nenhum login feito no router.
/system logging set 0 topics=info,!account
OBS: Não use espaço e caracter especial nos nomes dos Peer’s e tenha nomes diferentes para cada Peer.
Zabbix Serve/Linux
Pacotes necessários:
# apt install python3-pip # pip3 install librouteros
Acesse o diretório externalscripts e faça download.
# cd /usr/lib/zabbix/externalscripts/
Faça download dos scripts
# apt install wget # wget https://raw.githubusercontent.com/gtkpad/mikrotikBgpZabbixScript/main/main.py -O mikrotikBgp.py # wget https://raw.githubusercontent.com/gtkpad/mikrotikBgpZabbixScript/main/Mikrotik.py
De permissão para os arquivos para execução e altere o dono para o usuário zabbix.
# touch mikrotikBgp.log # chmod +x mikrotikBgp.py # chown zabbix. mikrotikBgp.py Mikrotik.py mikrotikBgp.log # systemctl restart zabbix-server
Informações de uso do script:
# ./mikrotikBgp.py <IP> <USER> <PASS> <API_PORT> <METHOD> # ./mikrotikBgp.py <IP> <USER> <PASS> <API_PORT> <METHOD> <PEER_NAME> # ./mikrotikBgp.py <IP> <USER> <PASS> <API_PORT> <METHOD> <PEER_NAME> <PEER_INFO>
METHOD’s
getPeer – Retorna todos os peerings em formato json.
getPeerInfo – Retorna o valor especifico de um peer.
Exemplos de uso:
# cd /usr/lib/zabbix/externalscripts # ./mikrotikBgp.py 10.20.30.40 usuario senha 8728 getPeers
{ "data":[ { "{#PEER_NAME}":"VS_BORDA_IPV4", "{#PEER_AS}":12345, "{#PEER_ADDR}":"10.20.30.5" }, { "{#PEER_NAME}":"VS_BORDA_IPV6", "{#PEER_AS}":12345, "{#PEER_ADDR}":"fd00:bacb:20:30::1" }, { "{#PEER_NAME}":"NAT_PPPOES_IPV4", "{#PEER_AS}":65530, "{#PEER_ADDR}":"10.20.30.14" } ] }
# ./mikrotikBgp.py 10.20.30.40 usuario senha 8728 getPeerInfo VS_BORDA_IPV4 # ./mikrotikBgp.py 10.20.30.40 usuario senha 8728 getPeerInfo VS_BORDA_IPV4 name # ./mikrotikBgp.py 10.20.30.40 usuario senha 8728 getPeerInfo VS_BORDA_IPV4 instance # ./mikrotikBgp.py 10.20.30.40 usuario senha 8728 getPeerInfo VS_BORDA_IPV4 remote-address # ./mikrotikBgp.py 10.20.30.40 usuario senha 8728 getPeerInfo VS_BORDA_IPV4 remote-as # ./mikrotikBgp.py 10.20.30.40 usuario senha 8728 getPeerInfo VS_BORDA_IPV4 uptime # ./mikrotikBgp.py 10.20.30.40 usuario senha 8728 getPeerInfo VS_BORDA_IPV4 established # ./mikrotikBgp.py 10.20.30.40 usuario senha 8728 getPeerInfo VS_BORDA_IPV4 prefix-count # ./mikrotikBgp.py 10.20.30.40 usuario senha 8728 getPeerInfo VS_BORDA_IPV4 advertisements
Agora acesse seu Zabbix, e importe o Template:
Faça download do template RR Mikrotik – BGP – Script Python.xml e importe.
Crie um novo host, ou inclua o agent.
Selecione o Template RR Mikrotik – BGP – Script. Você encontra outros templates aqui também.
Por fim, herde os macros do template, e clique em modificar para informar os seus dados em seguida clique em salvar
OBS: A descoberta esta ajustada para 6h, se desejar que seja mais rápido execute manualmente, para realizar esse procedimento faça:
Grafana Modelo
Apenas uma idéia para você montar uma dash bacaninha:
Vou deixar aqui dash Modelo
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.
RouterOS v7 alguma atualizacao ?
Parabéns pelos conteúdos aqui, tem sido de grande valia! Uma dúvida: no template, mais especificamente na regra de descoberta do item “state”, a coleta esta retornando apenas o numeral (6), onde deveria apareces “estabelecida ou established”. Sabe me dizer o por que?
Muito obrigado.
Parabéns pela contribuição!!!
Fiz aqui e deu tudo certo!! Obrigado!!
Se eu conseguir implementar algumas coisa aviso, Abraço
Nesse tuto fiquei com o erro e ainda não achei a solução!
Invalid discovery rule value: cannot parse as a valid JSON object: invalid object format, expected opening character ‘{‘ or ‘[‘ at: ‘0’
Uso debian 10 buster
zabbix 5.4.7
OBS: consigo resposta do script usando o comando getpeers, porem o zabbix não coleta os dados
Verifica se no nome do Peer não tem caracter especial, bem como espços.
Nesse tuto fiquei com o erro e ainda não achei a solução!
Invalid discovery rule value: cannot parse as a valid JSON object: invalid object format, expected opening character ‘{‘ or ‘[‘ at: ‘0’
root@zabbix[~]# cat /etc/os-release
PRETTY_NAME=”Debian GNU/Linux 10 (buster)”
NAME=”Debian GNU/Linux”
VERSION_ID=”10″
VERSION=”10 (buster)”
VERSION_CODENAME=buster
ID=debian
HOME_URL=”https://www.debian.org/”
SUPPORT_URL=”https://www.debian.org/support”
BUG_REPORT_URL=”https://bugs.debian.org/”
————————————————————————————————-
zabbix_server –version
zabbix_server (Zabbix) 5.4.7
Revision 84dc2ec5dc 28 October 2021, compilation time: Oct 20 2021 12:31:10
Copyright (C) 2021 Zabbix SIA
License GPLv2+: GNU GPL version 2 or later .
This is free software: you are free to change and redistribute it according to
the license. There is NO WARRANTY, to the extent permitted by law.
This product includes software developed by the OpenSSL Project
for use in the OpenSSL Toolkit (http://www.openssl.org/).
Compiled with OpenSSL 1.1.1d 10 Sep 2019
Running with OpenSSL 1.1.1d 10 Sep 2019
Grande contribuição, parabéns pelo tutorial, testado ok
Nesse tuto fiquei com o erro e ainda não achei a solução!
Invalid discovery rule value: cannot parse as a valid JSON object: invalid object format, expected opening character ‘{‘ or ‘[‘ at: ‘0’
Qual distribuição linux?
Meu também apresentou mesmo erro Debian 11
Quando verifico no log do mikrotik apresenta erro de login via api
Meu apresentou mesmo erro, no log do MK aparece tentantiva de login da API invalida. Aqui utilizo Debian 11.
Poderia ter 1 assim para VYOS, bom material.
Nunca teste, mas veja esse: https://github.com/sever-sever/vyos-zabbix