我们使用WhatsUp Gold来监控我们所有的networking服务器。 在我们的Linux服务器上(和我们的FreeBSD服务器程度相当),我在内存监视器上遇到了一些问题。 我们使用WUG的SNMP从服务器获取数据。 SNMP守护程序在服务器上返回的内存计数器是组合值(已使用,已caching,缓冲区)。 现在我的一个服务器看起来像这样:
[admin@stgwww snmp]$ free -m total used free shared buffers cached Mem: 7872 1656 6216 0 143 1107 -/+ buffers/cache: 404 7467 Swap: 4867 0 4867
通过SNMP返回到WUG的值是1656.据我所知,caching的RAM本质上是免费的RAM,挂在之前占用它的数据的附加好处,以防万一需要它。 因此,为了我们想要知道实际上有多less内存正在被使用,我们收回的价值是误导性的。 如果我们忽略了WUG所绘制的内容,我们就会相信更多的内存正在被使用,并且可用的内存比现在less。
那么最好的方法是什么来监测呢? WUG允许我编写SSH脚本,它可以每5分钟左右通过SSH连接到服务器,执行一个脚本并返回值(只要它是一个单一的数字值)。 有了这个,我写了一个脚本,从上面的例子中拉出了“404”号码,并将其除以总量给我一个百分比使用价值,我回到WUG,并在从0到100的图表上graphics化。这似乎是很多黑客的方式。
我最好监测免费+缓冲区+caching值? 在WUG中有更好的方法吗? 思考?
去看看linuxatemyram.com 。 WUG告诉你什么Linux认为是使用(使用+缓冲区+caching)。 你决定监视(使用/总计)似乎对我来说尤其合适,因为它不需要知道系统的细节。
免费的RAM是免费的RAM和缓冲区是可以回收的cachingRAM。 我使用的大多数监视工具都将这种差异呈现在累积区域图表中,该图表显示至less使用,caching和不活动的内存堆叠在100%级别之下并交换这些内存。 正确了解服务器性能的唯一方法是查看所有这些服务器。
如果你只能绘制一个值,我会向你build议绘制使用过的内存,并考虑剩余的“自由”。 哦,我会build议切换监控工具。 即使与默认configurationmunin有一个体面的内存图。
我build议神经节: http : //ganglia.sourceforge.net/
它进行内存监视并将其分为组成部分。 几乎没有configuration。 您在每个Linux机器上安装一个守护进程,然后指定一个中央框来loggingRRD。
这是一个示例内存图:

那些(Renan)有兴趣知道我想出了什么解决scheme。
我一直在使用自定义的bash脚本来检索内存(使用/总计),然后将其转换为百分比。
#!/bin/bash USED=`free -m | grep "buffers/cache" | awk '{print $3}'` TOTAL=`free -m | grep "Mem:" | awk '{print $2}'` VALUE=`bc -l <<< "scale=2; (${USED}/${TOTAL})*100" | sed 's/\.[0-9][0-9]//'` exit $VALUE
然后我使用自定义SNMP计数器来执行该脚本并返回值。 在snmpd.conf文件中,它看起来像这样:
exec check_mem /usr/share/snmp/check_mem.sh
每个exec脚本都会返回一些OID,如脚本名称,退出状态,返回值等等。 不幸的是,返回值是一个string,而不是一个整数,所以WUG有一些问题的graphics(它仍然graphics化,但实时graphics将不起作用)。 所以在这种情况下,我们知道值总是在100以下,我把它设置为退出状态,然后我轮询该OID。
要在WUG中监视它,请创build一个自定义的SNMP性能监视器,并监视该exec脚本的退出状态的OID。 然后,您可以创build自定义提醒,而不是。
我们已经使用了一段时间了,而且效果很好。 希望有所帮助!