[ZBX-25079] Incorrect RAM Utilization calculation in Arista by SNMP template Created: 2024 Aug 21  Updated: 2024 Sep 17  Resolved: 2024 Sep 17

Status: Closed
Project: ZABBIX BUGS AND ISSUES
Component/s: Templates (T)
Affects Version/s: None
Fix Version/s: 6.0.34rc1, 7.0.4rc1, 7.2.0alpha1

Type: Problem report Priority: Trivial
Reporter: Michal Kudlacz Assignee: Aleksejs Abrosimovs
Resolution: Workaround proposed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Arista Switch Models: DCS-7050SX3-96YC8, CCS-720XP-96ZC2, CCS-722XPM-48Y4
Firmware Versions: EOS version 4.29.4M, EOS version 4.28.6.1M


Attachments: PNG File image-2024-08-21-07-04-01-872.png    
Issue Links:
Duplicate
Team: Team INT
Sprint: Prev.Sprint, S24-W34/35
Story Points: 0.5

 Description   

The official template for monitoring Arista switches via SNMP (https://www.zabbix.com/integrations/arista#arista_snmp) contains an error in the calculation of RAM utilization, leading to incorrect trigger alerts. This issue is particularly evident in switches running newer firmware versions where a new OID is used for "memory in use." 

Problem Details:

The SNMP template currently includes OIDs that calculate memory utilization using the hrStorage values. However, these calculations are not aligned with the vendor's recommendations and include memory from buffers and cache.
Arista's latest firmware introduces OID 100, which is intended to represent "memory in use" more accurately. 

Attachments:

  1. Vendor Docs: https://arista.my.site.com/AristaCommunity/s/article/memory-utilization-on-eos-devices
  2. MIB file for Arista devices: http://www.net-snmp.org/docs/mibs/HOST-RESOURCES-TYPES.txt
  3. Screenshot showing the incorrect memory utilization calculation in Zabbix:
  4. Example SNMP walk output for hrStorage and related OIDs.
    HOST-RESOURCES-MIB::hrStorageIndex.1 = INTEGER: 1
    HOST-RESOURCES-MIB::hrStorageIndex.2 = INTEGER: 2
    HOST-RESOURCES-MIB::hrStorageIndex.3 = INTEGER: 3
    HOST-RESOURCES-MIB::hrStorageIndex.4 = INTEGER: 4
    HOST-RESOURCES-MIB::hrStorageIndex.5 = INTEGER: 5
    HOST-RESOURCES-MIB::hrStorageIndex.6 = INTEGER: 6
    HOST-RESOURCES-MIB::hrStorageIndex.7 = INTEGER: 7
    HOST-RESOURCES-MIB::hrStorageIndex.8 = INTEGER: 8
    HOST-RESOURCES-MIB::hrStorageIndex.100 = INTEGER: 100
    HOST-RESOURCES-MIB::hrStorageType.1 = OID: HOST-RESOURCES-TYPES::hrStorageRam
    HOST-RESOURCES-MIB::hrStorageType.2 = OID: HOST-RESOURCES-TYPES::hrStorageRam
    HOST-RESOURCES-MIB::hrStorageType.3 = OID: HOST-RESOURCES-TYPES::hrStorageRam
    HOST-RESOURCES-MIB::hrStorageType.4 = OID: HOST-RESOURCES-TYPES::hrStorageFlashMemory
    HOST-RESOURCES-MIB::hrStorageType.5 = OID: HOST-RESOURCES-TYPES::hrStorageVirtualMemory
    HOST-RESOURCES-MIB::hrStorageType.6 = OID: HOST-RESOURCES-TYPES::hrStorageVirtualMemory
    HOST-RESOURCES-MIB::hrStorageType.7 = OID: HOST-RESOURCES-TYPES::hrStorageVirtualMemory
    HOST-RESOURCES-MIB::hrStorageType.8 = OID: HOST-RESOURCES-TYPES::hrStorageVirtualMemory
    HOST-RESOURCES-MIB::hrStorageType.100 = OID: HOST-RESOURCES-TYPES::hrStorageRam
    HOST-RESOURCES-MIB::hrStorageDescr.1 = STRING: RAM
    HOST-RESOURCES-MIB::hrStorageDescr.2 = STRING: RAM (Buffers)
    HOST-RESOURCES-MIB::hrStorageDescr.3 = STRING: RAM (Cache)
    HOST-RESOURCES-MIB::hrStorageDescr.4 = STRING: Flash
    HOST-RESOURCES-MIB::hrStorageDescr.5 = STRING: Tmp
    HOST-RESOURCES-MIB::hrStorageDescr.6 = STRING: Root
    HOST-RESOURCES-MIB::hrStorageDescr.7 = STRING: Log
    HOST-RESOURCES-MIB::hrStorageDescr.8 = STRING: Core
    HOST-RESOURCES-MIB::hrStorageDescr.100 = STRING: RAM (Unavailable)
    HOST-RESOURCES-MIB::hrStorageAllocationUnits.1 = INTEGER: 1024 Bytes
    HOST-RESOURCES-MIB::hrStorageAllocationUnits.2 = INTEGER: 1024 Bytes
    HOST-RESOURCES-MIB::hrStorageAllocationUnits.3 = INTEGER: 1024 Bytes
    HOST-RESOURCES-MIB::hrStorageAllocationUnits.4 = INTEGER: 4096 Bytes
    HOST-RESOURCES-MIB::hrStorageAllocationUnits.5 = INTEGER: 4096 Bytes
    HOST-RESOURCES-MIB::hrStorageAllocationUnits.6 = INTEGER: 4096 Bytes
    HOST-RESOURCES-MIB::hrStorageAllocationUnits.7 = INTEGER: 4096 Bytes
    HOST-RESOURCES-MIB::hrStorageAllocationUnits.8 = INTEGER: 4096 Bytes
    HOST-RESOURCES-MIB::hrStorageAllocationUnits.100 = INTEGER: 1024 Bytes
    HOST-RESOURCES-MIB::hrStorageSize.1 = INTEGER: 8147100
    HOST-RESOURCES-MIB::hrStorageSize.2 = INTEGER: 8147100
    HOST-RESOURCES-MIB::hrStorageSize.3 = INTEGER: 8147100
    HOST-RESOURCES-MIB::hrStorageSize.4 = INTEGER: 1860826
    HOST-RESOURCES-MIB::hrStorageSize.5 = INTEGER: 16384
    HOST-RESOURCES-MIB::hrStorageSize.6 = INTEGER: 305517
    HOST-RESOURCES-MIB::hrStorageSize.7 = INTEGER: 203678
    HOST-RESOURCES-MIB::hrStorageSize.8 = INTEGER: 203678
    HOST-RESOURCES-MIB::hrStorageSize.100 = INTEGER: 8147100
    HOST-RESOURCES-MIB::hrStorageUsed.1 = INTEGER: 5929192
    HOST-RESOURCES-MIB::hrStorageUsed.2 = INTEGER: 360908
    HOST-RESOURCES-MIB::hrStorageUsed.3 = INTEGER: 3701292
    HOST-RESOURCES-MIB::hrStorageUsed.4 = INTEGER: 603976
    HOST-RESOURCES-MIB::hrStorageUsed.5 = INTEGER: 0
    HOST-RESOURCES-MIB::hrStorageUsed.6 = INTEGER: 21182
    HOST-RESOURCES-MIB::hrStorageUsed.7 = INTEGER: 35893
    HOST-RESOURCES-MIB::hrStorageUsed.8 = INTEGER: 0
    HOST-RESOURCES-MIB::hrStorageUsed.100 = INTEGER: 2183800
    HOST-RESOURCES-MIB::hrStorageAllocationFailures.1 = Counter32: 0
    HOST-RESOURCES-MIB::hrStorageAllocationFailures.2 = Counter32: 0
    HOST-RESOURCES-MIB::hrStorageAllocationFailures.3 = Counter32: 0
    HOST-RESOURCES-MIB::hrStorageAllocationFailures.4 = Counter32: 0
    HOST-RESOURCES-MIB::hrStorageAllocationFailures.5 = Counter32: 0
    HOST-RESOURCES-MIB::hrStorageAllocationFailures.6 = Counter32: 0
    HOST-RESOURCES-MIB::hrStorageAllocationFailures.7 = Counter32: 0
    HOST-RESOURCES-MIB::hrStorageAllocationFailures.8 = Counter32: 0
    HOST-RESOURCES-MIB::hrStorageAllocationFailures.100 = Counter32: 0
    


 Comments   
Comment by Aleksejs Abrosimovs [ 2024 Sep 17 ]

You can add unwanted RAM to discovery exclusion.

In case you want to monitor RAM with SNMP index .100 only, you can add {$MEMORY.NAME.NOT_MATCHES} macro with the value (Buffer|Cache|RAM$) to your host. Or, you can edit this macro's value on the template level.

Generated at Sun Apr 06 02:48:50 EEST 2025 using Jira 9.12.4#9120004-sha1:625303b708afdb767e17cb2838290c41888e9ff0.