Guia Completo de Monitoramento (ER605 + Prometheus)

1. Configuração no Roteador (ER605)

Vá para System Tools > SNMP:

  • SNMPv3: Marque a caixa Enable.
  • Username: Insira o usuário (ex: omada).
  • Password: Insira sua senha de acesso (ex: SENHA_AQUI).
  • Clique em Save.

[!NOTE]
O roteador assume internamente o protocolo MD5 e o nível authNoPriv por padrão nessa interface simplificada, o que casa perfeitamente com a sua configuração do snmp.yml.

2. Arquivo Principal: prometheus.yml (Inteiro)

Este arquivo orquestra a coleta de dados de todos os seus serviços no homelab.

global:
  scrape_interval: 15s 
  evaluation_interval: 15s 

scrape_configs:
  # Monitoramento do próprio Prometheus
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]
        labels:
          app: "prometheus"

  # Monitoramento do Roteador TP-Link Omada (SNMP)
  - job_name: "omada-router"
    static_configs:
      - targets:
        - 192.168.0.1  # IP real do seu roteador ER605
    metrics_path: /snmp
    params:
      auth: [omada_v3]
      module: [omada_full]
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 127.0.0.1:9116  # IP do seu Mini PC onde o snmp_exporter roda

  # Monitoramento de Latência e Disponibilidade (Ping)
  - job_name: "blackbox_icmp"
    metrics_path: /probe
    params:
      module: [icmp]
    static_configs:
      - targets:
          - 8.8.8.8
          - 1.1.1.1
          - 192.168.0.1
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - source_labels: [__param_target]
        target_label: target
      - target_label: __address__
        replacement: 127.0.0.1:9115

3. Arquivo de Tradução: snmp.yml (Inteiro e Sem Cortes)

Este é o mapeamento completo dos OIDs para CPU, Memória e interfaces de 64 bits.

modules:
  omada_full:
    walk:
      - 1.3.6.1.2.1.1           # System
      - 1.3.6.1.2.1.2           # IF-MIB (interfaces)
      - 1.3.6.1.2.1.31.1.1      # IF-MIB HC (64-bit + ifName)
      - 1.3.6.1.2.1.25.3.3.1.2  # hrProcessorLoad (CPU)
      - 1.3.6.1.2.1.25.2.3.1    # hrStorageTable (RAM/flash/etc)

    get:
      - 1.3.6.1.2.1.1.3.0       # sysUpTime

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

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

      # MEMORY / STORAGE (HOST-RESOURCES-MIB)
      - 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

      # INTERFACES (IF-MIB)
      - 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

      # TRAFFIC 64-bit (IF-MIB::ifXTable)
      - 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: "omada"
    auth_protocol: MD5
    password: "SUA_SENHA_AQUI"

4. Arquivo de Probes: blackbox.yml (Inteiro e Sem Cortes)

Todos os módulos necessários para testar sua rede e serviços.

modules:
  http_2xx:
    prober: http
    http:
      preferred_ip_protocol: "ip4"
  http_post_2xx:
    prober: http
    http:
      method: POST
  tcp_connect:
    prober: tcp
  pop3s_banner:
    prober: tcp
    tcp:
      query_response:
        - expect: "^+OK"
      tls: true
      tls_config:
        insecure_skip_verify: false
  grpc:
    prober: grpc
    grpc:
      tls: true
      preferred_ip_protocol: "ip4"
  grpc_plain:
    prober: grpc
    grpc:
      tls: false
      service: "service1"
  ssh_banner:
    prober: tcp
    tcp:
      query_response:
        - expect: "^SSH-2.0-"
        - send: "SSH-2.0-blackbox-ssh-check"
  ssh_banner_extract:
    prober: tcp
    timeout: 5s
    tcp:
      query_response:
        - expect: "^SSH-2.0-([^ -]+)(?: (.*))?$"
          labels:
            - name: ssh_version
              value: "${1}"
            - name: ssh_comments
              value: "${2}"
  irc_banner:
    prober: tcp
    tcp:
      query_response:
        - send: "NICK prober"
        - send: "USER prober prober prober :prober"
        - expect: "PING :([^ ]+)"
          send: "PONG ${1}"
        - expect: "^:[^ ]+ 001"
  icmp:
    prober: icmp
  icmp_ttl5:
    prober: icmp
    timeout: 5s
    icmp:
      ttl: 5
  http_3xx:
    prober: http
    http:
      preferred_ip_protocol: "ip4"
      enable_http3: true
      enable_http2: false
      valid_http_versions: ["HTTP/3.0"]
  postgresql:
    prober: tcp
    tcp:
      query_response:
        - send: !!binary AAAACATSFi8= 
        - expect_bytes: S 
        - starttls: true

Leave a Reply