DEV Community

Rodrigo
Rodrigo

Posted on

🧠 Observabilidade de Rede no ER605: Monitoramento com SNMP

🔍 O que esse arquivo faz

Esse YAML configura o SNMP Exporter para coletar métricas do seu ER605.

👉 Ele define:

  • quais OIDs coletar
  • como coletar
  • como transformar em métricas Prometheus

⚙️ Fluxo completo

ER605 (SNMP)
   ↓
SNMP Exporter (:9116)
   ↓
Prometheus
   ↓
Grafana
Enter fullscreen mode Exit fullscreen mode

👉 O roteador não expõe métricas HTTP
👉 O exporter faz essa tradução


📦 Entendendo o módulo

modules:
  omada_full:
Enter fullscreen mode Exit fullscreen mode

👉 Isso define um perfil de coleta

No Prometheus você chama assim:

params:
  module: [omada_full]
Enter fullscreen mode Exit fullscreen mode

🔁 WALK vs GET

WALK

walk:
Enter fullscreen mode Exit fullscreen mode

👉 Varre árvores SNMP inteiras
👉 Usado para tabelas (interfaces, memória)


GET

get:
Enter fullscreen mode Exit fullscreen mode

👉 Consulta direta de um OID
👉 Mais leve


🧠 OIDs (explicação prática)

🖥️ System

1.3.6.1.2.1.1
Enter fullscreen mode Exit fullscreen mode
  • uptime
  • informações básicas do device

⚡ CPU

hrProcessorLoad
Enter fullscreen mode Exit fullscreen mode

👉 Uso de CPU por core

avg(hrProcessorLoad)
Enter fullscreen mode Exit fullscreen mode

🧠 Memória

hrStorageTable
Enter fullscreen mode Exit fullscreen mode

👉 Estrutura padrão SNMP

Cálculo:

(hrStorageUsed / hrStorageSize) * 100
Enter fullscreen mode Exit fullscreen mode

🌐 Interfaces

ifOperStatus
Enter fullscreen mode Exit fullscreen mode
  • 1 = up
  • 2 = down

👉 Essencial pra detectar queda de link


🚀 Tráfego (parte mais importante)

ifHCInOctets
ifHCOutOctets
Enter fullscreen mode Exit fullscreen mode

👉 64-bit (correto)

Cálculo:

rate(ifHCInOctets[1m]) * 8
Enter fullscreen mode Exit fullscreen mode

👉 bits por segundo


🔐 SNMPv3 (segurança)

version: 3
security_level: authNoPriv
Enter fullscreen mode Exit fullscreen mode

👉 Autenticado, sem criptografia


⚠️ Observação importante

auth_protocol: MD5
Enter fullscreen mode Exit fullscreen mode

👉 No ER605:

  • SHA → costuma falhar
  • MD5 → funciona estável

📊 Integração com Prometheus

- job_name: "omada-router"
  metrics_path: /snmp
  params:
    auth: [omada_v3]
    module: [omada_full]
  static_configs:
    - targets:
      - <router_ip>
Enter fullscreen mode Exit fullscreen mode

📈 O que você passa a enxergar

Com isso você ganha:

Infra

  • uptime
  • CPU
  • memória

Rede

  • tráfego real por interface
  • erros
  • descartes
  • status de link

Diagnóstico real

  • saturação
  • perda de pacote indireta
  • gargalos

🧠 Boas práticas (isso aqui é ouro)

✔️ Sempre usar 64-bit

  • use ifHC*
  • nunca ifInOctets

✔️ Criar alertas úteis

Interface down

ifOperStatus == 2
Enter fullscreen mode Exit fullscreen mode

Erros de rede

rate(ifInErrors[5m]) > 10
Enter fullscreen mode Exit fullscreen mode

Saturação

rate(ifHCOutOctets[1m]) * 8 > 800000000
Enter fullscreen mode Exit fullscreen mode

🧠 Caso real - Importância do Monitoramento do Roteador (ER605)

Ao analisar os gráficos acima, é possível observar um comportamento anômalo no consumo de CPU do roteador.

A linha amarela, que representa o uso de CPU, apresentava um padrão inconsistente, com oscilações frequentes e sem uma causa aparente — mesmo sem qualquer alteração nas regras, configurações ou carga de tráfego do ambiente.

Após investigação, foi identificado que esse comportamento estava diretamente relacionado à versão do firmware em uso.

🔍 Diagnóstico

  • Consumo de CPU elevado e instável
  • Oscilações constantes sem mudança de configuração
  • Ausência de correlação com tráfego ou regras de firewall

🛠️ Ação Realizada

  • Atualização do firmware para a versão mais recente disponível

✅ Resultado

Após a atualização:

  • O consumo de CPU estabilizou
  • Redução significativa da utilização (~9%)
  • Eliminação das oscilações anormais
  • Comportamento previsível e consistente

Esse cenário evidencia a importância do monitoramento contínuo de dispositivos de rede.

Sem visibilidade, esse tipo de problema poderia passar despercebido, impactando:

  • performance da rede
  • latência
  • estabilidade geral do ambiente

Além disso, reforça que nem todo problema está relacionado à carga ou configuração — bugs ou limitações de firmware também podem ser a causa raiz.


🎯 Conclusão

Esse setup tira seu roteador do modo:

“tá funcionando?”

e leva pra:

“como está funcionando?”

👉 Isso é observabilidade de verdade.


Arquivo completo:

modules:
  omada_full:
    walk:
      - 1.3.6.1.2.1.1
      - 1.3.6.1.2.1.2
      - 1.3.6.1.2.1.31.1.1
      - 1.3.6.1.2.1.25.3.3.1.2
      - 1.3.6.1.2.1.25.2.3.1

    get:
      - 1.3.6.1.2.1.1.3.0

    metrics:
      - name: sysUpTime
        oid: 1.3.6.1.2.1.1.3.0
        type: gauge

      - name: hrProcessorLoad
        oid: 1.3.6.1.2.1.25.3.3.1.2
        type: gauge
        indexes:
          - labelname: hrProcessorIndex
            type: gauge

      - name: hrStorageDescr
        oid: 1.3.6.1.2.1.25.2.3.1.3
        type: DisplayString
        indexes:
          - labelname: hrStorageIndex
            type: gauge

      - name: hrStorageAllocationUnits
        oid: 1.3.6.1.2.1.25.2.3.1.4
        type: gauge
        indexes:
          - labelname: hrStorageIndex
            type: gauge

      - name: hrStorageSize
        oid: 1.3.6.1.2.1.25.2.3.1.5
        type: gauge
        indexes:
          - labelname: hrStorageIndex
            type: gauge

      - name: hrStorageUsed
        oid: 1.3.6.1.2.1.25.2.3.1.6
        type: gauge
        indexes:
          - labelname: hrStorageIndex
            type: gauge

      - name: ifDescr
        oid: 1.3.6.1.2.1.2.2.1.2
        type: DisplayString
        indexes:
          - labelname: ifIndex
            type: gauge

      - name: ifType
        oid: 1.3.6.1.2.1.2.2.1.3
        type: gauge
        indexes:
          - labelname: ifIndex
            type: gauge

      - name: ifMtu
        oid: 1.3.6.1.2.1.2.2.1.4
        type: gauge
        indexes:
          - labelname: ifIndex
            type: gauge

      - name: ifSpeed
        oid: 1.3.6.1.2.1.2.2.1.5
        type: gauge
        indexes:
          - labelname: ifIndex
            type: gauge

      - name: ifAdminStatus
        oid: 1.3.6.1.2.1.2.2.1.7
        type: gauge
        indexes:
          - labelname: ifIndex
            type: gauge

      - name: ifOperStatus
        oid: 1.3.6.1.2.1.2.2.1.8
        type: gauge
        indexes:
          - labelname: ifIndex
            type: gauge

      - name: ifInErrors
        oid: 1.3.6.1.2.1.2.2.1.14
        type: counter
        indexes:
          - labelname: ifIndex
            type: gauge

      - name: ifOutErrors
        oid: 1.3.6.1.2.1.2.2.1.20
        type: counter
        indexes:
          - labelname: ifIndex
            type: gauge

      - name: ifInDiscards
        oid: 1.3.6.1.2.1.2.2.1.13
        type: counter
        indexes:
          - labelname: ifIndex
            type: gauge

      - name: ifOutDiscards
        oid: 1.3.6.1.2.1.2.2.1.19
        type: counter
        indexes:
          - labelname: ifIndex
            type: gauge

      - name: ifName
        oid: 1.3.6.1.2.1.31.1.1.1.1
        type: DisplayString
        indexes:
          - labelname: ifIndex
            type: gauge

      - name: ifAlias
        oid: 1.3.6.1.2.1.31.1.1.1.18
        type: DisplayString
        indexes:
          - labelname: ifIndex
            type: gauge

      - name: ifHighSpeed
        oid: 1.3.6.1.2.1.31.1.1.1.15
        type: gauge
        indexes:
          - labelname: ifIndex
            type: gauge

      - name: ifHCInOctets
        oid: 1.3.6.1.2.1.31.1.1.1.6
        type: counter
        indexes:
          - labelname: ifIndex
            type: gauge

      - name: ifHCOutOctets
        oid: 1.3.6.1.2.1.31.1.1.1.10
        type: counter
        indexes:
          - labelname: ifIndex
            type: gauge

auths:
  omada_v3:
    version: 3
    security_level: authNoPriv
    username: <snmp_user>
    auth_protocol: MD5
    password: "<snmp_password>"
Enter fullscreen mode Exit fullscreen mode

Top comments (0)