🧠 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

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

📦 Entendendo o módulo

modules:
  omada_full:

👉 Isso define um perfil de coleta

No Prometheus você chama assim:

params:
  module: [omada_full]

🔁 WALK vs GET

WALK

walk:

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

GET

get:

👉 Consulta direta de um OID
👉 Mais leve

🧠 OIDs (explicação prática)

🖥️ System

1.3.6.1.2.1.1
  • uptime
  • informações básicas do device

⚡ CPU

hrProcessorLoad

👉 Uso de CPU por core

avg(hrProcessorLoad)

🧠 Memória

hrStorageTable

👉 Estrutura padrão SNMP

Cálculo:

(hrStorageUsed / hrStorageSize) * 100

🌐 Interfaces

ifOperStatus
  • 1 = up
  • 2 = down

👉 Essencial pra detectar queda de link

🚀 Tráfego (parte mais importante)

ifHCInOctets
ifHCOutOctets

👉 64-bit (correto)

Cálculo:

rate(ifHCInOctets[1m]) * 8

👉 bits por segundo

🔐 SNMPv3 (segurança)

version: 3
security_level: authNoPriv

👉 Autenticado, sem criptografia

⚠️ Observação importante

auth_protocol: MD5

👉 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:
      - 

📈 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

Erros de rede

rate(ifInErrors[5m]) > 10

Saturação

rate(ifHCOutOctets[1m]) * 8 > 800000000

🎯 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: 
    auth_protocol: MD5
    password: ""
Total
0
Shares
Leave a Reply

Your email address will not be published. Required fields are marked *

Previous Post

Anthropic is having a month

Next Post

Mercor says it was hit by cyberattack tied to compromise of open-source LiteLLM project

Related Posts