Monitoramento de Rede com Zabbix e Grafana para ISP
Voce nao pode gerenciar o que nao monitora. Em um provedor de internet, monitoramento e a diferenca entre descobrir que o link caiu quando os clientes ligam reclamando, ou receber um alerta no Telegram 30 segundos apos a queda e ja estar agindo.
Neste guia, vamos montar uma stack de monitoramento completa com Zabbix (coleta e alertas) + Grafana (visualizacao), otimizada para a realidade de ISPs brasileiros.
Arquitetura recomendada
# Stack de monitoramento para ISP
[Equipamentos] [Servidores] [Servicos]
MikroTik ---------> Zabbix --------> Alertas Telegram
Huawei -----------> Server --------> Grafana Dashboards
OLTs -------------> (SNMP/Agent) --> Relatorios
Switches --------->
Servidores ------->
# Hardware minimo (ate 500 hosts monitorados)
# - 4 vCPU, 8 GB RAM, 100 GB SSD
# - Ubuntu 22.04 ou Debian 12Instalacao do Zabbix 7.0 LTS
# Instalar repositorio Zabbix 7.0 LTS
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-1+ubuntu22.04_all.deb
dpkg -i zabbix-release_7.0-1+ubuntu22.04_all.deb
apt update
# Instalar componentes
apt install zabbix-server-mysql zabbix-frontend-php \
zabbix-apache-conf zabbix-sql-scripts zabbix-agent2
# Criar banco de dados
mysql -u root -p <<'SQL'
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'SenhaZabbix2026!';
GRANT ALL ON zabbix.* TO 'zabbix'@'localhost';
SET GLOBAL log_bin_trust_function_creators = 1;
SQL
# Importar schema
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | \
mysql --default-character-set=utf8mb4 -u zabbix -p zabbix
# Configurar senha do banco
sed -i 's/# DBPassword=/DBPassword=SenhaZabbix2026!/' /etc/zabbix/zabbix_server.conf
# Iniciar servicos
systemctl restart zabbix-server zabbix-agent2 apache2
systemctl enable zabbix-server zabbix-agent2 apache2Templates SNMP para equipamentos ISP
MikroTik (RouterOS)
O Zabbix ja vem com template nativo para MikroTik. Para ativar SNMP no RouterOS:
# Habilitar SNMP no MikroTik
/snmp
set enabled=yes contact="noc@provedor.com.br" location="POP-Central"
/snmp community
set [ find default=yes ] name=SuaCommunity read-access=yes write-access=no
# Restringir acesso SNMP ao servidor Zabbix
/snmp community
set 0 addresses=172.20.1.242/32Metricas coletadas pelo template padrao:
- Trafego por interface (bps in/out)
- CPU usage por core
- Memoria usada/livre
- Temperatura
- Voltagem
- Sessoes PPPoE ativas
- Uptime
- Versao firmware
Huawei (NE8000, S5732)
# Habilitar SNMP v2c no Huawei
snmp-agent
snmp-agent sys-info version v2c
snmp-agent community read SuaCommunity acl 2001
snmp-agent trap enable
# ACL para restringir
acl 2001
rule permit source 172.20.1.242 0.0.0.0Para Huawei, importe templates da comunidade Zabbix ou crie custom com OIDs especificos para NE8000 (sessoes BNG, tabela NAT, etc).
OLTs (ZTE, Datacom)
OLTs precisam de templates customizados para monitorar:
- Sinal optico por ONU (Rx/Tx dBm)
- Status online/offline de cada ONU
- Trafego por porta PON
- Temperatura do chassis
- Alarmes (LOS, dying gasp)
# Exemplo: OID para sinal Rx de ONU na ZTE C320
# .1.3.6.1.4.1.3902.1082.500.10.2.3.3.1.2.{ifIndex}.{onuIndex}
# Discovery rule SNMP para auto-detectar ONUs
# Key: onu.discovery
# OID: .1.3.6.1.4.1.3902.1082.500.10.2.2.3.1.1Resolva isso automaticamente com NATVault
Teste gratis por 14 dias. Sem cartao de credito.
Comecar teste gratisInstalacao do Grafana
# Instalar Grafana OSS
apt install -y apt-transport-https software-properties-common
wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key
echo "deb [signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com stable main" \
> /etc/apt/sources.list.d/grafana.list
apt update
apt install grafana
systemctl enable grafana-server
systemctl start grafana-server
# Acesso: http://servidor:3000 (admin/admin)Conectar Grafana ao Zabbix
- Instalar plugin:
grafana-cli plugins install alexanderzobnin-zabbix-app - Reiniciar Grafana:
systemctl restart grafana-server - Em Configuration > Data Sources, adicionar Zabbix
- URL:
http://localhost/api_jsonrpc.php - User/Password do Zabbix API
Dashboards essenciais para ISP
Dashboard 1: Visao geral da rede
- Mapa topologico com status dos equipamentos (verde/amarelo/vermelho)
- Trafego total de uplinks (Gbps)
- Top 10 interfaces por utilizacao
- Numero de assinantes PPPoE online
- Alertas ativos
Dashboard 2: BRAS/Roteadores
- CPU e memoria por roteador
- Sessoes PPPoE ativas vs capacidade
- Trafego por interface de uplink
- BGP session status
- Connection tracking (CGNAT entries)
Dashboard 3: OLTs e FTTH
- ONUs online vs total provisionadas
- Sinal optico medio por porta PON
- ONUs com sinal abaixo do limiar (-25 dBm)
- Alarmes de fibra ativos
- Trafego por porta PON
Dashboard 4: Servidores e servicos
- CPU, RAM, disco de cada servidor
- Status dos containers Docker
- Latencia RADIUS (tempo de resposta)
- Status DNS (resolucoes por segundo)
- Ingestao de logs CGNAT (events/segundo)
Alertas via Telegram
# Configurar media type Telegram no Zabbix
# Administration > Media types > Telegram
# Bot Token: seu-token-bot
# Parse mode: HTML
# Exemplo de trigger e acao:
# Trigger: Link uplink down
# Expression: last(/MikroTik CCR/net.if.status[ether1-wan])=2
# Severity: Disaster
# Mensagem de alerta customizada:
# Assunto: {TRIGGER.STATUS}: {TRIGGER.NAME}
# Corpo:
# 🔴 {TRIGGER.NAME}
# Host: {HOST.NAME} ({HOST.IP})
# Severidade: {TRIGGER.SEVERITY}
# Desde: {EVENT.DATE} {EVENT.TIME}
# Valor atual: {ITEM.LASTVALUE}Triggers essenciais para ISP
| Trigger | Severidade | Condicao |
|---|---|---|
| Link de uplink down | Disaster | Interface status = down |
| CPU BRAS > 90% | High | avg(5m) > 90 |
| Sessoes PPPoE caindo | High | change(5m) < -100 |
| OLT unreachable | Disaster | ICMP loss = 100% |
| Sinal ONU critico | Warning | Rx power < -27 dBm |
| Disco servidor > 90% | Warning | pused > 90 |
| RADIUS nao responde | High | net.tcp.service[radius] = 0 |
| BGP session down | Disaster | bgp peer state != established |
| NATVault sem ingestao | High | No data for 10m |
Dicas de otimizacao
- SNMP polling interval: 60s para metricas normais, 30s para interfaces criticas, 300s para inventario
- History storage: 7 dias para dados brutos, 365 dias para trends (agregados)
- Housekeeping: configure para rodar fora do horario de pico
- Proxies: se tiver POPs remotos, use Zabbix Proxy local para reduzir trafego WAN
- Templates linkados: nao duplique configs — use templates hierarquicos
Resolva isso automaticamente com NATVault
Teste gratis por 14 dias. Sem cartao de credito.
Comecar teste gratisPerguntas Frequentes
Zabbix ou PRTG para provedor?
Zabbix, sem duvida. E gratuito (open source), escala para milhares de hosts, tem comunidade enorme no Brasil e integracao nativa com Grafana. PRTG e bom mas caro (licenca por sensor) e menos flexivel para customizacoes de ISP.
Preciso de Grafana se ja tenho Zabbix?
Zabbix tem dashboards proprios que melhoraram muito na versao 7.0. Porem, Grafana oferece visualizacoes mais bonitas e flexiveis, ideal para TV de NOC e apresentacoes. A combinacao dos dois e o padrao do mercado ISP.
SNMPv2c ou SNMPv3?
SNMPv3 e mais seguro (autenticacao + encriptacao), mas mais complexo de configurar. Para redes internas (management VLAN isolada), SNMPv2c com community nao-padrao e ACL restritiva e aceitavel. Para equipamentos acessiveis via internet, use SNMPv3 obrigatoriamente.
Quanto de armazenamento o Zabbix consome?
Para 200 hosts com 50 items cada, polling de 60s, 7 dias de history e 365 dias de trends: ~20-30 GB. Para 1.000 hosts: ~100-150 GB. Use TimescaleDB como backend para melhor performance com grandes volumes.