说明:
[root@coolnull ~]# free -m total used free shared buffers cached Mem: 995 785 209 0 6 92 -/+ buffers/cache: 686 308 Swap: 478 200 278
可用内存:Available memory=free+buffers+cached,即308=209+6+92
已使用内存:Used memory=used-buffers-cached,即686=785-6-92
而在用zabbix自身的Template OS Linux模版监控服务器时,发现Used memory都偏高。这是因为zabbix通过vm.memory.size[used]这个key获取服务器的已使用内存(Used memory)。但vm.memory.size[used]获取的值(如下所示为used 785)还包含buffers、cached这部份。
buffers、cached这部份对服务器来说也是可用的。只不过linux本身是尽可能多地使用内存,只有当内存不足时才会释放buffers、cached空间。
vm.memory.size[available]获取的可用内存倒是挺准确的。因此我们这边就会修改Used memory的key值,让总内存减去可用内存即可获取准确的已使用内存
具体:
1. Configure|Templates|Template OS Linux,选择Items,点击Used memory进入配置,修改前如下图所示
2. 修改Type和Formula
Type选择Calculated #计算类型
Formula输入(last("vm.memory.size[total]")-last("vm.memory.size[available]")),用总内存减去可用内存获得准确的已使用内存。
Formula输入(100*last("vm.memory.size[available]")/last("vm.memory.size[total]")),用可用内存除以总内存获得内存使用率。
触发器:
1. Configuration-->Templates-->Template OS Linux-->Triggers-->create trigger
Name: free mem less 10%
Expression: {Template OS Linux:vm.memory.free[percent].last()}<10
注意:
如果items或者trigger的Status是not suppoted说明表达式可能有问题,需要检查测试
内存不足10% 这个时候服务器其实内存资源比较紧张,可以利用这个触发器触发一个脚本来重启占用内存比较多的服务,一般服务器里面的服务都是比较固定的,吃内存比较多的就是那几个,可以挑几个重启(单实例慎用),而且最好对该服务做好监控,避免自动重启服务脚本没有正常启动服务
转载于:https://blog.51cto.com/qiangsh/1853955