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 de disponibilidade (ICMP), informações de sistema, 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.
Nota: O monitoramento de interfaces de rede está disponível em um template separado.
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 servidor Zabbix (geralmente /usr/share/snmp/mibs/ ou /etc/snmp/mibs/). As MIBs utilizadas por este template são:
SNMPv2-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
Configure o host no Zabbix com interface SNMP apontando para o IP do equipamento. Defina a macro {$SNMP_COMMUNITY} no host com a community correta.
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 | Retenção |
|---|---|---|
| ICMP Ping | icmpping |
90 dias |
| ICMP Loss | icmppingloss |
90 dias |
| ICMP Response Time | icmppingsec |
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 — 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 composição do 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 |
2. SNMP Discovery — CPU Cores
Chave: snmp.discovery.cpu.cores
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 |
| Read Error | temperatureSensorTemperatureReadError |
— | — |
Gráfico: Sensor {#SNMPVALUE} Temperature (Current / Max / 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 |
|---|---|---|
CPU Core High Usage > {$CPU.UTIL.CRIT}% |
🟡 Warning | CPU Core ativo > 80% (padrão) por 5 min |
CPU Load High Usage > {$CPU.UTIL.CRIT}% |
🟡 Warning | CPU Load 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 Normal (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 do equipamento |
{$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) |
{$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) |
Gráficos
| Nome | Itens |
|---|---|
| Uptime | system.uptime[sysUpTime.0] |
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 |
Sensor {#SNMPVALUE} Temperature |
Current / Max / Min |
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 (Ok / Power Input Failure / Fuse Failure / Error) |
DmOS-HW-MONITOR Environment Sensor Status |
Status dos FANs (Normal / High / Low / Critical / Error / Fail) |
DmOS-HW-MONITOR Read Error |
Erro de leitura de sensor (Normal / Abnormal) |
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 (
/usr/share/snmp/mibs/ou equivalente). - Copie
dmos_hardware_monitor_mib_psu.pypara/usr/lib/zabbix/externalscripts/e aplique permissão de execução:chmod +x /usr/lib/zabbix/externalscripts/dmos_hardware_monitor_mib_psu.py - 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.