在实际环境下,由于开发程序的问题,在一段时间后,打开文件句柄数达到了最大值,导致服务崩溃,从而无法进入服务器进行解决,只能通过重启服务器。为了防止此类问题的发生,所以对打开文件句柄数进行监控。
一、创建zabbix监控自定义key
[root@scong ] vim /data/zabbix/conf/openfiles.conf
UserParameter=openfiles,/bin/bash /data/zabbix/script/openfiles.sh
二、编写监控脚本
[root@scong ] #!/bin/bash
# lsof -n| wc -l 据说不是最为准确的打开文件数,准确的打开文件句柄数是:cat /proc/sys/fs/file-nr ,第一个数为已分配的文件数,第二个为未分配文件数,第三个为最大打开文件句柄数。详情见下图
# 已打开的文件数,/usr/sbin/lsof因服务器而异,lsof加上-n与没加的区别就在于,加上-n,忽略了由IP转成hostname,加快统计打开文件数,也是为了防止在读取key的时候出现超时的情况。
opened_files=`/usr/sbin/lsof -n| wc -l`
# 最大打开文件数
max_files=`cat /proc/sys/fs/file-max`
# 计算已打开的文件数,并输出
values=`awk 'BEGIN{printf "%0.2f\n",('${opened_files}'/'${max_files}')*100}'`
echo "${values}"
![](https://i-blog.csdnimg.cn/blog_migrate/4289db5bd78b494179eee7e5440e5342.png)
三、zabbix控制面板进行监控
<1> 创建模版,创建应用集
![](https://i-blog.csdnimg.cn/blog_migrate/efbdc1721c4b86dc9b3085a85885e423.png)
<2> 创建项目,定义key
![](https://i-blog.csdnimg.cn/blog_migrate/fb6e6fc0306da36ef07ff01e5bddaabd.png)
<3>创建触发器
![](https://i-blog.csdnimg.cn/blog_migrate/79591a3c6a3b18ea69aab6ba2880acec.png)
<4> 监控主机链接模版,查看数据生成
![](https://i-blog.csdnimg.cn/blog_migrate/5f60c51f84185eee918f45b72aefdf0e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0a0f23fe633091d7a2f64fc9db30c0c3.png)
感谢阅读,本文旨在提供参考,如有错误,欢迎大家指正。帮助编者不断的改进!