5.0
2021-12-28T18:47:16Z
Templates RR
RR Mikrotik - BGP - SNMP Script
RR Mikrotik - BGP - SNMP Script
# SCRIPT
:put "{\"peer\": [";
:global lista [/routing bgp peer find];
:global contador 0;
:foreach i in=$lista do={
:global disabled [/routing bgp peer get value-name=disabled number=$i];
:global name [/routing bgp peer get value-name=name number=$i];
:global remoteaddress [/routing bgp peer get value-name=remote-address number=$i];
:global remoteas [/routing bgp peer get value-name=remote-as number=$i];
:global state [/routing bgp peer get value-name=state number=$i];
:if (state = "idle") do={:set state 1;};
:if (state = "connect") do={:set state 2;}
:if (state = "active") do={:set state 3;};
:if (state = "opensent") do={:set state 4;}
:if (state = "openconfirm") do={:set state 5;};
:if (state = "established") do={:set state 6;}
:if (disabled = true) do={:set state 1;}
:global prefix [/routing bgp peer get value-name=prefix number=$i];
:if (prefix < 1) do={:set prefix 0;}
:global uptime [/routing bgp peer get value-name=uptime number=$i];
:if (uptime < 1) do={:set uptime 0;}
:global uptimeseconds 0; :global weekend 0;
:global dayend 0; :global weeks 0; :global days 0;
:if ([:find $uptime "w" -1] > 0) do={
:set weekend [:find $uptime "w" -1];
:set weeks [:pick $uptime 0 $weekend];
:set weekend ($weekend+1);
};
:if ([:find $uptime "d" -1] > 0) do={
:set dayend [:find $uptime "d" -1];
:set days [:pick $uptime $weekend $dayend];
};
:global time [:pick $uptime ([:len $uptime]-8) [:len $uptime]];
:global hours [:pick $time 0 2];
:global minutes [:pick $time 3 5];
:global seconds [:pick $time 6 8];
:set uptimeseconds [($weeks*86400*7+$days*86400+$hours*3600+$minutes*60+$seconds)];
:set contador ($contador + 1);
:if ( $contador < [:len $lista]) do={
:put "{\"Id\": \"$contador\",\"Disabled\": \"$disabled\",\"Name\": \"$name\",\"Remote-Address\": \"$remoteaddress\",\"Remote-AS\": \"$remoteas\",\"State\": \"$state\",\"Prefix\": \"$prefix\",\"Uptime\": \"$uptimeseconds\"},"
} else={
:put "{\"Id\": \"$contador\",\"Disabled\": \"$disabled\",\"Name\": \"$name\",\"Remote-Address\": \"$remoteaddress\",\"Remote-AS\": \"$remoteas\",\"State\": \"$state\",\"Prefix\": \"$prefix\",\"Uptime\": \"$uptimeseconds\"}"
};
};
:put "]}";
# CONF SNMP
/snmp community set [ find default=yes ] addresses=x.x.x.x.0/27 name=yyyyyyyyy write-access=yes
/snmp set contact=NOME enabled=yes location=LOCAL trap-version=2
Templates RR
BGP
-
Retorno Json
SNMP_AGENT
1.3.6.1.4.1.14988.1.1.18.1.1.2.{$IDSCRIPT}
script.json
5m
0
TEXT
BGP
Descoberta Peer
DEPENDENT
descoberta.peer
0
0
Peer {#PEER_NAME} - AS{#PEER_AS} Disabled
DEPENDENT
peer.disabled.[{#PEER_ID}]
0
0
TEXT
BGP
JSONPATH
$.peer.[?(@.Id == "{#PEER_ID}")].Disabled.first()
script.json
Peer {#PEER_NAME} - AS{#PEER_AS} Prefix
DEPENDENT
peer.prefix.[{#PEER_ID}]
0
FLOAT
BGP
JSONPATH
$.peer.[?(@.Id == "{#PEER_ID}")].Prefix.first()
script.json
Peer {#PEER_NAME} - AS{#PEER_AS} State
DEPENDENT
peer.state.[{#PEER_ID}]
0
FLOAT
BGP
BgpPeerState
JSONPATH
$.peer.[?(@.Id == "{#PEER_ID}")].State.first()
script.json
Peer {#PEER_NAME} - AS{#PEER_AS} Uptime
DEPENDENT
peer.uptime.[{#PEER_ID}]
0
uptime
BGP
JSONPATH
$.peer.[?(@.Id == "{#PEER_ID}")].Uptime.first()
script.json
{RR Mikrotik - BGP - SNMP Script:peer.state.[{#PEER_ID}].last()}<6 and {RR Mikrotik - BGP - SNMP Script:peer.disabled.[{#PEER_ID}].last()}="false"
Peer {#PEER_NAME} - AS{#PEER_AS} - {#PEER_REMOTE} está dow!
DISASTER
{RR Mikrotik - BGP - SNMP Script:peer.uptime.[{#PEER_ID}].change(0)}<0 and {RR Mikrotik - BGP - SNMP Script:peer.disabled.[{#PEER_ID}].last()}="false"
Peer {#PEER_NAME} - AS{#PEER_AS} - {#PEER_REMOTE} uptime
WARNING
Prefixo Peer {#PEER_NAME} - AS{#PEER_AS} - {#PEER_REMOTE}
1
GRADIENT_LINE
26A69A
-
RR Mikrotik - BGP - SNMP Script
peer.prefix.[{#PEER_ID}]
script.json
{#PEER_ID}
$.['Id']
{#PEER_AS}
$.['Remote-AS']
{#PEER_REMOTE}
$.['Remote-Address']
{#PEER_NAME}
$.['Name']
JSONPATH
$.peer
{$IDSCRIPT}
9999
snmpwalk -v2c -c <comm> <ip> 1.3.6.1.4.1.14988.1.1.8.1.1.2
BgpPeerState
1
idle
2
connect
3
active
4
opensent
5
openconfirm
6
established