셸 스 크 립 트 모니터링 시스템 부하,CPU,메모리 사용 현황

nagios 모니터링 소프트웨어 가 없 는 상황 에서 서버 가 인터넷 에 접속 할 수만 있다 면 메 일 을 보 내 는 방식 으로 관리자 시스템 부하 와 CPU 가 차지 하 는 사용 상황 을 알 릴 수 있 습 니 다.
1.Liux 아래 메 일 클 라 이언 트 msmtp 소프트웨어 설치(foxmail 과 유사 한 도구)
 1.다운로드 설치:
 http://downloads.sourceforge.net/msmtp/msmtp-1.4.16.tar.bz2?modtime=1217206451&big_mirror=0

# tar jxvf msmtp-1.4.16.tar.bz2
# cd msmtp-1.4.16
# ./configure --prefix=/usr/local/msmtp
# make && make install
 2.msmtp 설정 파일 과 로그 파일 만 들 기(host 는 메 일 도 메 인 이름,메 일 사용자 이름 fuquanjun,비밀번호 fuquanjun)

# vim /root/.msmtprc

account default 
host xxxxx.com 
from [email protected] 
auth login 
user fuquanjun
password fuquanjun
logfile ~/.msmtp.log
 # chmod 600  /root/.msmtprc
 # touch ~/.msmtp.log

3.mutt 설치 설정:(일반 Liux 에 서 는 기본 설치 mutt 가 있 습 니 다)
설치 되 어 있 지 않 으 면 yum 으로 설치 합 니 다.

yum -y install mutt
# vim /root/.muttrc
set sendmail="/usr/local/msmtp/bin/msmtp"
set use_from=yes
set realname="moniter"  
set [email protected] 
set envelope_from=yes
set rfc2047_parameters=yes
set charset="utf-8
4.메 일 발송 테스트(-s 메 일 제목,-a 표 첨부)

 # echo " 123456" | mutt -s " " -a /scripts/test.txt  [email protected]
다음 오류 메시지 가 나타 납 니 다.

msmtp: account default not found: no configuration file available
메 시 지 를 보 내 는 중 오류 가 발생 했 습 니 다.하위 프로 세 스 가 78()종료 되 었 습 니 다.
이 메 시 지 를 보 낼 수 없습니다.
해결 방법:
msmtp 를 단독으로 사용 하여 테스트 보 내기:/usr/local/msmtp/bin/msmtp-S  프로필 인 데 못 찾았어 요.

msmtp: account default not found: no configuration file available
현재 프로필 경로 보기:/usr/local/msmtp/bin/msmtp-P

ignoring system configuration file/work/target/etc/msmtprc: No such file or directory
ignoring user configuration file /root/.msmtprc: No such file ordirectory
falling back to default account
msmtp: account default not found: no configuration file available
그래서/usr/local/etc/msmtprc  /root/msmtprc 로 복사
mutt 파일 설치 디 렉 터 리 상황 보기

rpm -ql mutt
그래서/etc/Muttrc  /root/muttrc 로 복사 하면 메 일 을 보 낼 수 있 습 니 다.
2.서버 시스템 부하 상황 모니터링:
1.uptime 명령 으로 현재 부하 상황 보기(1 분,5 분,15 분 평균 부하 상황)는 애플 의 Mac 컴퓨터 에 도 적 용 됩 니 다.

# uptime
   15:43:59 up 186 days, 20:04,  1 user,  load average:  0.01,    0.02,   0.00
'load average'는 각각 1 분,5 분,15 분 동안 시스템 의 평균 부하 라 는 뜻 이다.
(1)주로'15 분 시스템 부하'를 관찰 하고 이 를 컴퓨터 의 정상 적 인 운행 기준 으로 한다.
(2)15 분 안에(시스템 부하 가 CPU 핵심 수량 으로 나 눈 후의)평균 부하 가 1.0 보다 크 면 문제 가 지속 적 으로 존재 하고 일시적인 현상 이 아니 라 는 것 을 나타 낸다.
(3)시스템 부하 가 0.7 보다 크 면 조 사 를 시작 해 야 한다.문제 가 어디 에 있 는 지 상황 이 악화 되 는 것 을 방지 해 야 한다.
(4)시스템 부하 가 1.0 이상 지속 되면 해결 방법 을 찾 아 이 수 치 를 낮 춰 야 한다.
(5)시스템 부하 가 5.0 에 이 르 면 시스템 에 심각 한 문제 가 있 고 장시간 응답 하지 않 거나 다운 에 가 까 워 진 것 을 나타 낸다.
컴퓨터 에 CPU 가 하나 밖 에 없다 고 가정 해 봐.컴퓨터 에 CPU 2 개 를 설치 했다 면 컴퓨터 의 처리 능력 이 배로 늘 었 고 동시에 처리 할 수 있 는 프로 세 스 수도 배로 늘 었 다 는 뜻 이다.
2 개의 CPU 는 시스템 부하 가 2.0 에 달 할 수 있 음 을 나타 내 는데 이때 모든 CPU 는 100%의 작업량 에 달한다.n 개의 CPU 컴퓨터 를 보급 하면 받 아들 일 수 있 는 시스템 부하 가 최대 n.0 이다.
2.서버 cpu 의 총 핵 수 보기

 # grep -c 'model name' /proc/cpuinfo         cat /proc/cpuinfo
3.서버 1 분,5 분,15 분 부하 상황 캡 처

# uptime | awk '{print $8,$9,$10,$11,$12}'
   load average:  0.01,    0.02,   0.00
4.캡 처 15 분 의 평균 부하 보기

# uptime | awk '{print $12}' ( '{print $12}' , awk 12 , 。 $NF )
# uptime | awk '{print $NF}'
5.시스템 부하 모니터링 스 크 립 트 파일 작성:

# vim /scripts/load-check.sh
[code]
#!/bin/bash 
# uptime linux  
 
# ( >>) 
date >> /scripts/datetime-load.txt    
 
# 1 、5 、15  
uptime | awk '{print $8,$9,$10,$11,$12}' >> /scripts/load.txt 
 
# ( >) 
paste  /scripts/datetime-load.txt /scripts/load.txt   > /scripts/load_day.txt
# chmod a+x /scripts/load-check.sh
6.시스템 부하 결과 파일 메 일 발송 스 크 립 트 작성:

# vim /scripts/sendmail-load.sh

#!/bin/bash 
# load_day.txt  
 
# IP  
IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "` 
 
#  
today=`date -d "0 day" +%Y %m %d ` 
 
#  
echo " $IP $today , 。" | mutt -s "$IP $today " -a /scripts/load_day.txt  [email protected]
# chmod a+x /scripts/sendmail-load.sh

7.시스템 부하 모니터링 스 크 립 트 파일 작성:

# vim /scripts/load-warning.sh

#!/bin/bash 
# uptime linux  
 
# IP  
IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "` 
 
# cpu  
cpu_num=`grep -c 'model name' /proc/cpuinfo` 
 
# 15  
load_15=`uptime | awk '{print $NF}'` 
 
# 15 , 1.0 0。 
average_load=`echo "scale=2;a=$load_15/$cpu_num;if(length(a)==scale(a)) print 0;print a" | bc` 
 
#  
average_int=`echo $average_load | cut -f 1 -d "."` 
 
# 15 0.70( 70% )。 
load_warn=0.70 
 
# 15 1.0( 0) , ; 1.0  
if (($average_int > 0)); then 
      echo "$IP 15 $average_load, 1.0, !!!" | mutt -s "$IP !!!"  [email protected] 
else 
# 15 ( 0.70 1, 0 ) 
load_now=`expr $average_load \> $load_warn` 
 
# 15 0.70( 1),  
 if (($load_now == 1)); then 
    echo "$IP 15 $average_load, 0.70, 。" | mutt -s "$IP "  [email protected] 
 fi 
fi
 # chmod a+x /scripts/load-warning.sh

3.서버 시스템 cpu 점용 상황 모니터링:
1.top 명령 으로 Liux 시스템 cpu 사용 현황 보기:

#  top -b -n 1 | grep Cpu   (-b -n 1 1 )
     Cpu(s):  0.0%us,  0.0%sy,  0.0%ni, 99.9%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
2.남 은 cpu 를 캡 처 하 는 백분율 값 명령 보기(정수 부분 만 가 져 오기):

# top -b -n 1 | grep Cpu | awk '{print $5}' | cut -f 1 -d "."
3.cpu 모니터링 스 크 립 트 파일 작성:

# vim /scripts/cpu-check.sh

#!/bin/bash 
# top linux cpu  
 
# ( >>) 
date >> /scripts/datetime-cpu.txt    
 
# cpu ( >>) 
top -b -n 1 | grep Cpu  >> /scripts/cpu-now.txt  
 
# cpu ( >) 
paste  /scripts/datetime-cpu.txt   /scripts/cpu-now.txt  > /scripts/cpu.txt
# chmod a+x /scripts/cpu-check.sh

4.CPU 모니터링 결과 파일 보기:

# cat /scripts/cpu.txt
5.cpu 결과 파일 을 작성 하여 메 일 로 스 크 립 트 를 보 냅 니 다:

# vim /scripts/sendmail-cpu.sh
#!/bin/bash 
# cpu.txt  
 
# IP  
IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "` 
 
#
today=`date -d "0 day" +%Y %m %d ` 
 
# cpu  
echo " $IP $today cpu , 。" | mutt -s "$IP $today CPU " -a /scripts/cpu.txt  [email protected]
 # chmod a+x /scripts/sendmail-cpu.sh
 
4.시스템 cpu 의 상황 을 감시 하고 80%가 넘 을 때 경고 메 일 을 보 냅 니 다.

# vim /scripts/cpu-warning.sh
#!/bin/bash 
# cpu  
 
# IP  
IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "` 
 
# cpu ( ) 
cpu_idle=`top -b -n 1 | grep Cpu | awk '{print $5}' | cut -f 1 -d "."` 
 
# cpu 20%, cpu 80%( 20%),  
if (($cpu_idle < 20)); then 
      echo "$IP cpu $cpu_idle%, 80%, 。" | mutt -s "$IP CPU "  [email protected] 
fi
# chmod a+x /scripts/cpu-warning.sh
5.free 명령 으로 시스템 메모리 모니터링:
1.free 명령 을 사용 하여 Liux 시스템 의 메모리 사용 상황 을 봅 니 다.(M 단위)

# free -m 
             total       used       free     shared    buffers     cached
Mem:          3952       3414        538          0        168        484
-/+ buffers/cache:       2760       1191
Swap:         8191         86       8105
2.남 은 메모리 free 를 캡 처 하 는 수치 명령 보기:
(1)물리 메모리 무료 값:\#free-m|grep Mem|awk'{print$4}'
(2)버퍼 의 free 값:\#free-m|grep-|awk'{print$4}'
(3)구역 별 무료 값 스 왑:\#free-m|grep 스 왑|awk'{print$4}'
3.메모리 모니터링 스 크 립 트 파일 작성:

# vim /scripts/free-mem.sh
#!/bin/bash 
# free linux  
 
# ( >>) 
date >> /scripts/date-time.txt    
 
# free ( >>) 
echo Mem-free: `free -m | grep Mem | awk '{print $4}'`M >> /scripts/mem-free.txt  
 
# free ( >>) 
echo buffers/cache-free: `free -m | grep - | awk '{print $4}'`M  >> /scripts/buffers-free.txt 
 
# Swap free ( >>) 
echo Swap-free: `free -m | grep Swap | awk '{print $4}'`M  >> /scripts/swap-free.txt 
 
# ( >) 
paste  /scripts/date-time.txt /scripts/mem-free.txt  /scripts/buffers-free.txt   /scripts/swap-free.txt   > /scripts/freemem.txt
# chmod a+x /scripts/free-mem.sh
4.메모리 모니터링 결과 파일 보기:

# cat /scripts/freemem.txt
5.free 결과 파일 을 작성 하여 메 일 로 스 크 립 트 를 보 냅 니 다:

# vim /scripts/sendmail-mem.sh
#!/bin/bash 
# freemem.txt  
 
# IP  
IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "` 
 
#  
today=`date -d "0 day" +%Y %m %d ` 
 
#  
echo " $IP $today , 。" | mutt -s "$IP $today " -a /scripts/freemem.txt [email protected]
# chmod a+x /scripts/sendmail-mem.sh
6.시스템 교환 구역 swap 의 상황 을 감시 하고 80%가 넘 을 때 경고 메 일 을 보 냅 니 다.

# vim /scripts/swap-warning.sh
#!/bin/bash 
 
# IP  
IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "` 
 
#  
swap_total=`free -m | grep Swap | awk '{print  $2}'` 
 
# free  
swap_free=`free -m | grep Swap | awk '{print  $4}'` 
 
# used  
swap_used=`free -m | grep Swap | awk '{print  $3}'` 
 
 
if (($swap_used != 0)); then 
 
# , free , , 0 
   swap_per=0`echo "scale=2;$swap_free/$swap_total" | bc` 
 
# 20%( 80% )。 
   swap_warn=0.20 
 
# ( ( 20% ) 1, ( 20%) 0 ) 
   swap_now=`expr $swap_per \> $swap_warn` 
 
# 80%( 20%, 0),  
  if (($swap_now == 0)); then 
    echo "$IP swap $swap_free M , 20%, 80%, 。" | mutt -s "$IP "  [email protected] 
  fi 
fi
# chmod a+x /scripts/swap-warning.sh
7.퀘 스 트 가입 계획:시스템 부하 와 CPU 점용 율 은 10 분 마다 한 번 검 측 하고 경고 가 있 으 면 즉시 메 일(10 분 에 한 번 발송)을 보 내 며 부하 와 CPU 검 측 결과 메 일 은 매일 아침 8 시 에 한 번 발송 합 니 다.
# crontab -e
*/10 * * * *  /scripts/load-check.sh > /dev/null 2>&1
*/10 * * * *  /scripts/load-warning.sh 
0 8 * * *  /scripts/sendmail-load.sh 
 
*/10 * * * *  /scripts/cpu-check.sh 
*/10 * * * *  /scripts/cpu-warning.sh 
0 8 * * *  /scripts/sendmail-cpu.sh
 
*/10 * * * *  /scripts/free-mem.sh 
*/10 * * * *  /scripts/swap-warning.sh 
0 8 * * *  /scripts/sendmail-mem.sh
# service crond restart

좋은 웹페이지 즐겨찾기