Спасибо, что опубликовали это! У меня уже был скрипт, который запускал тест пропускной способности (BW test) каждые 5 минут, но тогда я просто использовал SNMP, чтобы «схватить» результаты (то есть SNMP-трафик с коротким интервалом и поиск пиков). Я могу добавить это — для некоторых своих скриптов на mt один из способов получить значение переменной (или результат скрипта), если это число (возможно, только целое — не уверен), — это присвоить значение переменной имени Simple Queue. А потом через SNMP можно вытащить значение имени этой очереди (и, соответственно, построить график по переменной скрипта). Я использую это для графиков количества активных VPN-сессий на моем mt VPN-сервере (или, например, для SNMP-графиков текущего количества «открытых/отслеживаемых NAT-соединений» через /ip firewall connections print count).
P.S. У меня ещё один такой скрипт, настроенный для SNMP-графика значения /ip neighbor count — ниже скрипт, который я написал для этой задачи. Я собираюсь модифицировать ваш скрипт, чтобы попытаться сделать SNMP-график результатов запланированных BW тестов — если получится, выложу через несколько часов. У меня просто одна запись в scheduler, которая запускается каждые 5 минут:
Код:
/queue simple set [find comment="SNMPget_vpnACTIVEconnections_Count_Holder"] name=[/ppp active print count-only]
Или экспорт:
/system scheduler
add interval=4m name=queueIPneighbor on-event="/queue simple set [find comment=\"SNMPget_vpnACTIVEconnections_Count_Holder\"] name=[/ppp active print count-only]" policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon start-time=startup
Вам нужно создать простую очередь, чтобы хранить это значение, можно задать disabled=yes (затем использовать /queue simple print oid, чтобы получить её SNMP OID для опроса).
P.S.2 — ну вот, быстро и просто! Конечно, всю основную работу проделал автор темы — vader7071. Я просто удалил пару строк и добавил несколько, он сделал тяжёлую работу!
Нужно создать 2 отключённые simple queues с именами: bwTX и bwRX (затем через /queue simple print oid взять oid параметра «name=» каждой из этих двух очередей и вставить в ваш SNMP графический инструмент, я использую PRTG). И, конечно, указать IP вашего BW тест-сервера (именно IP, а не DNS). Я использую его переменные txcB / rxcB, так как на сайтах у меня скорости в мегабитах. Если нужно измерять в килобитах или ниже, можно подкорректировать переменные (или использовать прямой вывод из bw-test, например $txc, но убрать деление на «/1000»).
{
:local txc
:local txcA
:local txcB
:local txcC
:local rxc
:local rxcA
:local rxcB
:local rxcC
:local rxta
:local rxtaA
:local rxtaB
:local rxtaC
:local txta
:local txtaA
:local txtaB
:local txtaC
/tool bandwidth-test x.x.x.x protocol=tcp direction=both duration=5s do={
:set txcA ($"tx-current" / 1000)
:set txcB ($txcA / 1000 * 1000)
:set txcC ($txcA - $txcB)
:set txcB ($txcB / 1000)
:set txc "$txcB.$txcC"
:set rxcA ($"rx-current" / 1000)
:set rxcB ($rxcA / 1000 * 1000)
:set rxcC ($rxcA - $rxcB)
:set rxcB ($rxcB / 1000)
:set rxc "$rxcB.$rxcC"
:set rxtaA ($"rx-total-average" / 1000)
:set rxtaB ($rxtaA / 1000 * 1000)
:set rxtaC ($rxtaA - $rxtaB)
:set rxtaB ($rxtaB / 1000)
:set rxta "$rxtaB.$rxtaC"
:set txtaA ($"tx-total-average" / 1000)
:set txtaB ($txtaA / 1000 * 1000)
:set txtaC ($txtaA - $txtaB)
:set txtaB ($txtaB / 1000)
:set txta "$txtaB.$txtaC"
}
#:log warning "rxta:"
#:log warning ($rxtaB)
#:log warning "txcB:"
#:log warning ($txcB)
/queue simple set [find comment="bwRX"] name=($rxtaB)
/queue simple set [find comment="bwTX"] name=($txcB)
}