Contadores SNMP de 32 bits estouram rápido em links grandes
Por que gráficos de tráfego mostram picos impossíveis ou buracos, e como resolver com contadores de 64 bits e tratamento de reinício.
Se o gráfico de tráfego de um link mostra picos impossíveis ou lacunas sem explicação, o problema muitas vezes está no contador SNMP usado na coleta.
O problema do contador de 32 bits
Os contadores clássicos de interface, ifInOctets e ifOutOctets, têm 32 bits. Eles chegam a pouco mais de 4,29 bilhões de octetos e voltam a zero. Em um link de 1 Gbps trafegando perto da capacidade, isso acontece em cerca de 34 segundos. Com coleta a cada 5 minutos, o contador pode dar a volta várias vezes entre duas leituras, e a diferença calculada não faz sentido.
A solução: contadores de 64 bits
A MIB de interfaces estendida (IF-MIB, ifXTable) traz ifHCInOctets e ifHCOutOctets, de 64 bits. Eles levariam séculos para estourar mesmo em links de 100 Gbps. Para qualquer interface acima de 100 Mbps, use sempre os contadores HC.
| Objeto | OID |
|---|---|
| ifHCInOctets | 1.3.6.1.2.1.31.1.1.1.6 |
| ifHCOutOctets | 1.3.6.1.2.1.31.1.1.1.10 |
| ifHighSpeed (Mbps) | 1.3.6.1.2.1.31.1.1.1.15 |
Como calcular a taxa
O contador é cumulativo. A taxa em bits por segundo vem da diferença entre duas leituras:
taxa_bps = (octetos_atual - octetos_anterior) * 8 / segundos_decorridos
Use o tempo real entre as coletas, e não o intervalo agendado. Coletas atrasam.
Trate o reinício do contador
Se o equipamento reinicia, o contador volta a zero. Quando o valor atual é menor que o anterior, descarte aquele intervalo em vez de calcular uma taxa negativa ou gigante.
Utilização e erros
Com a taxa e o ifHighSpeed, a utilização é a taxa dividida pela velocidade da interface. Some a isso ifInErrors, ifOutErrors e ifOperStatus, e o painel passa a mostrar a saúde do enlace, não só o tráfego.
Quer um dashboard assim para a sua rede? Veja a demonstração com dados simulados ou fale com a gente.