
# ZYXEL MES3500-24S by SNMP

## Overview

https://service-provider.zyxel.com/emea/en/products/carrier-and-access-switches/access-switches/mes3500-series

### Known Issues

Description: Incorrect handling of SNMP bulk requests. Disable the use of bulk requests in the SNMP interface settings.
Version: all versions firmware
Device: ZYXEL MGS3520-28

## Requirements

Zabbix version: 7.0 and higher.

## Tested versions

This template has been tested on:
- ZYXEL MES3500-24S V4.10(ABBR.1)C0_20200309 | 03/09/2020

## Configuration

> Zabbix should be configured according to the instructions in the [Templates out of the box](https://www.zabbix.com/documentation/7.0/manual/config/templates_out_of_the_box) section.

## Setup

Refer to the vendor documentation.

### Macros used

|Name|Description|Default|
|----|-----------|-------|
|{$ZYXEL.LLD.FILTER.IF.CONTROL.MATCHES}|
Triggers will be created only for interfaces whose description contains the value of this macro
|`CHANGE_IF_NEEDED`|
|{$SNMP.TIMEOUT}|
The time interval for SNMP agent availability trigger expression.
|`5m`|
|{$CPU.UTIL.CRIT}||`90`|
|{$MEMORY.UTIL.MAX}||`90`|
|{$ZYXEL.LLD.FILTER.IF.NAME.MATCHES}|
Filter by discoverable interface names.
|`.*`|
|{$ZYXEL.LLD.FILTER.IF.NAME.NOT_MATCHES}|
Filter to exclude discovered interfaces by name.
|`CHANGE_IF_NEEDED`|
|{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.MATCHES}|
Filter of discoverable link types.

0 - Down link

1 - Cooper link

2 - Fiber link

3 - XFP

4 - CX4
|`1\|2\|3\|4`|
|{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.NOT_MATCHES}|
Filter to exclude discovered by link types.
|`CHANGE_IF_NEEDED`|
|{$ZYXEL.LLD.FILTER.SFP.STATUS.MATCHES}|
Filter of discoverable status.

0 - OK with DDM

1 - OK without DDM

2 - nonoperational
|`1\|2`|
|{$ZYXEL.LLD.FILTER.SFP.STATUS.NOT_MATCHES}|
Filter to exclude discovered by status.
|`CHANGE_IF_NEEDED`|
|{$ZYXEL.LLD.FILTER.SFPDDM.DESC.MATCHES}|
Filter by discoverable SFP modules name.
|`.*`|
|{$ZYXEL.LLD.FILTER.SFPDDM.DESC.NOT_MATCHES}|
Filter to exclude discovered SFP modules by name.
|`N/A`|
|{$ZYXEL.LLD.SFP.UPDATE}|
Receiving data from the SFP module is slow, we do not recommend setting the interval less than 10 minutes.
|`10m`|

### Items

|Name|Description|Type|Key and additional info|
|----|-----------|----|-----------------------|
|SNMP agent availability||Zabbix internal|zabbix[host,snmp,available]
**Preprocessing**

- 
Discard unchanged with heartbeat: `1h`

|
|Hardware model name|
MIB: RFC1213-MIB

A textual description of the entity.  This value

should include the full name and version

identification of the system's hardware type,

software operating-system, and networking

software.  It is mandatory that this only contain

printable ASCII characters.
|SNMP agent|zyxel.3500_24s.model
**Preprocessing**

- 
Discard unchanged with heartbeat: `6h`

|
|Contact|
MIB: RFC1213-MIB

The textual identification of the contact person

for this managed node, together with information

on how to contact this person.
|SNMP agent|zyxel.3500_24s.contact
**Preprocessing**

- 
Discard unchanged with heartbeat: `6h`

|
|Host name|
MIB: RFC1213-MIB

An administratively-assigned name for this

managed node.  By convention, this is the node's

fully-qualified domain name.
|SNMP agent|zyxel.3500_24s.name
**Preprocessing**

- 
Discard unchanged with heartbeat: `6h`

|
|Location|
MIB: RFC1213-MIB

The physical location of this node (e.g.,

`telephone closet, 3rd floor').</p>|SNMP agent|zyxel.3500_24s.location<p>**Preprocessing**</p><ul><li><p>Discard unchanged with heartbeat: `6h`

|
|MAC address|
MIB: IF-MIB

The interface's address at the protocol layer

immediately `below' the network layer in the

protocol stack.  For interfaces which do not have

such an address (e.g., a serial line), this object

should contain an octet string of zero length.
|SNMP agent|zyxel.3500_24s.mac
**Preprocessing**

- 
Discard unchanged with heartbeat: `6h`

|
|Uptime (network)|
MIB: RFC1213-MIB

The time (in hundredths of a second) since the

network management portion of the system was last

re-initialized.
|SNMP agent|zyxel.3500_24s.net.uptime
**Preprocessing**

- 
Custom multiplier: `0.01`

|
|Uptime (hardware)|
MIB: HOST-RESOURCES-MIB

The amount of time since this host was last initialized.

Note that this is different from sysUpTime in the SNMPv2-MIB

[RFC1907] because sysUpTime is the uptime of the

network management portion of the system.
|SNMP agent|zyxel.3500_24s.hw.uptime
**Preprocessing**

- 
Check for not supported value: `any error`

⛔️Custom on fail: Set value to: `0`

- 
Custom multiplier: `0.01`

|
|ZyNOS F/W Version|
MIB: ZYXEL-ES-COMMON
|SNMP agent|zyxel.3500_24s.fwversion
**Preprocessing**

- 
Discard unchanged with heartbeat: `6h`

|
|Hardware serial number|
MIB: ZYXEL-ES-COMMON

Serial number
|SNMP agent|zyxel.3500_24s.serialnumber
**Preprocessing**

- 
Discard unchanged with heartbeat: `6h`

|
|CPU utilization|
MIB: ZYXEL-ES-COMMON

Show device CPU load in %, it's the snapshot of CPU load when

getting the values.
|SNMP agent|zyxel.3500_24s.cpuusage|
|Memory utilization|
MIB: ZYXEL-ES-COMMON

Show device memory usage in %.
|SNMP agent|zyxel.3500_24s.memusage|

### Triggers

|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----------|--------|--------------------------------|
|ZYXEL: No SNMP data collection|
SNMP is not available for polling. Please check device connectivity and SNMP settings.
|`max(/ZYXEL MES3500-24S by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0`|Warning||
|ZYXEL: Template does not match hardware|
This template is for Zyxel MES3500-24S series, but connected to {ITEM.VALUE}
|`last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.model)<>"MES3500-24S"`|Info|**Manual close**: Yes|
|ZYXEL: Host has been restarted|
Uptime is less than 10 minutes.
|`(last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.hw.uptime)>0 and last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.hw.uptime)<10m) or (last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.hw.uptime)=0 and last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.net.uptime)<10m)`|Info|**Manual close**: Yes|
|ZYXEL: Firmware has changed|
Firmware version has changed. Acknowledge to close the problem manually.
|`last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.fwversion,#1)<>last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.fwversion,#2) and length(last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.fwversion))>0`|Info|**Manual close**: Yes|
|ZYXEL: Device has been replaced|
Device serial number has changed. Acknowledge to close the problem manually.
|`last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.serialnumber,#1)<>last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.serialnumber,#2) and length(last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.serialnumber))>0`|Info|**Manual close**: Yes|
|ZYXEL: High CPU utilization|
The CPU utilization is too high. The system might be slow to respond.
|`min(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.cpuusage,5m)>{$CPU.UTIL.CRIT}`|Warning||
|ZYXEL: High memory utilization|
The system is running out of free memory.
|`min(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.memusage,5m)>{$MEMORY.UTIL.MAX}`|Average||

### LLD rule Fan discovery

|Name|Description|Type|Key and additional info|
|----|-----------|----|-----------------------|
|Fan discovery|
An entry in fanRpmTable.
|SNMP agent|zyxel.3500_24s.fan.discovery|

### Item prototypes for Fan discovery

|Name|Description|Type|Key and additional info|
|----|-----------|----|-----------------------|
|{#ZYXEL.FAN.DESCRIPTION}|
MIB: ZYXEL-HW-MONITOR-MIB

Current speed in Revolutions Per Minute (RPM) on the fan.
|SNMP agent|zyxel.3500_24s.fan[{#SNMPINDEX}]
**Preprocessing**

- 
Discard unchanged with heartbeat: `1h`

|

### Trigger prototypes for Fan discovery

|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----------|--------|--------------------------------|
|ZYXEL: {#ZYXEL.FAN.DESCRIPTION} is in critical state|
Please check the fan unit
|`last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW}`|Average||

### LLD rule Temperature discovery

|Name|Description|Type|Key and additional info|
|----|-----------|----|-----------------------|
|Temperature discovery|
An entry in tempTable.
|SNMP agent|zyxel.3500_24s.temp.discovery|

### Item prototypes for Temperature discovery

|Name|Description|Type|Key and additional info|
|----|-----------|----|-----------------------|
|Temperature "{#ZYXEL.TEMPDESCRIPTION}"|
MIB: ZYXEL-HW-MONITOR-MIB

The current temperature measured at this sensor
|SNMP agent|zyxel.3500_24s.temp[{#SNMPINDEX}]
**Preprocessing**

- 
Discard unchanged with heartbeat: `1h`

|

### Trigger prototypes for Temperature discovery

|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----------|--------|--------------------------------|
|ZYXEL: Temperature {#ZYXEL.TEMPDESCRIPTION} is in critical state|
Please check the temperature
|`last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.temp[{#SNMPINDEX}])>{#ZYXEL.TEMP.THRESH.HIGH}`|Average||

### LLD rule Voltage discovery

|Name|Description|Type|Key and additional info|
|----|-----------|----|-----------------------|
|Voltage discovery|
An entry in voltageTable.
|SNMP agent|zyxel.3500_24s.volt.discovery
**Preprocessing**

- 
JavaScript: `The text is too long. Please see the template.`

|

### Item prototypes for Voltage discovery

|Name|Description|Type|Key and additional info|
|----|-----------|----|-----------------------|
|Nominal "{#ZYXEL.DESCRIPTION}"|
MIB: ZYXEL-HW-MONITOR-MIB

The current voltage reading.
|SNMP agent|zyxel.3500_24s.volt[{#SNMPINDEX}]
**Preprocessing**

- 
Custom multiplier: `0.001`

- 
Discard unchanged with heartbeat: `1h`

|

### Trigger prototypes for Voltage discovery

|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----------|--------|--------------------------------|
|ZYXEL: Voltage {#ZYXEL.DESCRIPTION} is in critical state|
Please check the power supply
|`last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}`|Average||

### LLD rule Interface discovery

|Name|Description|Type|Key and additional info|
|----|-----------|----|-----------------------|
|Interface discovery||SNMP agent|zyxel.3500_24s.net.if.discovery|

### Item prototypes for Interface discovery

|Name|Description|Type|Key and additional info|
|----|-----------|----|-----------------------|
|Port {#SNMPINDEX}: Speed Duplex|
MIB: ZYXEL-PORT-MIB

Select The speed and the duplex mode of the Ethernet connection on this port. Selecting Auto

(auto-negotiation) allows one port to negotiate with a peer port automatically to obtain the

connection speed and duplex mode that both ends support. When auto-negotiation is turned on,

a port on the Switch negotiates with the peer automatically to determine the connection speed

and duplex mode. If the peer port does not support auto-negotiation or turns off this feature,

the Switch determines the connection speed by detecting the signal on the cable and using half

duplex mode. Thus requiring you to make sure that the settings of the peer port are the same in

order to connect.
|SNMP agent|zyxel.3500_24s.net.if.speed_duplex[{#SNMPINDEX}]
**Preprocessing**

- 
Discard unchanged with heartbeat: `6h`

|
|Port {#SNMPINDEX}: Interface description|
MIB: ZYXEL-PORT-MIB

Descriptive name that identifies this port.
|SNMP agent|zyxel.3500_24s.net.if.name[{#SNMPINDEX}]
**Preprocessing**

- 
Discard unchanged with heartbeat: `6h`

|
|Port {#SNMPINDEX}: Link type|
MIB: ZYXEL-PORT-MIB

The entry shows the linkUp cable type (copper, fiber, xfp or cx4) for the combo ports.
|SNMP agent|zyxel.3500_24s.net.if.link_type[{#SNMPINDEX}]
**Preprocessing**

- 
Discard unchanged with heartbeat: `6h`

|
|Port {#SNMPINDEX}: Interface name|
MIB: IF-MIB

A textual string containing information about the interface
|SNMP agent|zyxel.3500_24s.net.if.descr[{#SNMPINDEX}]
**Preprocessing**

- 
Discard unchanged with heartbeat: `6h`

|
|Port {#SNMPINDEX}: Operational status|
MIB: IF-MIB

The current operational state of the interface.

The testing(3) state indicates that no operational

packets can be passed.
|SNMP agent|zyxel.3500_24s.net.if.operstatus[{#SNMPINDEX}]
**Preprocessing**

- 
Discard unchanged with heartbeat: `6h`

|
|Port {#SNMPINDEX}: Administrative status|
MIB: IF-MIB

The desired state of the interface.  The

testing(3) state indicates that no operational

packets can be passed.
|SNMP agent|zyxel.3500_24s.net.if.adminstatus[{#SNMPINDEX}]
**Preprocessing**

- 
Discard unchanged with heartbeat: `6h`

|
|Port {#SNMPINDEX}: Incoming traffic|
MIB: IF-MIB

The total number of octets received on the interface,

including framing characters.
|SNMP agent|zyxel.3500_24s.net.if.in.traffic[{#SNMPINDEX}]
**Preprocessing**

- 
Custom multiplier: `8`

- Change per second
|
|Port {#SNMPINDEX}: Incoming unicast packages|
MIB: IF-MIB

The number of packets, delivered by this sub-layer to a

higher (sub-)layer, which were not addressed to a multicast

or broadcast address at this sub-layer
|SNMP agent|zyxel.3500_24s.net.if.in.ucastpkts[{#SNMPINDEX}]
**Preprocessing**

- Change per second
|
|Port {#SNMPINDEX}: Incoming multicast packages|
MIB: IF-MIB

The number of packets, delivered by this sub-layer to a

higher (sub-)layer, which were addressed to a multicast

address at this sub-layer.  For a MAC layer protocol, this

includes both Group and Functional addresses.
|SNMP agent|zyxel.3500_24s.net.if.in.multicastpkts[{#SNMPINDEX}]
**Preprocessing**

- Change per second
|
|Port {#SNMPINDEX}: Incoming broadcast packages|
MIB: IF-MIB

The number of packets, delivered by this sub-layer to a

higher (sub-)layer, which were addressed to a broadcast

address at this sub-layer.
|SNMP agent|zyxel.3500_24s.net.if.in.broadcastpkts[{#SNMPINDEX}]
**Preprocessing**

- Change per second
|
|Port {#SNMPINDEX}: Outgoing traffic|
MIB: IF-MIB

The total number of octets transmitted out of the

interface, including framing characters.  This object is a

64-bit version of ifOutOctets.
|SNMP agent|zyxel.3500_24s.net.if.out.traffic[{#SNMPINDEX}]
**Preprocessing**

- 
Custom multiplier: `8`

- Change per second
|
|Port {#SNMPINDEX}: Outgoing unicast packages|
MIB: IF-MIB

The total number of packets that higher-level protocols

requested be transmitted, and which were not addressed to a

multicast or broadcast address at this sub-layer, including

those that were discarded or not sent.
|SNMP agent|zyxel.3500_24s.net.if.out.ucastpkts[{#SNMPINDEX}]
**Preprocessing**

- Change per second
|
|Port {#SNMPINDEX}: Outgoing multicast packages|
MIB: IF-MIB

The total number of packets that higher-level protocols

requested be transmitted, and which were addressed to a

multicast address at this sub-layer, including those that

were discarded or not sent.  For a MAC layer protocol, this

includes both Group and Functional addresses.
|SNMP agent|zyxel.3500_24s.net.if.out.multicastpkts[{#SNMPINDEX}]
**Preprocessing**

- Change per second
|
|Port {#SNMPINDEX}: Outgoing broadcast packages|
MIB: IF-MIB

The total number of packets that higher-level protocols

requested be transmitted, and which were addressed to a

broadcast address at this sub-layer, including those that

were discarded or not sent.
|SNMP agent|zyxel.3500_24s.net.if.out.broadcastpkts[{#SNMPINDEX}]
**Preprocessing**

- Change per second
|
|Port {#SNMPINDEX}: Link speed|
MIB: IF-MIB

An estimate of the interface's current bandwidth in bits per second
|SNMP agent|zyxel.3500_24s.net.if.highspeed[{#SNMPINDEX}]
**Preprocessing**

- 
Custom multiplier: `1000000`

- 
Discard unchanged with heartbeat: `6h`

|
|Port {#SNMPINDEX}: Incoming utilization|
Interface utilization percentage
|Calculated|zyxel.3500_24s.net.if.in.util[{#SNMPINDEX}]
**Preprocessing**

- 
In range: `0 -> 100`

⛔️Custom on fail: Discard value

- 
JavaScript: `The text is too long. Please see the template.`

|
|Port {#SNMPINDEX}: Outgoing utilization|
Interface utilization percentage
|Calculated|zyxel.3500_24s.net.if.out.util[{#SNMPINDEX}]
**Preprocessing**

- 
In range: `0 -> 100`

⛔️Custom on fail: Discard value

- 
JavaScript: `The text is too long. Please see the template.`

|

### Trigger prototypes for Interface discovery

|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----------|--------|--------------------------------|
|ZYXEL: Port {#SNMPINDEX}: Link down|
This trigger expression works as follows:
1. It can be triggered if the operations status is down.
2. `{$IFCONTROL:"{#IFNAME}"}=1` - a user can redefine context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.
3. `{TEMPLATE_NAME:METRIC.diff()}=1` - the trigger fires only if the operational status was up to (1) sometime before (so, do not fire for the 'eternal off' interfaces.)

WARNING: if closed manually - it will not fire again on the next poll, because of .diff.
|`last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.net.if.operstatus[{#SNMPINDEX}],#2)`|Average|**Manual close**: Yes|

### LLD rule SFP without DDM discovery

|Name|Description|Type|Key and additional info|
|----|-----------|----|-----------------------|
|SFP without DDM discovery|
SFP module discovery.
|SNMP agent|zyxel.3500_24s.sfp.discovery|

### Item prototypes for SFP without DDM discovery

|Name|Description|Type|Key and additional info|
|----|-----------|----|-----------------------|
|SFP {#SNMPINDEX}: Status|
MIB: ZYXEL-TRANSCEIVER-MIB

Transceiver module type.
|SNMP agent|zyxel.3500_24s.sfp.status[{#SNMPINDEX}]
**Preprocessing**

- 
Discard unchanged with heartbeat: `1h`

|
|SFP {#SNMPINDEX}: Vendor|
MIB: ZYXEL-TRANSCEIVER-MIB

Transceiver module vendor name.
|SNMP agent|zyxel.3500_24s.sfp.vendor[{#SNMPINDEX}]
**Preprocessing**

- 
Discard unchanged with heartbeat: `1h`

|
|SFP {#SNMPINDEX}: Part number|
MIB: ZYXEL-TRANSCEIVER-MIB

Part number provided by transceiver module vendor.
|SNMP agent|zyxel.3500_24s.sfp.part[{#SNMPINDEX}]
**Preprocessing**

- 
Discard unchanged with heartbeat: `1h`

|
|SFP {#SNMPINDEX}: Serial number|
MIB: ZYXEL-TRANSCEIVER-MIB

Serial number provided by transceiver module vendor.
|SNMP agent|zyxel.3500_24s.sfp.serialnumber[{#SNMPINDEX}]
**Preprocessing**

- 
Discard unchanged with heartbeat: `1h`

|
|SFP {#SNMPINDEX}: Revision|
MIB: ZYXEL-TRANSCEIVER-MIB

Revision level for part number provided by transceiver module vendor.
|SNMP agent|zyxel.3500_24s.sfp.revision[{#SNMPINDEX}]
**Preprocessing**

- 
Discard unchanged with heartbeat: `1h`

|
|SFP {#SNMPINDEX}: Date code|
MIB: ZYXEL-TRANSCEIVER-MIB

Transceiver module vendor's manufacturing date code.
|SNMP agent|zyxel.3500_24s.sfp.datecode[{#SNMPINDEX}]
**Preprocessing**

- 
Discard unchanged with heartbeat: `1h`

|
|SFP {#SNMPINDEX}: Transceiver|
MIB: ZYXEL-TRANSCEIVER-MIB

Transceiver module type names.
|SNMP agent|zyxel.3500_24s.sfp.transceiver[{#SNMPINDEX}]
**Preprocessing**

- 
Discard unchanged with heartbeat: `1h`

|

### Trigger prototypes for SFP without DDM discovery

|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----------|--------|--------------------------------|
|ZYXEL: SFP {#SNMPINDEX} has been replaced|
SFP {#SNMPINDEX} serial number has changed. Acknowledge to close the problem manually.
|`last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.sfp.serialnumber[{#SNMPINDEX}]))>0`|Info|**Manual close**: Yes|

### LLD rule SFP with DDM discovery

|Name|Description|Type|Key and additional info|
|----|-----------|----|-----------------------|
|SFP with DDM discovery|
SFP DDM module discovery.
|SNMP agent|zyxel.3500_24s.sfp.ddm.discovery
**Preprocessing**

- 
JavaScript: `The text is too long. Please see the template.`

|

### Item prototypes for SFP with DDM discovery

|Name|Description|Type|Key and additional info|
|----|-----------|----|-----------------------|
|SFP {#ZYXEL.SFP.PORT}: {#ZYXEL.SFP.DESCRIPTION}|
MIB: ZYXEL-TRANSCEIVER-MIB

Transceiver module DDM data ({#ZYXEL.SFP.DESCRIPTION}).
|SNMP agent|zyxel.3500_24s.sfp.ddm[{#SNMPINDEX}]
**Preprocessing**

- 
Custom multiplier: `0.01`

- 
Discard unchanged with heartbeat: `6h`

|

### Trigger prototypes for SFP with DDM discovery

|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----------|--------|--------------------------------|
|ZYXEL: SFP {#ZYXEL.SFP.PORT}: High {#ZYXEL.SFP.DESCRIPTION}|
The upper threshold value of the parameter is exceeded
|`last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}`|Warning|**Manual close**: Yes|
|ZYXEL: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION}|
The parameter values are less than the lower threshold
|`last(/ZYXEL MES3500-24S by SNMP/zyxel.3500_24s.sfp.ddm[{#SNMPINDEX}]) < {#ZYXEL.SFP.WARN.MIN}`|Warning|**Manual close**: Yes|

## Feedback

Please report any issues with the template at [`https://support.zabbix.com`](https://support.zabbix.com)

You can also provide feedback, discuss the template, or ask for help at [`ZABBIX forums`](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback)

