Script Ping em Múltiplas Tabelas de Roteamento via Zabbix

Criada por Danilo Tomich, Modificado em Qui, 4 Set na (o) 10:48 AM por Danilo Tomich

?️ Manual – Ping em Múltiplas Tabelas de Roteamento via Zabbix

Neste exemplo, vamos criar dois scripts externos no Zabbix para realizar ping em diferentes tabelas de roteamento (VRF) no MikroTik, de forma separada.

Isso é útil, por exemplo, para:

  • Monitorar latência de cada link individual

  • Detectar perda de pacotes em rotas distintas

  • Gerar triggers por link específico


? Estrutura usada no exemplo

  • Tabelas de Roteamento:

    • main – Tabela principal

    • vrf-GUEST – Tabela secundária (VRF)

  • Objetivo:

    • Criar dois scripts:

      • ping_main.sh → ping na rota principal

      • ping_vrf.sh → ping via VRF secundária


? Caminho padrão para scripts externos no Zabbix

/usr/lib/zabbix/externalscripts

✏️ 1. Criar script ping_main.sh

nano /usr/lib/zabbix/externalscripts/ping_main.sh

Conteúdo do script:

#!/bin/bash # Script para coletar apenas o avg-rtt do ping na tabela principal (main) HOST=$1 USER="zabbix" PASS="senhaSSH" TARGET="8.8.8.8" RESULT=$(sshpass -p "$PASS" ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 ${USER}@${HOST} \ "/ping ${TARGET} count=3" 2>/dev/null | grep 'avg-rtt') AVG=$(echo "$RESULT" | sed -n 's/.*avg-rtt=\([0-9.]*\)ms.*/\1/p') if [[ -z "$AVG" ]]; then echo -1 else echo "$AVG" fi

✏️ 2. Criar script ping_vrf.sh

nano /usr/lib/zabbix/externalscripts/ping_vrf.sh

Conteúdo do script:

#!/bin/bash # Script para coletar apenas o avg-rtt do ping via VRF HOST=$1 USER="zabbix" PASS="senhaSSH" VRF_NAME="vrf-GUEST" TARGET="8.8.8.8" RESULT=$(sshpass -p "$PASS" ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 ${USER}@${HOST} \ "/ping ${TARGET} vrf=${VRF_NAME} count=3" 2>/dev/null | grep 'avg-rtt') AVG=$(echo "$RESULT" | sed -n 's/.*avg-rtt=\([0-9.]*\)ms.*/\1/p') if [[ -z "$AVG" ]]; then echo -1 else echo "$AVG" fi

? Observações importantes

  • Os campos USER e PASS devem ser de um usuário criado no MikroTik com permissão para SSH

  • O parâmetro count=3 define quantos pings serão feitos (pode aumentar, mas isso também aumenta o tempo de execução)

  • Se aumentar count, considere aumentar também o timeout do item no Zabbix


✅ Permissões

Garanta que os scripts estejam executáveis e com permissões corretas:

chmod +x /usr/lib/zabbix/externalscripts/ping_main.sh chmod +x /usr/lib/zabbix/externalscripts/ping_vrf.sh chown zabbix:zabbix /usr/lib/zabbix/externalscripts/ping_main.sh chown zabbix:zabbix /usr/lib/zabbix/externalscripts/ping_vrf.sh

? Reiniciar o serviço Zabbix

systemctl restart zabbix-server

? Teste via terminal

bash /usr/lib/zabbix/externalscripts/ping_main.sh 172.16.22.30 bash /usr/lib/zabbix/externalscripts/ping_vrf.sh 172.16.22.30

172.16.22.30 deve ser o IP de gerenciamento do MikroTik acessível via SSH


? Configurando no Zabbix Web

Criar item no host:

Configuration → Hosts → [seu host] → Items → Create item

Exemplo para ping_vrf.sh:

CampoValor
NamePing VRF GUEST RTT
TypeExternal check
Keyping_vrf.sh["172.16.22.30"]
Type of infoNumeric (float)
Unitsms
Update interval1m ou 5m
Timeout10s
History31d



Agora você pode usar esse item para:

  • Criar gráficos de latência

  • Gerar triggers de latência alta ou falha

  • Monitorar cada rota individualmente dentro do mesmo roteador



Exemplo no Grafana:



Este artigo foi útil?

Que bom!

Obrigado pelo seu feedback

Desculpe! Não conseguimos ajudar você

Obrigado pelo seu feedback

Deixe-nos saber como podemos melhorar este artigo!

Selecione pelo menos um dos motivos

Feedback enviado

Agradecemos seu esforço e tentaremos corrigir o artigo