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 dosnmp.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

