monitor_bgp.rsc
monitor_bgp.rsc ver.1.02
This commit is contained in:
commit
f8cb39c579
64
monitor_bgp.rsc
Normal file
64
monitor_bgp.rsc
Normal file
@ -0,0 +1,64 @@
|
||||
# Script que monitorar o status de um determinado peer bgp. Em caso que o status
|
||||
# do peer seja diferente de established, o RoS desativa e ativa o peer na tentativa de
|
||||
# restabelecer a conexão.
|
||||
# Uma notificação é enviada via telegram quando o peer cai e quando o mesmo é reestabelecido.
|
||||
#
|
||||
# Author: Halbe Bruno
|
||||
# V1.02 - 2025-02-07
|
||||
|
||||
# Variáveis para o Telegram
|
||||
:local TelegramBotToken "318510879:AAFMQ7-GojYTcLRMFEIcwAJ21M2iFhrINxs"
|
||||
:local TelegramChatID "172198732"
|
||||
:local TelegramMessageDown "Peer VIVO (telefonia) DOWN"
|
||||
:local TelegramMessageUp "Peer VIVO (telefonia) UP"
|
||||
|
||||
# Variáveis para o peer BGP
|
||||
:local peerName "VIVO"
|
||||
|
||||
# Variáveis globais para rastrear o estado do peer
|
||||
:global PeerDownNotificationSent
|
||||
:global PeerUpNotificationSent
|
||||
|
||||
# Verifica o estado do peer BGP
|
||||
:local peerState [/routing bgp peer get [find where name=$peerName] state]
|
||||
|
||||
# Lógica principal
|
||||
:if ($peerState != "established") do={
|
||||
/log warning message="O peer BGP $peerName está DOWN. Reiniciando conexão do peer..."
|
||||
|
||||
# Reinicia o peer
|
||||
/routing bgp peer disable $peerName
|
||||
:delay 2
|
||||
/routing bgp peer enable $peerName
|
||||
|
||||
# Verifica se a mensagem de DOWN já foi enviada
|
||||
:if ([:typeof $PeerDownNotificationSent] = "nothing" || $PeerDownNotificationSent = false) do={
|
||||
# Envia a mensagem de DOWN pelo Telegram
|
||||
/tool fetch url="https://api.telegram.org/bot$TelegramBotToken/sendMessage?chat_id=$TelegramChatID&text=$TelegramMessageDown" keep-result=no
|
||||
|
||||
# Marca que a mensagem de DOWN foi enviada
|
||||
:set PeerDownNotificationSent true
|
||||
/log info "Mensagem de notificação (DOWN) enviada."
|
||||
}
|
||||
|
||||
# Reseta a variável de notificação de UP
|
||||
:if ([:typeof $PeerUpNotificationSent] != "nothing" && $PeerUpNotificationSent = true) do={
|
||||
:set PeerUpNotificationSent false
|
||||
}
|
||||
} else={
|
||||
# Verifica se a mensagem de UP já foi enviada
|
||||
:if ([:typeof $PeerUpNotificationSent] = "nothing" || $PeerUpNotificationSent = false) do={
|
||||
# Envia a mensagem de UP pelo Telegram
|
||||
/tool fetch url="https://api.telegram.org/bot$TelegramBotToken/sendMessage?chat_id=$TelegramChatID&text=$TelegramMessageUp" keep-result=no
|
||||
|
||||
# Marca que a mensagem de UP foi enviada
|
||||
:set PeerUpNotificationSent true
|
||||
/log info "Mensagem de notificação (UP) enviada."
|
||||
}
|
||||
|
||||
# Reseta a variável de notificação de DOWN
|
||||
:if ([:typeof $PeerDownNotificationSent] != "nothing" && $PeerDownNotificationSent = true) do={
|
||||
:set PeerDownNotificationSent false
|
||||
/log info "Peer BGP $peerName reestabelecido. Variável de notificação (DOWN) resetada."
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user