# ZYXEL MGS3520-28x by SNMP ## Overview https://service-provider.zyxel.com/emea/en/products/carrier-and-access-switches/access-switches/mgs3520-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 MGS3520-28 V4.10(AATN.1)C0_20190522 | 05/22/2019 - ZYXEL MGS3520-28F V4.10(AATM.1)C0_20190626 | 06/27/2019 ## 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| |----|-----------|----|-----------------------| |ZYXEL MGS3520-28x: SNMP agent availability||Zabbix internal|zabbix[host,snmp,available]**Preprocessing**
Discard unchanged with heartbeat: `1h`
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.3520_28.model**Preprocessing**
Discard unchanged with heartbeat: `6h`
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.3520_28.contact**Preprocessing**
Discard unchanged with heartbeat: `6h`
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.3520_28.name**Preprocessing**
Discard unchanged with heartbeat: `6h`
MIB: RFC1213-MIB
The physical location of this node (e.g.,
`telephone closet, 3rd floor').
|SNMP agent|zyxel.3520_28.location**Preprocessing**
Discard unchanged with heartbeat: `6h`
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.3520_28.mac**Preprocessing**
Discard unchanged with heartbeat: `6h`
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.3520_28.net.uptime**Preprocessing**
Custom multiplier: `0.01`
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.3520_28.hw.uptime**Preprocessing**
Check for not supported value
⛔️Custom on fail: Set value to: `0`
Custom multiplier: `0.01`
MIB: ZYXEL-ES-COMMON
|SNMP agent|zyxel.3520_28.fwversion**Preprocessing**
Discard unchanged with heartbeat: `6h`
MIB: ZYXEL-ES-COMMON
Serial number
|SNMP agent|zyxel.3520_28.serialnumber**Preprocessing**
Discard unchanged with heartbeat: `6h`
MIB: ZYXEL-ES-COMMON
Show device CPU load in %, it's the snapshot of CPU load when
getting the values.
|SNMP agent|zyxel.3520_28.cpuusage| |ZYXEL MGS3520-28x: Memory utilization|MIB: ZYXEL-ES-COMMON
Show device memory usage in %.
|SNMP agent|zyxel.3520_28.memusage| ### Triggers |Name|Description|Expression|Severity|Dependencies and additional info| |----|-----------|----------|--------|--------------------------------| |ZYXEL MGS3520-28x: No SNMP data collection|SNMP is not available for polling. Please check device connectivity and SNMP settings.
|`max(/ZYXEL MGS3520-28x by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0`|Warning|| |ZYXEL MGS3520-28x: Template does not match hardware|This template is for Zyxel MGS3520-28x series, but connected to {ITEM.VALUE}
|`not(last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.model)="MGS3520-28" or last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.model)="MGS3520-28F")`|Info|**Manual close**: Yes| |ZYXEL MGS3520-28x: Host has been restarted|Uptime is less than 10 minutes.
|`(last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.hw.uptime)>0 and last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.hw.uptime)<10m) or (last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.hw.uptime)=0 and last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.net.uptime)<10m)`|Info|**Manual close**: Yes| |ZYXEL MGS3520-28x: Firmware has changed|Firmware version has changed. Acknowledge to close the problem manually.
|`last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.fwversion,#1)<>last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.fwversion,#2) and length(last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.fwversion))>0`|Info|**Manual close**: Yes| |ZYXEL MGS3520-28x: Device has been replaced|Device serial number has changed. Acknowledge to close the problem manually.
|`last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.serialnumber,#1)<>last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.serialnumber,#2) and length(last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.serialnumber))>0`|Info|**Manual close**: Yes| |ZYXEL MGS3520-28x: High CPU utilization|The CPU utilization is too high. The system might be slow to respond.
|`min(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.cpuusage,5m)>{$CPU.UTIL.CRIT}`|Warning|| |ZYXEL MGS3520-28x: High memory utilization|The system is running out of free memory.
|`min(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.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.3520_28.fan.discovery| ### Item prototypes for Fan discovery |Name|Description|Type|Key and additional info| |----|-----------|----|-----------------------| |ZYXEL MGS3520-28x: {#ZYXEL.FAN.DESCRIPTION}|MIB: ZYXEL-HW-MONITOR-MIB
Current speed in Revolutions Per Minute (RPM) on the fan.
|SNMP agent|zyxel.3520_28.fan[{#SNMPINDEX}]**Preprocessing**
Discard unchanged with heartbeat: `1h`
Please check the fan unit
|`last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.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.3520_28.temp.discovery| ### Item prototypes for Temperature discovery |Name|Description|Type|Key and additional info| |----|-----------|----|-----------------------| |ZYXEL MGS3520-28x: Temperature "{#ZYXEL.TEMPDESCRIPTION}"|MIB: ZYXEL-HW-MONITOR-MIB
The current temperature measured at this sensor
|SNMP agent|zyxel.3520_28.temp[{#SNMPINDEX}]**Preprocessing**
Discard unchanged with heartbeat: `1h`
Please check the temperature
|`last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.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.3520_28.volt.discovery**Preprocessing**
JavaScript: `The text is too long. Please see the template.`
MIB: ZYXEL-HW-MONITOR-MIB
The current voltage reading.
|SNMP agent|zyxel.3520_28.volt[{#SNMPINDEX}]**Preprocessing**
Custom multiplier: `0.001`
Discard unchanged with heartbeat: `1h`
Please check the power supply
|`last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}`|Average|| ### LLD rule Interface discovery |Name|Description|Type|Key and additional info| |----|-----------|----|-----------------------| |Interface discovery||SNMP agent|zyxel.3520_28.net.if.discovery| ### Item prototypes for Interface discovery |Name|Description|Type|Key and additional info| |----|-----------|----|-----------------------| |ZYXEL MGS3520-28x: 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.3520_28.net.if.speed_duplex[{#SNMPINDEX}]**Preprocessing**
Discard unchanged with heartbeat: `6h`
MIB: ZYXEL-PORT-MIB
Descriptive name that identifies this port.
|SNMP agent|zyxel.3520_28.net.if.name[{#SNMPINDEX}]**Preprocessing**
Discard unchanged with heartbeat: `6h`
MIB: ZYXEL-PORT-MIB
The entry shows the linkUp cable type (copper, fiber, xfp or cx4) for the combo ports.
|SNMP agent|zyxel.3520_28.net.if.link_type[{#SNMPINDEX}]**Preprocessing**
Discard unchanged with heartbeat: `6h`
MIB: IF-MIB
A textual string containing information about the interface
|SNMP agent|zyxel.3520_28.net.if.descr[{#SNMPINDEX}]**Preprocessing**
Discard unchanged with heartbeat: `6h`
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.3520_28.net.if.operstatus[{#SNMPINDEX}]**Preprocessing**
Discard unchanged with heartbeat: `6h`
MIB: IF-MIB
The desired state of the interface. The
testing(3) state indicates that no operational
packets can be passed.
|SNMP agent|zyxel.3520_28.net.if.adminstatus[{#SNMPINDEX}]**Preprocessing**
Discard unchanged with heartbeat: `6h`
MIB: IF-MIB
The total number of octets received on the interface,
including framing characters.
|SNMP agent|zyxel.3520_28.net.if.in.traffic[{#SNMPINDEX}]**Preprocessing**
Custom multiplier: `8`
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.3520_28.net.if.in.ucastpkts[{#SNMPINDEX}]**Preprocessing**
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.3520_28.net.if.in.multicastpkts[{#SNMPINDEX}]**Preprocessing**
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.3520_28.net.if.in.broadcastpkts[{#SNMPINDEX}]**Preprocessing**
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.3520_28.net.if.out.traffic[{#SNMPINDEX}]**Preprocessing**
Custom multiplier: `8`
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.3520_28.net.if.out.ucastpkts[{#SNMPINDEX}]**Preprocessing**
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.3520_28.net.if.out.multicastpkts[{#SNMPINDEX}]**Preprocessing**
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.3520_28.net.if.out.broadcastpkts[{#SNMPINDEX}]**Preprocessing**
MIB: IF-MIB
An estimate of the interface's current bandwidth in bits per second
|SNMP agent|zyxel.3520_28.net.if.highspeed[{#SNMPINDEX}]**Preprocessing**
Custom multiplier: `1000000`
Discard unchanged with heartbeat: `6h`
Interface utilization percentage
|Calculated|zyxel.3520_28.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.`
Interface utilization percentage
|Calculated|zyxel.3520_28.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.`
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.
SFP module discovery.
|SNMP agent|zyxel.3520_28.sfp.discovery| ### Item prototypes for SFP without DDM discovery |Name|Description|Type|Key and additional info| |----|-----------|----|-----------------------| |ZYXEL MGS3520-28x: SFP {#SNMPINDEX}: Status|MIB: ZYXEL-TRANSCEIVER-MIB
Transceiver module type.
|SNMP agent|zyxel.3520_28.sfp.status[{#SNMPINDEX}]**Preprocessing**
Discard unchanged with heartbeat: `1h`
MIB: ZYXEL-TRANSCEIVER-MIB
Transceiver module vendor name.
|SNMP agent|zyxel.3520_28.sfp.vendor[{#SNMPINDEX}]**Preprocessing**
Discard unchanged with heartbeat: `1h`
MIB: ZYXEL-TRANSCEIVER-MIB
Part number provided by transceiver module vendor.
|SNMP agent|zyxel.3520_28.sfp.part[{#SNMPINDEX}]**Preprocessing**
Discard unchanged with heartbeat: `1h`
MIB: ZYXEL-TRANSCEIVER-MIB
Serial number provided by transceiver module vendor.
|SNMP agent|zyxel.3520_28.sfp.serialnumber[{#SNMPINDEX}]**Preprocessing**
Discard unchanged with heartbeat: `1h`
MIB: ZYXEL-TRANSCEIVER-MIB
Revision level for part number provided by transceiver module vendor.
|SNMP agent|zyxel.3520_28.sfp.revision[{#SNMPINDEX}]**Preprocessing**
Discard unchanged with heartbeat: `1h`
MIB: ZYXEL-TRANSCEIVER-MIB
Transceiver module vendor's manufacturing date code.
|SNMP agent|zyxel.3520_28.sfp.datecode[{#SNMPINDEX}]**Preprocessing**
Discard unchanged with heartbeat: `1h`
MIB: ZYXEL-TRANSCEIVER-MIB
Transceiver module type names.
|SNMP agent|zyxel.3520_28.sfp.transceiver[{#SNMPINDEX}]**Preprocessing**
Discard unchanged with heartbeat: `1h`
SFP {#SNMPINDEX} serial number has changed. Acknowledge to close the problem manually.
|`last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.sfp.serialnumber[{#SNMPINDEX}],#1)<>last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.sfp.serialnumber[{#SNMPINDEX}],#2) and length(last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.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.3520_28.sfp.ddm.discovery**Preprocessing**
JavaScript: `The text is too long. Please see the template.`
MIB: ZYXEL-TRANSCEIVER-MIB
Transceiver module DDM data ({#ZYXEL.SFP.DESCRIPTION}).
|SNMP agent|zyxel.3520_28.sfp.ddm[{#SNMPINDEX}]**Preprocessing**
Custom multiplier: `0.01`
Discard unchanged with heartbeat: `6h`
The upper threshold value of the parameter is exceeded
|`last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.sfp.ddm[{#SNMPINDEX}]) > {#ZYXEL.SFP.WARN.MAX}`|Warning|**Manual close**: Yes| |ZYXEL MGS3520-28x: SFP {#ZYXEL.SFP.PORT}: Low {#ZYXEL.SFP.DESCRIPTION}|The parameter values are less than the lower threshold
|`last(/ZYXEL MGS3520-28x by SNMP/zyxel.3520_28.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)