一.Windows服务器:
(1)抓取 hrStorageType OID (.1.3.6.1.2.1.25.2.3.1.2) 的实例。
它将列出目标服务器中可用的不同类型的存储,从列表中我们单独使用 hrStorageRam 的值来计算我们使用的物理内存。
(2)内存总使用量计算:
通过 hrStorageUsed OID (.1.3.6.1.2.1.25.2.3.1.6) 及 hrStorageAllocationUnits OID(.1.3.6.1.2.1.25.2.3.1.4) 对应(1)中 hrStorageRam 实例索引取值并相乘,得到的结果单位为字节,除以1048576得到单位为 MB 的值。
计算公式:
总内存使用(单位 MB) = [hrStorageUsed 的实例值 (.1.3.6.1.2.1.25.2.3.1.6) * hrStorageAllocationUnits 的实例值 (.1.3.6.1.2.1.25.2.3.1.4)] / 1048576
(3)总内存大小
通过 hrMemorySize OID (.1.3.6.1.2.1.25.2.2) 获取的值(原值为 KB)除以1024可以得到单位为 MB 的值。
(4)内存利用率 = 总内存使用量/总内存大小*100% (单位%)
二.Linux服务器:
通过UCD-SNMP-MIB(仅对 Linux)获取所需值:
总内存大小(Total)OID: .1.3.6.1.4.1.2021.4.5.0
可用内存大小(Available)OID:.1.3.6.1.4.1.2021.4.6.0
缓冲区大小(Buffer)OID:.1.3.6.1.4.1.2021.4.14.0
缓存区大小(Cache)OID:.1.3.6.1.4.1.2021.4.15.0
由于 Linux 对于可用内存大小根据不同设备有不同的计算方式:
1.有些设备可用内存大小已包含缓冲区和缓存区。
计算公式:
内存利用率(%) = [(总内存大小 - 可用内存大小)/总内存大小]*100%
2.有些设备可用内存大小不包含缓冲区和缓存区。
计算公式:
内存利用率(%) = [(总内存大小 - 可用内存大小 - 缓冲区大小 - 缓存区大小)/总内存大小]*100%
故,在性能轮询->服务器中可以启用/禁用“从监控跳过缓冲区和缓存(仅适用于linux)”,以修改计算方式。
如客户环境部分需要使用 1 计算,部分需要使用 2 计算,可联系研发通过更新数据库+补丁的方式解决。
补充:
关于 OPM 通过 SNMP 协议对服务器内存利用率的取值、计算规则可参考下方链接: