# ZYXEL GS-4012F by SNMP ## Overview https://service-provider.zyxel.com/global/en/products/carrier-and-access-switches/access-switches/mgs-3712f ### 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 GS-4012F ## Requirements Zabbix version: 7.0 and higher. ## Tested versions This template has been tested on: - ZYXEL GS-4012F V3.90(BBB.5)_2019.9.23 ## 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`| |{$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

|`1\|2`| |{$ZYXEL.LLD.FILTER.IF.LINKUPTYPE.NOT_MATCHES}|

Filter to exclude discovered by link types.

|`CHANGE_IF_NEEDED`| ### Items |Name|Description|Type|Key and additional info| |----|-----------|----|-----------------------| |ZYXEL GS-4012F: SNMP agent availability||Zabbix internal|zabbix[host,snmp,available]

**Preprocessing**

| |ZYXEL GS-4012F: 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.4012f.model

**Preprocessing**

| |ZYXEL GS-4012F: 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.4012f.contact

**Preprocessing**

| |ZYXEL GS-4012F: 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.4012f.name

**Preprocessing**

| |ZYXEL GS-4012F: Location|

MIB: RFC1213-MIB

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

`telephone closet, 3rd floor').

|SNMP agent|zyxel.4012f.location

**Preprocessing**

| |ZYXEL GS-4012F: 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.4012f.mac

**Preprocessing**

| |ZYXEL GS-4012F: 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.4012f.net.uptime

**Preprocessing**

| |ZYXEL GS-4012F: 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.4012f.hw.uptime

**Preprocessing**

| |ZYXEL GS-4012F: ZyNOS F/W Version|

MIB: ZYXEL-GS4012F-MIB

|SNMP agent|zyxel.4012f.fwversion

**Preprocessing**

| |ZYXEL GS-4012F: Hardware serial number|

MIB: ZYXEL-GS4012F-MIB

Serial number

|SNMP agent|zyxel.4012f.serialnumber

**Preprocessing**

| |ZYXEL GS-4012F: CPU utilization|

MIB: ZYXEL-GS4012F-MIB

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

getting the values.

|SNMP agent|zyxel.4012f.cpuusage| ### Triggers |Name|Description|Expression|Severity|Dependencies and additional info| |----|-----------|----------|--------|--------------------------------| |ZYXEL GS-4012F: No SNMP data collection|

SNMP is not available for polling. Please check device connectivity and SNMP settings.

|`max(/ZYXEL GS-4012F by SNMP/zabbix[host,snmp,available],{$SNMP.TIMEOUT})=0`|Warning|| |ZYXEL GS-4012F: Template does not match hardware|

This template is for Zyxel GS-4012F, but connected to {ITEM.VALUE}

|`last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.model)<>"GS-4012F"`|Info|**Manual close**: Yes| |ZYXEL GS-4012F: Host has been restarted|

Uptime is less than 10 minutes.

|`(last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.hw.uptime)>0 and last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.hw.uptime)<10m) or (last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.hw.uptime)=0 and last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.net.uptime)<10m)`|Info|**Manual close**: Yes| |ZYXEL GS-4012F: Firmware has changed|

Firmware version has changed. Acknowledge to close the problem manually.

|`last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.fwversion,#1)<>last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.fwversion,#2) and length(last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.fwversion))>0`|Info|**Manual close**: Yes| |ZYXEL GS-4012F: Device has been replaced|

Device serial number has changed. Acknowledge to close the problem manually.

|`last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.serialnumber,#1)<>last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.serialnumber,#2) and length(last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.serialnumber))>0`|Info|**Manual close**: Yes| |ZYXEL GS-4012F: High CPU utilization|

The CPU utilization is too high. The system might be slow to respond.

|`min(/ZYXEL GS-4012F by SNMP/zyxel.4012f.cpuusage,5m)>{$CPU.UTIL.CRIT}`|Warning|| ### LLD rule Fan discovery |Name|Description|Type|Key and additional info| |----|-----------|----|-----------------------| |Fan discovery|

An entry in fanRpmTable.

|SNMP agent|zyxel.4012f.fan.discovery| ### Item prototypes for Fan discovery |Name|Description|Type|Key and additional info| |----|-----------|----|-----------------------| |ZYXEL GS-4012F: Fan #{#SNMPINDEX}|

MIB: ZYXEL-GS4012F-MIB

Current speed in Revolutions Per Minute (RPM) on the fan.

|SNMP agent|zyxel.4012f.fan[{#SNMPINDEX}]

**Preprocessing**

| ### Trigger prototypes for Fan discovery |Name|Description|Expression|Severity|Dependencies and additional info| |----|-----------|----------|--------|--------------------------------| |ZYXEL GS-4012F: FAN{#SNMPINDEX} is in critical state|

Please check the fan unit

|`last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.fan[{#SNMPINDEX}])<{#ZYXEL.FANRPM.THRESH.LOW}`|Average|| ### LLD rule Temperature discovery |Name|Description|Type|Key and additional info| |----|-----------|----|-----------------------| |Temperature discovery|

An entry in tempTable.

Index of temperature unit. 1:MAC, 2:CPU, 3:PHY

|SNMP agent|zyxel.4012f.temp.discovery

**Preprocessing**

| ### Item prototypes for Temperature discovery |Name|Description|Type|Key and additional info| |----|-----------|----|-----------------------| |ZYXEL GS-4012F: Temperature "{#ZYXEL.TEMP.ID}"|

MIB: ZYXEL-GS4012F-MIB

The current temperature measured at this sensor

|SNMP agent|zyxel.4012f.temp[{#SNMPINDEX}]

**Preprocessing**

| ### Trigger prototypes for Temperature discovery |Name|Description|Expression|Severity|Dependencies and additional info| |----|-----------|----------|--------|--------------------------------| |ZYXEL GS-4012F: Temperature {#ZYXEL.TEMP.ID} is in critical state|

Please check the temperature

|`last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.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.4012f.volt.discovery

**Preprocessing**

| ### Item prototypes for Voltage discovery |Name|Description|Type|Key and additional info| |----|-----------|----|-----------------------| |ZYXEL GS-4012F: Nominal "{#ZYXEL.VOLT.NOMINAL}"|

MIB: ZYXEL-GS4012F-MIB

The current voltage reading.

|SNMP agent|zyxel.4012f.volt[{#SNMPINDEX}]

**Preprocessing**

| ### Trigger prototypes for Voltage discovery |Name|Description|Expression|Severity|Dependencies and additional info| |----|-----------|----------|--------|--------------------------------| |ZYXEL GS-4012F: Voltage {#ZYXEL.VOLT.NOMINAL} is in critical state|

Please check the power supply

|`last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.volt[{#SNMPINDEX}])<{#ZYXEL.VOLT.THRESH.LOW}`|Average|| ### LLD rule Interface discovery |Name|Description|Type|Key and additional info| |----|-----------|----|-----------------------| |Interface discovery||SNMP agent|zyxel.4012f.net.if.discovery| ### Item prototypes for Interface discovery |Name|Description|Type|Key and additional info| |----|-----------|----|-----------------------| |ZYXEL GS-4012F: Port {#SNMPINDEX}: Speed Duplex|

MIB: ZYXEL-GS4012F-MIB

Transmission mode

|SNMP agent|zyxel.4012f.net.if.speed_duplex[{#SNMPINDEX}]

**Preprocessing**

| |ZYXEL GS-4012F: Port {#SNMPINDEX}: Interface description|

MIB: ZYXEL-GS4012F-MIB

A textual string containing information about the interface

|SNMP agent|zyxel.4012f.net.if.name[{#SNMPINDEX}]

**Preprocessing**

| |ZYXEL GS-4012F: Port {#SNMPINDEX}: Link type|

MIB: ZYXEL-GS4012F-MIB

Physical connection type

|SNMP agent|zyxel.4012f.net.if.link_type[{#SNMPINDEX}]

**Preprocessing**

| |ZYXEL GS-4012F: Port {#SNMPINDEX}: Interface name|

MIB: IF-MIB

A textual string containing information about the interface

|SNMP agent|zyxel.4012f.net.if.descr[{#SNMPINDEX}]

**Preprocessing**

| |ZYXEL GS-4012F: 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.4012f.net.if.operstatus[{#SNMPINDEX}]

**Preprocessing**

| |ZYXEL GS-4012F: 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.4012f.net.if.adminstatus[{#SNMPINDEX}]

**Preprocessing**

| |ZYXEL GS-4012F: Port {#SNMPINDEX}: Incoming traffic|

MIB: IF-MIB

The total number of octets received on the interface,

including framing characters.

|SNMP agent|zyxel.4012f.net.if.in.traffic[{#SNMPINDEX}]

**Preprocessing**

| |ZYXEL GS-4012F: 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.4012f.net.if.in.ucastpkts[{#SNMPINDEX}]

**Preprocessing**

| |ZYXEL GS-4012F: 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.4012f.net.if.in.multicastpkts[{#SNMPINDEX}]

**Preprocessing**

| |ZYXEL GS-4012F: 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.4012f.net.if.in.broadcastpkts[{#SNMPINDEX}]

**Preprocessing**

| |ZYXEL GS-4012F: 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.4012f.net.if.out.traffic[{#SNMPINDEX}]

**Preprocessing**

| |ZYXEL GS-4012F: 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.4012f.net.if.out.ucastpkts[{#SNMPINDEX}]

**Preprocessing**

| |ZYXEL GS-4012F: 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.4012f.net.if.out.multicastpkts[{#SNMPINDEX}]

**Preprocessing**

| |ZYXEL GS-4012F: 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.4012f.net.if.out.broadcastpkts[{#SNMPINDEX}]

**Preprocessing**

| |ZYXEL GS-4012F: Port {#SNMPINDEX}: Link speed|

MIB: IF-MIB

An estimate of the interface's current bandwidth in bits per second

|SNMP agent|zyxel.4012f.net.if.highspeed[{#SNMPINDEX}]

**Preprocessing**

| |ZYXEL GS-4012F: Port {#SNMPINDEX}: Incoming utilization|

Interface utilization percentage

|Calculated|zyxel.4012f.net.if.in.util[{#SNMPINDEX}]

**Preprocessing**

| |ZYXEL GS-4012F: Port {#SNMPINDEX}: Outgoing utilization|

Interface utilization percentage

|Calculated|zyxel.4012f.net.if.out.util[{#SNMPINDEX}]

**Preprocessing**

| ### Trigger prototypes for Interface discovery |Name|Description|Expression|Severity|Dependencies and additional info| |----|-----------|----------|--------|--------------------------------| |ZYXEL GS-4012F: 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 GS-4012F by SNMP/zyxel.4012f.net.if.operstatus[{#SNMPINDEX}])=2 and last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.net.if.operstatus[{#SNMPINDEX}],#1)<>last(/ZYXEL GS-4012F by SNMP/zyxel.4012f.net.if.operstatus[{#SNMPINDEX}],#2)`|Average|**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)