Chtěl jsem začít pomocí Zabbixu monitorovat routery s RouterOS
Mikrotik. Jednou z možností je si vytvořit template z textového výstupu příkazu
snmpwalk pomoci patřičného
perlového scriptu. Tím, ale získáme template pro dané zařízení, což asi nechceme. Pro univerzálnější použití je vhodné si vytvořit template pro obecné užití na routerech Mikrotik.
Pod ruku se mi dostalo velké spektrum verzí Mikrotiků. Nejstarší byla verze 3.30, dále 4.x a aktuální 5.x verze. Nutno dodat, že implementace
SNMP se s verzí MK dost odlišuje. Snažil jsem se vytvořit Template pro sekci
/system resources, vycházel jsem z těchto hodnot. Byl jsem nucen si vytvořit template pro
4kovou verzi a pro
5kovou.
Zabbix umí používat jak OID číselné tak i textové. Pro textové je třeba mít v systému doinstalovanou sadu MIB od
IETF obecných definičních souborů. Pak můžeme lépe získat některé informace o zařízení.
aptitude install snmp-mibs-downloader
snmpwalk -On -c public -v 2c 10.10.1.2 IF-MIB::ifType
.1.3.6.1.2.1.2.2.1.3.1 = INTEGER: ethernetCsmacd(6)
.1.3.6.1.2.1.2.2.1.3.2 = INTEGER: ethernetCsmacd(6)
.1.3.6.1.2.1.2.2.1.3.3 = INTEGER: ethernetCsmacd(6)
.1.3.6.1.2.1.2.2.1.3.4 = INTEGER: ieee80211(71)
.1.3.6.1.2.1.2.2.1.3.5 = INTEGER: ieee80211(71)
.1.3.6.1.2.1.2.2.1.3.6 = INTEGER: ieee80211(71)
Tento Mikrotik má tři ethery a tři wlan karty.
snmpwalk -c public -v 2c 10.10.1.2 IF-MIB::ifNumber
IF-MIB::ifNumber.0 = INTEGER: 6
snmpwalk -On -c public -v 2c 10.10.1.2 .1.3.6.1.2.1.2.1
.1.3.6.1.2.1.2.1.0 = INTEGER: 6
Zde je názorná ukázka ja se dá použít jak textový název OID tak jmenný dle definice MIB.
snmpwalk -c public -v 2c 10.10.1.2 IF-MIB::ifTable
IF-MIB::ifIndex.1 = INTEGER: 1
IF-MIB::ifIndex.2 = INTEGER: 2
IF-MIB::ifIndex.3 = INTEGER: 3
IF-MIB::ifIndex.4 = INTEGER: 4
IF-MIB::ifIndex.5 = INTEGER: 5
IF-MIB::ifIndex.6 = INTEGER: 6
IF-MIB::ifDescr.1 = STRING: ether1
IF-MIB::ifDescr.2 = STRING: ether2
IF-MIB::ifDescr.3 = STRING: ether3
IF-MIB::ifDescr.4 = STRING: ap54a
IF-MIB::ifDescr.5 = STRING: ap54b
IF-MIB::ifDescr.6 = STRING: ap54c
IF-MIB::ifType.1 = INTEGER: ethernetCsmacd(6)
IF-MIB::ifType.2 = INTEGER: ethernetCsmacd(6)
IF-MIB::ifType.3 = INTEGER: ethernetCsmacd(6)
IF-MIB::ifType.4 = INTEGER: ieee80211(71)
IF-MIB::ifType.5 = INTEGER: ieee80211(71)
IF-MIB::ifType.6 = INTEGER: ieee80211(71)
IF-MIB::ifMtu.1 = INTEGER: 1500
IF-MIB::ifMtu.2 = INTEGER: 1500
...
OID
IF-MIB::ifTable nám vypíše veškeré informace o síťových interface, název, rychlost, MTU, chyby, status atd. Více je pěkně popsáno
zde.
Mikrotik má i svůj
MIB, který když nepřidáme do správného adresáře, objeví se nám tato hláška.
snmpwalk -Os -c public -v 2c 10.10.1.2 MIKROTIK-MIB::mikrotik
MIB search path: /home/smejdil/.snmp/mibs:/usr/share/mibs/site:/usr/share/snmp/mibs:/usr/share/mibs/iana:/usr/share/mibs/ietf:/usr/share/mibs/netsnmp
Cannot find module (MIKROTIK-MIB): At line 1 in (none)
MIKROTIK-MIB::mikrotik: Unknown Object IdentifierTento soubor
MIKROTIK-MIB.mib musíme umístit do některé z těchto cest.
snmpwalk -Os -c public -v 2c 10.10.1.2 MIKROTIK-MIB::mikrotik
snmpwalk -Os -c public -v 2c 10.10.1.2 MIKROTIK-MIB::mtxrSystem
snmpwalk -Os -c public -v 2c 10.10.1.2 MIKROTIK-MIB::mtXRouterOs
snmpwalk -Os -c public -v 2c 10.10.1.2 MIKROTIK-MIB::mtxrWireless
snmpwalk -Os -c public -v 2c 10.10.1.2 MIKROTIK-MIB::mtxrLicense
snmpwalk -Os -c public -v 2c 10.10.1.2 MIKROTIK-MIB::mtxrScripts
Takto se dostaneme k hodotám popisovaných v MIBu.
Nutno ještě dodat, že při snaze monitorovat interface několika mikrotiků, narážel jsem na nejednotnost ifIndex hodnot. U zařízení, kde je např. 6 interface bych očekával, že ifIndexy budou 1,2,3,4,5,6, ale u některých Mikrotiků jsem běžně vídal ifIndexy 4,7,8,12,15,16, asi je to způsobeno přidáváním a ubíráním karet. Jeden 1U x86 router s Mikrotik 5.x měl 4 interface a ifIndex byl 96,97,98,99, což mě skutečně zaskočilo. Řešením je mít template ifIndex_1 a ten si dle potřeb naklonovat a upravit dle hodnoty požadované v konkrétním routeru.
Zabbix umožňuje vytvořit Template_RB443, který tvoří dílčí Template. např. CPU, Ifindex1-6 atd. Má zkušenost se SNMP a Mikrotikama je dosti rozpačitá :-)