標籤:90-nproc.conf nagios processes
最近在剛好一些業務經常把線程跑滿,導致伺服器資源用完,所以就寫了一個指令碼用於Nagios下相關進程的最大線程數的監控,Unix的伺服器上最大的線程數預設的是1024,當然在業務繁忙的伺服器中這樣肯定是不夠用的,當然在實際生產環境中做初始化調優時一般都會有做過修改,如開啟開啟檔案的最大控制代碼數等等,一般情況下我們都是修改/etc/security/limits.conf檔案,但是要修改最大線程樹就要修改/etc/security/limits.d/90-nproc.conf檔案了,修改就和修改limits.conf檔案檔案的方式一樣,在此就不做過多的解釋,我一般把所有使用者的最大的線程數都調大
* soft nproc 65535
在調整好後線程數的預警值可以根據實際情況調整,,指令碼實現也很簡單,如下:
#!/bin/bash#check_pstree.sh#Used for pstree process monitoring#writer jim#history 2017.07.01# Nagios 傳回值STATE_OK=0STATE_WARNING=1STATE_CRITICAL=2STATE_UNKNOWN=3#對傳遞進來的參數判斷if [ $# -lt 1 ];then echo "Please enter the process string" echo "ex> $0 java" exit $STATE_UNKNOWNfiif [ $# -gt 1 ]; then echo "The input parameters are too much" echo "ex> $0 java" exit $STATE_UNKNOWNfireg_name=$1process_pid=$(ps -ef | grep "$reg_name " | grep -v grep | awk ‘{print $2}‘)declare -i max_process_num=$(ulimit -an | grep "max user processes" | awk ‘{print $5}‘)declare -i warning_num=$max_process_num/2#在此預警值取最大線程數的50%,具體可以根據實際生產環境修改pstree_num=$(pstree -p $process_pid | wc -l)if [ $pstree_num -le $warning_num ];then echo "$reg_name pstree number is:$pstree_num;warning_num is:$warning_num;max user processes is:$max_process_num,OK" exit $STATE_OKelse echo "error!!!The number of pstree is too much.the number is:$pstree_num" exit $STATE_CRITICALfi
當然在這個指令碼也可以修改後用cron任務中做定時檢查,不過在Nagios中不知為何線程數的值在Nagios的監控頁面下顯示總有異常,不過直接執行是沒有問題的。
本文出自 “技術隨筆” 部落格,謝絕轉載!
用於Nagios中監控伺服器處理序的最大線程數