Medindo velocidade de link MPLS via IPERF no FORTIGATE

IPERF FORTIGATE

Published on December 2, 2025

Como surgiu essa necessidade

Essa necessidade surgiu de uma demanda de testar se a operadora estava entregando a banda correta, depois de alguns episódios de unidades com velocidade abaixo da contratada, foi percebido essa necessidade.

Quais as opções disponíveis

Poderíamos realizar esses testes manualmente, utilizando um host no local e um na sede ou poderíamos utilizar uma ferramenta da própria fabricante (SD-WAN Network Monitor). Ao testar a ferramenta da própria fabricante foi percebido que os testes eram feitos em outra região e dependiam dos links de internet para realizar a medição, dessa forma não mostravam o valor real.

Construindo a automação de Testes

  • Criando o concentrador do IPERF: Foi criado dentro de um Servidor Windows. Tentamos no firewall principal, mas esbarramos em algumas limitações.

  • Criando o script no Fortigate das filiais: Foi utilizado o seguinte script no CLI do Fortigate:

FortiOS Auto-ScriptCopiar

config system auto-script
edit "TESTEBANDA-UP"
    set interval 43000
    set repeat 0
    set start auto
    set script "
diagnose traffictest server-intf wan1
diagnose traffictest client-intf wan1
diagnose traffictest port 5201
diagnose traffictest run -c IP_DO_CONTRADOR_IPERF -P 10
execute auto-script backup tftp TESTEBANDA-UP IP.DO.SERVIDOR.IPERF
"
next
edit "TESTEBANDA-DOWN"
    set interval 43320
    set repeat 0
    set start auto
    set script "
diagnose traffictest server-intf wan1
diagnose traffictest client-intf wan1
diagnose traffictest port 5201
diagnose traffictest run -c IP_DO_CONTRADOR_IPERF -R -P 10
execute auto-script backup tftp TESTEBANDA-UP IP.DO.SERVIDOR.IPERF
"
next
end
  • Pegando o Arquivo gerado: Foi criado no mesmo servidor do concentrador um de TFTP.

  • Resultado Pronto: Poderíamos parar por aqui, dessa forma já temos nossos arquivos com testes realizados sendo enviados para o servidor, mas para ter a automação de alerta criamos um monitoramento externo via Zabbix.

  • Transformando o arquivo para o Zabbix: Foi utilizado o seguinte Bat script para pegar os valores e retornar numéricos inteiros para o Zabbix:

Bat ScriptCopiar

@echo off
setlocal

@echo off
setlocal enabledelayedexpansion

set "LOGDIR=C:TFTP-Root"
set "FILEPREFIX=TESTEBANDA-UNIDADE-DOWN_FG"
set "SEARCHSTRING=Mbits/sec"

rem --- Bloco para encontrar o arquivo mais recente ---
set "LATESTFILE="
for /f "delims=" %%a in ('dir /b /o-d "%LOGDIR%%FILEPREFIX%*"') do (
  set "LATESTFILE=%%a"
  goto :foundfile
)

rem Se o arquivo não for encontrado, envia erro para stderr e termina
(echo Erro: Arquivo de log nao encontrado.) >&2
goto :eof

:foundfile
rem --- Lógica para extrair o valor de forma robusta ---
set "BITRATE="

for /f "tokens=*" %%L in ('findstr /i "%SEARCHSTRING%" "%LOGDIR%%LATESTFILE%"') do (
    set "previous_token="
    for %%T in (%%L) do (
        if /i "%%T" equ "%SEARCHSTRING%" (
            set "BITRATE=!previous_token!"
        )
        set "previous_token=%%T"
    )
)

rem --- Saída Final ---
rem Se o valor foi encontrado, exibe SOMENTE o número.
rem Caso contrário, envia uma mensagem para o stream de erro (stderr).
if defined BITRATE (
  echo %BITRATE%
) else (
  (echo Erro: Valor do Bitrate nao encontrado no arquivo.) >&2
)

endlocal
  • Lendo os dados com o Zabbix: Agora dentro Zabbix foi configurado um external monitor que busca o arquivo .bat para ter acesso aos valores do teste, dessa forma é possível gerar gráficos e criar trigger e envio de alertas.

  • Parâmetros no do arquivo zabbix_agentd.conf:

Userparameter zabbix_agentd.confCopiar

UserParameter=coleta_valor_down,C:Program FilesZabbix Agentscriptscoleta_valor_down.bat
UserParameter=coleta_valor_up,C:Program FilesZabbix Agentscriptscoleta_valor_up.bat
  • Tipo de Item do Zabbix:

Parent itens Config host Zabbix interfaceCopiar

Type: Zabbix Agent
Key: coleta_valor_down
Type of information: Numeric(float)
Units: Mbits/sec