<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export><version>5.0</version><date>2021-11-21T21:48:30Z</date><groups><group><name>Templates</name></group></groups><templates><template><template>Mikrotik - BGP LLD</template><name>Mikrotik - BGP LLD</name><description>## Overview

The Zabbix Mikrotik BGP template for 4.0, which uses LLD, JSON, SSH for connection to Mikrotik router wihout externel scripts.


Inspired by: [https://share.zabbix.com/network\_devices/mikrotik/mikrotik-bgp-lld#login-modal](network_devices/mikrotik/mikrotik-bgp-lld#login-modal)


The diferenses is this template uses one ssh connection for getting all parametrs through JSON.


This template requires changing macroses:


{$MIKROTIK\_SSH\_PASS}


{$MIKROTIK\_SSH\_PORT}


{$MIKROTIK\_SSH\_USER}


 



## Author

AlKosmos

</description><groups><group><name>Templates</name></group></groups><applications><application><name>BGP</name></application><application><name>BGP JSON</name></application></applications><items><item><name>BGP - Peer JSON</name><type>SSH</type><key>ssh.run[BGP - Peer JSON,,{$MIKROTIK_SSH_PORT},]</key><delay>{$UPDATEINT}</delay><history>{$HISTORY}</history><trends>0</trends><value_type>TEXT</value_type><params>:global list [/routing bgp peer find]; :global count 0; :global total [:len $list]; :put &quot;{&quot;; :foreach i in=$list do={; :set count ($count + 1); :local name [/routing bgp peer get value-name=name number=$i]; :local prefix [/routing bgp peer get value-name=prefix number=$i];  :local state [/routing bgp peer get value-name=state 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 ( disabled != true) do={ :if ( $count &lt; $total) do={; :put &quot;\&quot;$name\&quot;:{\&quot;REMOTEAS\&quot;:\&quot;$remoteas\&quot;,\&quot;DISABLED\&quot;:\&quot;$disabled\&quot;,\&quot;PREFIX\&quot;:\&quot;$prefix\&quot;,\&quot;STATE\&quot;:\&quot;$state\&quot;},&quot;; } else={; :put &quot;\&quot;$name\&quot;:{\&quot;REMOTEAS\&quot;:\&quot;$remoteas\&quot;,\&quot;DISABLED\&quot;:\&quot;$disabled\&quot;,\&quot;PREFIX\&quot;:\&quot;$prefix\&quot;,\&quot;STATE\&quot;:\&quot;$state\&quot;}&quot;; }; }; }; :put &quot;}&quot;;</params><username>{$MIKROTIK_SSH_USER}</username><password>{$MIKROTIK_SSH_PASS}</password><applications><application><name>BGP JSON</name></application></applications></item></items><discovery_rules><discovery_rule><name>BGP - Peers</name><type>SSH</type><key>ssh.run[,,{$MIKROTIK_SSH_PORT},]</key><delay>1h</delay><params>:global list [/routing bgp peer find]; :global count 0; :global total [:len $list]; :put &quot;{\&quot;data\&quot;:[&quot;; :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 &lt; $total) do={; :put &quot;{\&quot;{#PEERNAME}\&quot;:\&quot;$name\&quot;,\&quot;{#REMOTEAS}\&quot;:\&quot;$remoteas\&quot;,\&quot;{#DISABLED}\&quot;:\&quot;$disabled\&quot;},&quot;; } else={; :put &quot;{\&quot;{#PEERNAME}\&quot;:\&quot;$name\&quot;,\&quot;{#REMOTEAS}\&quot;:\&quot;$remoteas\&quot;,\&quot;{#DISABLED}\&quot;:\&quot;$disabled\&quot;}&quot;; }; }; :put &quot;]}&quot;;</params><username>{$MIKROTIK_SSH_USER}</username><password>{$MIKROTIK_SSH_PASS}</password><filter><conditions><condition><macro>{#DISABLED}</macro><value>false</value><formulaid>A</formulaid></condition></conditions></filter><item_prototypes><item_prototype><name>{#PEERNAME} ({#REMOTEAS}) - Prefix</name><type>DEPENDENT</type><key>ssh.run[{#PEERNAME}-prefix,,{$MIKROTIK_SSH_PORT},]</key><delay>0</delay><history>{$HISTORY}</history><trends>{$TRENDS}</trends><applications><application><name>BGP</name></application></applications><preprocessing><step><type>JSONPATH</type><params>$[&quot;{#PEERNAME}&quot;].PREFIX</params></step></preprocessing><master_item><key>ssh.run[BGP - Peer JSON,,{$MIKROTIK_SSH_PORT},]</key></master_item></item_prototype><item_prototype><name>{#PEERNAME} ({#REMOTEAS}) - Status</name><type>DEPENDENT</type><key>ssh.run[{#PEERNAME}-status,,{$MIKROTIK_SSH_PORT},]</key><delay>0</delay><history>{$HISTORY}</history><trends>0</trends><value_type>TEXT</value_type><applications><application><name>BGP</name></application></applications><preprocessing><step><type>JSONPATH</type><params>$[&quot;{#PEERNAME}&quot;].STATE</params></step></preprocessing><master_item><key>ssh.run[BGP - Peer JSON,,{$MIKROTIK_SSH_PORT},]</key></master_item><trigger_prototypes><trigger_prototype><expression>{str(established)}=0</expression><name>Peer {#PEERNAME} not established</name><priority>DISASTER</priority></trigger_prototype></trigger_prototypes></item_prototype></item_prototypes></discovery_rule></discovery_rules><macros><macro><macro>{$MIKROTIK_SSH_PASS}</macro><value>1111</value></macro><macro><macro>{$MIKROTIK_SSH_PORT}</macro><value>22</value></macro><macro><macro>{$MIKROTIK_SSH_USER}</macro><value>mikmon</value></macro></macros></template></templates></zabbix_export>
