2010-06-18 11 views
2

CPU 사용률, 메모리 사용률, I/O 사용률 및 네트워크 사용률을 모니터링 할 수있는 스크립트를 만들려고합니다. 현재 리눅스에서 필요한 명령을 실행해야하는 스크립트가 있습니다. 다행히 결국, 나는 매 15 분마다 이것을 실행할 수있을 것이고, 그런 다음 특정 정보를 사용하여 데이터를 분석 할 수있을 것이다. 다음은 스크립트입니다.리눅스의 성능 모니터링 스크립트

#!/bin/sh 
######################################################## 
OUTPUT="ServerPerf`date '+%d%m%y'`.out" 
(
echo "==================================================" 
echo " Script Starting Time : `date` " 
echo "=================================================" 
echo " Disk I/O Status " 
echo "=================================================" 
echo 
iostat 
echo 
echo "=================================================" 

echo "##################################################" 
echo " NETWORK TCP PARAMETERS STATUS " 
echo "##################################################" 
echo 
echo 
netstat -sp tcp 
echo 
echo " Processes List " 
echo 
ps -elf 
echo 
echo " END " 
echo 
echo "##################################################" 
echo "##################################################" 
echo " NETWORK CONNECTION PARAMETER " 
echo "##################################################" 
echo 
echo 
netstat -an 
echo 
echo 
echo "##################################################" 
echo " NETWORK TRAFFIC STATUS ON INTERFACES " 
echo "##################################################" 
echo 
echo 
netstat -i 
echo 
echo 
echo "##################################################" 
echo " SERVER MEMORY/CPU Utilization Report " 
echo "##################################################" 
echo 
top -d1 -n 5 
echo "==================================================" 
echo " VMSTAT INFO " 
echo "==================================================" 
echo 
vmstat 5 5 
echo 
echo "==================================================" 
echo " Script Ending Time : `date` " 
echo 
echo "==================================================" 
) >> $OUTPUT 

이제 생성 된 이러한 파일에서 유용한 데이터를 가져오고 싶습니다.

  1. 로드 평균
  2. CPU 유휴 비율
  3. 커널 이용
  4. 메모리 사용률
  5. 스와핑 활동

나 ': 데이터로 분류 될 수있는 몇 가지 종류가있다 이 명령을 사용하여이 5 개의 파일을 생성하려고하는데 어려움을 겪고있는 것 같습니다.

grep "load avg" /home/test/logs/ServerPerf180610.out | awk '{ print $6 }' | awk -F, '{ print $1 }' > load_avg.txt 
grep "CPU states" /home/test/logs/ServerPerf180610.out | awk '{ print $3 }' | awk -F% '{ print $1 }' > cpu_idle.txt 
grep "CPU states" /home/test/logs/ServerPerf180610.out | awk '{ print $7 }' | awk -F% '{ print $1 }' > cpu_kernel.txt 
grep "Memory" /home/test/logs/ServerPerf180610.out | awk '{ print $5 }' | awk -FG '{ print $1 }' > memory_util.txt 
grep "Memory" /home/test/logs/ServerPerf180610.out | awk '{ print $11 }' | awk -FG '{ print $1 }' > swap_util.txt 

이러한 명령이 실행되는 동안 출력 파일은 단지 비어 있습니다. 왜 내가이 파일을 생성 할 수 없는지 아는 사람 있습니까?

정말 고맙습니다. 다음은 출력 파일의 복사본입니다 :

는 아론

에게, UDPATE 감사 http://www.queencitytech.com/ServerPerfRepo180610.out

+0

다른 버전이 있기 때문에 확실하게 알 수 없습니다. 하지만 문제 해결을 위해 awk 부분을 제거해 보셨습니까? 즉, 중간에 두 awk 명령 대신 "grep ...> load_avg.txt"를 사용 하시겠습니까? – MJB

+0

맨 위 명령이이 스크립트에서 사용되고 있습니다. 나는 awk를 제거하려고했지만 아무 것도 출력하지 않겠다. – Aaron

+0

vmstat과 dstat은 어떨까요? – Drakosha

답변

0

은 아마 오타입니다,하지만 당신이 찾고있는 파일과 파일 당신이 만드는 다르다. 이다

OUTPUT=... 라인은 일 - 월 - 년라고하지만 그렙 라인은 월 - 일 - 년

편집 말 : OK, 출력 파일을 기록했다. top 명령에서 모든 종류의 특수 문자가 있습니다. 그것을 숨기려면 top에 배치 (top -d1 -n1 -b) 인수를 추가 할 수 있습니까?

다른 편집 : grep 명령이 대소 문자를 구분합니다. 그게 의도적 인거야? 결과는 여러 grep 필터와 일치하지 않습니다. 대문자 소문자 (grep -i)를 명령에 추가하십시오. 또한 "평균로드"를 검색하지만 출력에 "로드 평균"이 표시되므로 절대 찾지 않아야합니다.

+0

사실, 나는 그것이 내 부분에 오타 였음을 사과합니다. 명령을 실행하면 파일과 동일하게 나타납니다. – Aaron

+0

이 좋습니다. 내가 무시하고 사건을 추가하고 적절한 "평균로드"를 검색하면 파일에 모두 4 개의 0이있는 "day"가 표시됩니다. – Aaron

+0

배치 옵션을 맨 위에 추가 했습니까? 나는 화면 상단의 강조 표시, 깜박임, 집 등의 제어 코드를 생성하고 출력을 엉망으로 만들 것이라고 생각합니다. – MJB

관련 문제