在實際環境下,由於開發程序的問題,在一段時間後,打開文件句柄數達到了最大值,導致服務崩潰,從而無法進入服務器進行解決,只能通過重啓服務器。爲了防止此類問題的發生,所以對打開文件句柄數進行監控。
一、創建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}"
三、zabbix控制面板進行監控
<1> 創建模版,創建應用集
<2> 創建項目,定義key
<3>創建觸發器
<4> 監控主機鏈接模版,查看數據生成
感謝閱讀,本文旨在提供參考,如有錯誤,歡迎大家指正。幫助編者不斷的改進!