IPv0 - Template Datacom DmOS
Visão Geral
Template desenvolvido para monitoramento de equipamentos Datacom com sistema operacional DmOS via SNMPv1/v2c, compatível com o Zabbix 7.2 ou superior.
Realiza o monitoramento completo de disponibilidade (ICMP), informações de sistema, interfaces de rede, CPU, memória, ventiladores (FANs), sensores de temperatura e fontes de alimentação (PSU), fazendo uso extensivo de Low-Level Discovery (LLD) para descoberta automática de componentes.
Equipamentos Testados
- Datacom DM4170
- Datacom DM4270
- Datacom DM4370
- Datacom DM4610
- Outros equipamentos Datacom com DmOS
Requisitos
MIBs
Para o correto funcionamento das coletas SNMP, é necessário que os arquivos de MIB do equipamento estejam presentes no servidor Zabbix. Copie as MIBs diretamente do equipamento com o comando DmOS:
copy mibs
Em seguida, disponibilize os arquivos no diretório de MIBs do Zabbix (geralmente /usr/share/snmp/mibs/ ou /etc/snmp/mibs/). As MIBs utilizadas por este template são:
SNMPv2-MIBIF-MIBDMOS-SYSMON-MIBDMOS-HW-MONITOR-MIB
Script Externo — PSU Discovery
A regra de descoberta de fontes de alimentação (PSU) depende de um script Python externo. Copie o arquivo dmos_hardware_monitor_mib_psu.py para o diretório de scripts externos do Zabbix:
# Ubuntu / Debian
cp dmos_hardware_monitor_mib_psu.py /usr/lib/zabbix/externalscripts/
chmod +x /usr/lib/zabbix/externalscripts/dmos_hardware_monitor_mib_psu.py
Versão Zabbix
| Versão | Suporte |
|---|---|
| 7.2 | ✅ Testado |
| 7.0+ | ✅ Compatível |
| 6.x | ⚠️ Não garantido |
Configuração
SNMP
Configure o host no Zabbix com interface SNMP apontando para o IP do equipamento. A macro {$SNMP_COMMUNITY} deve ser definida no host com a community correta:
| Macro | Valor padrão | Descrição |
|---|---|---|
{$SNMP_COMMUNITY} |
public |
Community SNMP do equipamento |
Filtros de Interface
As interfaces descobertas podem ser filtradas pelas seguintes macros. Altere os valores conforme necessário no host ou template:
| Macro | Valor padrão | Descrição |
|---|---|---|
{$NET.IF.IFNAME.MATCHES} |
^.*$ |
Regex de nomes de interface a incluir |
{$NET.IF.IFNAME.NOT_MATCHES} |
(^Software Loopback...|^NULL...|^[Ll]o...|docker...|br-...) |
Exclui loopbacks, docker e similares |
{$NET.IF.IFADMINSTATUS.MATCHES} |
^.* |
Status administrativo a incluir |
{$NET.IF.IFADMINSTATUS.NOT_MATCHES} |
^2$ |
Exclui interfaces administrativamente down |
{$NET.IF.IFOPERSTATUS.MATCHES} |
^u|^1 |
Status operacional a incluir |
{$NET.IF.IFOPERSTATUS.NOT_MATCHES} |
^6$ |
Exclui interfaces notPresent |
{$NET.IF.IFALIAS.MATCHES} |
.* |
Filtra por alias |
{$NET.IF.IFALIAS.NOT_MATCHES} |
CHANGE_IF_NEEDED |
Desabilitado por padrão |
{$NET.IF.IFDESCR.MATCHES} |
.* |
Filtra por descrição |
{$NET.IF.IFDESCR.NOT_MATCHES} |
CHANGE_IF_NEEDED |
Desabilitado por padrão |
{$NET.IF.IFTYPE.MATCHES} |
.* |
Filtra por tipo de interface |
{$NET.IF.IFTYPE.NOT_MATCHES} |
CHANGE_IF_NEEDED |
Desabilitado por padrão |
{$IFCONTROL} |
1 |
Habilita alertas de link down (0 = desabilita) |
Itens Coletados
Sistema (via SNMPv2-MIB)
| Item | OID | Intervalo | Retenção |
|---|---|---|---|
| System Contact | SNMPv2-MIB::sysContact.0 |
60 min | 90 dias |
| System Description | SNMPv2-MIB::sysDescr.0 |
60 min | 2 semanas |
| System Location | SNMPv2-MIB::sysLocation.0 |
60 min | 7 dias |
| System Name | SNMPv2-MIB::sysName.0 |
60 min | 2 semanas |
| System Object ID | 1.3.6.1.2.1.1.2.0 |
15 min | — |
| System Uptime | 1.3.6.1.2.1.1.3.0 |
60 min | 7 dias |
| SNMP Agent Availability | Interno Zabbix | — | 7 dias |
Disponibilidade (ICMP)
| Item | Chave | Intervalo | Retenção |
|---|---|---|---|
| ICMP Ping | icmpping |
padrão | 90 dias |
| ICMP Loss | icmppingloss |
padrão | 90 dias |
| ICMP Response Time | icmppingsec |
padrão | 90 dias |
Traps SNMP
| Item | Chave | Descrição |
|---|---|---|
| SNMP Traps (fallback) | snmptrap.fallback |
Coleta todos os traps SNMP sem mapeamento específico |
Regras de Descoberta (LLD)
1. SNMP Discovery — Network Interfaces
Chave: net.if.discovery
Tipo: SNMP Agent (IF-MIB)
Intervalo: 1 hora
Variáveis descobertas:
| Macro | Descrição |
|---|---|
{#IFNAME} |
Nome da interface |
{#IFALIAS} |
Alias/descrição da interface |
{#IFDESCR} |
Descrição do IF-MIB |
{#IFOPERSTATUS} |
Status operacional |
{#IFADMINSTATUS} |
Status administrativo |
{#IFTYPE} |
Tipo de interface |
{#SNMPINDEX} |
Índice SNMP |
Itens criados por interface:
| Item | OID | Intervalo | Unidade |
|---|---|---|---|
| Bits recebidos | ifHCInOctets |
3 min | bps |
| Bits enviados | ifHCOutOctets |
3 min | bps |
| Pacotes recebidos descartados | ifInDiscards |
3 min | — |
| Pacotes recebidos com erros | ifInErrors |
3 min | — |
| Pacotes enviados descartados | ifOutDiscards |
3 min | — |
| Pacotes enviados com erros | ifOutErrors |
3 min | — |
| Velocidade da interface | ifHighSpeed |
5 min | bps |
| Status operacional | ifOperStatus |
— | — |
| Tipo de interface | ifType |
1 hora | — |
Gráfico: Interface {#IFNAME}({#IFALIAS}): Network traffic
2. SNMP Discovery — CPU Core
Chave: snmp.discovery.cpu.core
Tipo: SNMP Agent (DMOS-SYSMON-MIB::cpuCoreFiveSecondsActive)
Intervalo: 60 min
Itens criados por core (1 e 5 minutos):
| Item | MIB | Unidade |
|---|---|---|
| Active CPU core | cpuCoreOneMinuteActive / cpuCoreFiveMinutesActive |
% |
| Interrupt CPU core | cpuCoreOneMinuteInterrupt / cpuCoreFiveMinutesInterrupt |
% |
| Nice CPU core | cpuCoreOneMinuteNice / cpuCoreFiveMinutesNIce |
% |
| Softirq CPU core | cpuCoreOneMinuteSoftirq / cpuCoreFiveMinutesSoftirq |
% |
| System CPU core | cpuCoreOneMinuteSystem / cpuCoreFiveMinutesSystem |
% |
| User CPU core | cpuCoreOneMinuteUser / cpuCoreFiveMinutesUser |
% |
| Wait CPU core | cpuCoreOneMinuteWait / cpuCoreFiveMinutesWait |
% |
Gráficos: CPU Core {#SNMPINDEX} Last 1 Minute e CPU Core {#SNMPINDEX} Last 5 Minutes
3. SNMP Discovery — CPU Load
Chave: snmp.discovery.cpu.load
Tipo: SNMP Agent (DMOS-SYSMON-MIB::cpuLoadFiveSecondsActive)
Intervalo: 60 min
Itens criados:
| Item | MIB | Intervalo | Unidade |
|---|---|---|---|
| Active CPU load last 1 minute | cpuLoadOneMinuteActive |
padrão | % |
| Active CPU load last 5 minutes | cpuLoadFiveMinutesActive |
5 min | % |
Gráficos: CPU Load {#SNMPINDEX} Last 1 Minute e CPU Load {#SNMPINDEX} Last 5 Minutes
4. SNMP Discovery — Memory
Chave: snmp.discovery.memory
Tipo: SNMP Agent (DMOS-SYSMON-MIB::memoryFiveSecondsTotal)
Intervalo: 60 min
Itens criados:
| Item | MIB | Retenção |
|---|---|---|
| Available memory | memoryOneMinuteAvailable |
7 dias |
| Buffered memory | memoryOneMinuteBuffered |
7 dias |
| Cached memory | memoryOneMinuteCached |
7 dias |
| Free memory | memoryOneMinuteFree |
7 dias |
| Slab Reclaimed | memoryOneMinuteSlabRecl |
7 dias |
| Slab Unreclaimed | memoryOneMinuteSlabUnrecl |
7 dias |
| Total memory | memoryOneMinuteTotal |
7 dias |
| Used memory | memoryOneMinuteUsed |
7 dias |
Gráfico: Memory Status {#SNMPINDEX} Last 1 minute
5. SNMP Discovery — Fan
Chave: snmp.discovery.fan
Tipo: SNMP Agent (DMOS-HW-MONITOR-MIB::fanDescription)
Intervalo: 60 min
Itens criados:
| Item | MIB | Unidade |
|---|---|---|
| FAN Description | fanDescription |
— |
| FAN Speed | fanSpeed |
RPM |
| FAN Status | fanSpeedStatus |
— |
| FAN Read Error | fanSpeedReadError |
— |
Gráfico: FAN {#SNMPVALUE} Speed
6. SNMP Discovery — Temperature Sensor
Chave: snmp.discovery.temp.sensor
Tipo: SNMP Agent (DMOS-HW-MONITOR-MIB::temperatureSensorDescription)
Intervalo: 60 min
Itens criados:
| Item | MIB | Unidade | Pré-processamento |
|---|---|---|---|
| Current Temperature | temperatureSensorCurrentTemperature |
ºC | × 0,1 |
| Description | temperatureSensorDescription |
— | — |
| Hysteresis Temperature | temperatureSensorHysteresis |
ºC | × 0,1 |
| Max Temperature | temperatureSensorMaxTemperature |
ºC | × 0,1 |
| Min Temperature | temperatureSensorMinTemperature |
ºC | × 0,1 |
7. SNMP Discovery — PSU
Chave: dmos_hardware_monitor_mib_psu.py["{HOST.CONN}", "{$SNMP_COMMUNITY}"]
Tipo: External Check (script Python)
Intervalo: 60 min
⚠️ Requer o script
dmos_hardware_monitor_mib_psu.pyinstalado no diretório de scripts externos do Zabbix.
Variáveis descobertas:
| Macro | Descrição |
|---|---|
{#PSU_SLOT_NAME} |
Nome do slot da PSU (ex.: 1/PSU1) |
{#PSU_SLOT_NAME_LEN} |
Comprimento do nome em formato decimal |
{#PSU_SLOT_NAME_DEC} |
Nome em decimal para uso no OID SNMP (ex.: 49.47.80.83.85.49) |
Itens criados:
| Item | OID | Intervalo |
|---|---|---|
{#PSU_SLOT_NAME} Status |
DMOS-HW-MONITOR-MIB::psuStatus.{#PSU_SLOT_NAME_LEN}.{#PSU_SLOT_NAME_DEC} |
5 min |
Triggers
Triggers Fixas
| Nome | Severidade | Condição |
|---|---|---|
| Unavailable by ICMP ping | 🔴 High | 3 polls consecutivos sem resposta ICMP |
| No SNMP data collection | 🟡 Warning | SNMP indisponível por {$SNMP.TIMEOUT} (padrão: 5 min) |
| Host has been restarted | 🟡 Warning | Uptime < 10 minutos |
| High ICMP ping loss | 🟡 Warning | Perda > {$ICMP_LOSS_WARN}% (padrão: 20%) por 5 min |
| High ICMP ping response time | 🟡 Warning | Tempo médio > {$ICMP_RESPONSE_TIME_WARN}s (padrão: 0.15s) por 5 min |
| System name has changed | 🔵 Info | Nome SNMP alterado |
Trigger Prototypes (LLD)
| Nome | Severidade | Condição |
|---|---|---|
Interface {#IFNAME}: Link down |
🟠 Average | Status operacional = down (controlado por {$IFCONTROL}) |
Interface {#IFNAME}: High bandwidth usage |
🟡 Warning | Utilização > {$IF.UTIL.MAX}% (padrão: 90%) por 15 min |
Interface {#IFNAME}: High error rate |
🟡 Warning | Taxa de erros > {$IF.ERRORS.WARN} pps (padrão: 2) por 5 min |
Interface {#IFNAME}: Ethernet has changed to lower speed |
🔵 Info | Velocidade caiu abaixo do máximo conhecido |
CPU Load High Usage > {$CPU.UTIL.CRIT}% |
🟡 Warning | Uso de CPU ativo > 80% (padrão) por 5 min |
| Memory Available Low < 100MB | 🔴 High | Memória disponível < 100.000.000 bytes |
FAN {#SNMPVALUE} Status Error |
🔴 High | Status do FAN diferente de OK (0) |
FAN {#SNMPVALUE} Read Error |
🔴 High | Erro de leitura de velocidade do FAN |
PSU Status Failed: {#PSU_SLOT_NAME} |
🔴 High | Status PSU ≠ OK e diferente da leitura anterior |
Macros do Template
| Macro | Valor padrão | Descrição |
|---|---|---|
{$SNMP_COMMUNITY} |
public |
Community SNMP |
{$SNMP.TIMEOUT} |
5m |
Timeout para trigger de SNMP indisponível |
{$CPU.UTIL.CRIT} |
80 |
Limiar crítico de uso de CPU (%) |
{$MEMORY.UTIL.MAX} |
90 |
Limiar máximo de uso de memória (%) |
{$ICMP_LOSS_WARN} |
20 |
Limiar de aviso de perda de pacotes ICMP (%) |
{$ICMP_RESPONSE_TIME_WARN} |
0.15 |
Limiar de aviso de tempo de resposta ICMP (s) |
{$IF.UTIL.MAX} |
90 |
Utilização máxima de interface (%) |
{$IF.ERRORS.WARN} |
2 |
Taxa de erro mínima para disparo de alerta (pps) |
{$IFCONTROL} |
1 |
Controle de alertas de link down (0 = desabilita) |
{$FAN_CRIT_STATUS} |
2 |
Código de status crítico para FANs |
{$TEMP_WARN} |
50 |
Temperatura de aviso (ºC) |
{$TEMP_CRIT} |
60 |
Temperatura crítica (ºC) |
{$TEMP_CRIT_LOW} |
5 |
Temperatura crítica mínima (ºC) |
{$NET.IF.IFNAME.NOT_MATCHES} |
(loopback|null|lo|docker...) |
Interfaces excluídas da descoberta |
{$NET.IF.IFADMINSTATUS.NOT_MATCHES} |
^2$ |
Exclui interfaces administrativamente down |
{$NET.IF.IFOPERSTATUS.NOT_MATCHES} |
^6$ |
Exclui interfaces notPresent |
Dashboards
| Nome | Conteúdo |
|---|---|
| Network interfaces | Gráfico em grade com tráfego de todas as interfaces descobertas |
Gráficos
| Nome | Itens |
|---|---|
| Uptime | system.uptime[sysUpTime.0] |
Interface {#IFNAME}({#IFALIAS}): Network traffic |
Bits in/out, discards in/out |
CPU Core {#SNMPINDEX} Last 1 Minute |
Active/Interrupt/Nice/Softirq/System/User/Wait |
CPU Core {#SNMPINDEX} Last 5 Minutes |
Active/Interrupt/Nice/Softirq/System/User/Wait |
CPU Load {#SNMPINDEX} Last 1 Minute |
cpuLoadOneMinuteActive |
CPU Load {#SNMPINDEX} Last 5 Minutes |
cpuLoadFiveMinutesActive |
Memory Status {#SNMPINDEX} Last 1 minute |
Available/Buffered/Cached/Free/SlabRecl/SlabUnrecl/Total/Used |
FAN {#SNMPVALUE} Speed |
fanSpeed |
Temperature Sensor {#SNMPVALUE} |
Current/Max/Min/Hysteresis |
Value Maps
| Nome | Uso |
|---|---|
Service state |
ICMP Ping (0=Down, 1=Up) |
zabbix.host.available |
SNMP Agent Availability (0/1/2) |
IF-MIB::ifOperStatus |
Status operacional de interfaces |
IF-MIB::ifType |
Tipo de interface (290+ mapeamentos) |
DmOS-HW-MONITOR-MIB PSU Status |
Status das fontes de alimentação |
DmOS-HW-MONITOR Environment Sensor Status |
Status dos FANs |
DmOS-HW-MONITOR Read Error |
Erro de leitura de sensor |
Inventário de Host
Os seguintes campos de inventário são preenchidos automaticamente:
| Campo | Item |
|---|---|
CONTACT |
System Contact |
HARDWARE |
System Description |
LOCATION |
System Location |
NAME |
System Name |
Instalação
- Importe o arquivo
zbx_export_templates.xmlno Zabbix via Data collection → Templates → Import. - Copie as MIBs DmOS para o servidor Zabbix e reinicie o
snmpdou o Zabbix Server conforme necessário. - Copie
dmos_hardware_monitor_mib_psu.pypara/usr/lib/zabbix/externalscripts/e dê permissão de execução. - Crie ou edite o host do equipamento Datacom no Zabbix:
- Adicione interface SNMP apontando para o IP do equipamento.
- Defina a macro
{$SNMP_COMMUNITY}com a community correta. - Vincule o template IPv0 - Template Datacom DmOS.
- Aguarde o próximo ciclo de polling para confirmar os dados coletados.
Grupos de Template
- Templates Datacom
- Templates IPv0
Autor
Teccnia — IPv0
Template derivado das MIBs proprietárias Datacom DmOS com base nos templates oficiais do repositório datacom-teracom/dmos-zabbix-template.