Chinaunix首页 | 论坛 | 博客
  • 博客访问: 924012
  • 博文数量: 376
  • 博客积分: 154
  • 博客等级: 入伍新兵
  • 技术积分: 1558
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-13 08:42
文章分类

全部博文(376)

文章存档

2014年(11)

2013年(88)

2012年(260)

2011年(17)

分类:

2011-12-01 14:17:16

原文地址:生产服务器监控脚本 作者:zzkmatthew

去年写得一个监控脚本,现在贴给大家,希望对大家有用,本脚本主要监控 流量、负载、inode、进程文件打开数等。
适用于:RedHat、Centos、Fedora (Unix下需要做小小的调试)
使用方法:
1、mkdir -p /var/log/system 
2、然后写入计划任务
   -->
crontab -e
*/5 * * * * /var/log/system/system_monitor.sh
3、vim /var/log/system/system_monitor.sh  
|
  1. #!/bin/sh
  2. # By Zongzhuangkai
  3. # 2010/12/3

  4. PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
  5. export PATH

  6. #This is the network Traffic monitoring

  7. if [ -n "$1" ]; then
  8. eth_name=$1
  9. else
  10. eth_name="eth0"
  11. fi
  12. send_first=`cat /tmp/send_first`
  13. recv_first=`cat /tmp/recv_first`
  14. send_o=`/sbin/ifconfig $eth_name | grep bytes | awk '{print $6}' | awk -F : '{print $2}'`
  15. recv_o=`/sbin/ifconfig $eth_name | grep bytes | awk '{print $2}' | awk -F : '{print $2}'`
  16. send_r=`expr $send_o - $send_first`
  17. recv_r=`expr $recv_o - $recv_first`
  18. total_sr=`expr \( $send_r + $recv_r \) / 1024`
  19. /sbin/ifconfig $eth_name | grep bytes | awk '{print $6}' | awk -F : '{print $2}' > /tmp/send_first
  20. /sbin/ifconfig $eth_name | grep bytes | awk '{print $2}' | awk -F : '{print $2}' > /tmp/recv_first

  21. #system_monitor
  22. day=$(date +%m%d%Y)
  23. file="/var/log/system/sysinfo$day"
  24. memtotal=`awk '$1 ~ /MemTotal/{print $2}' /proc/meminfo`
  25. if [ -f $file ]; then
  26.       echo "ok">/dev/null
  27. else
  28. echo "date cpu/avg mem/avg load average inode http java oracle app_procnumber Packet_flow">>$file
  29. echo "">>$file
  30. fi
  31. time=$(date '+%Y%m%d_%H:%M:%S')
  32. load=$(uptime | sed 's/\,//g' | awk -F"average:" '{print $2}')
  33. inode=$(df -i | awk 'NR==3{print $4}')
  34. cpu=$(vmstat 1 2| awk '{NR==$NR}END{printf "%.1f%\n", 100-$15}')
  35. mem=$(vmstat | awk 'BEGIN{i=0}{NR==$NR}{i='$memtotal'-$4}END{printf "%.2f%\n", i/'$memtotal'*100}')
  36. httpd_number=$(ps -ef | grep "httpd"| grep -v grep|wc -l)
  37. app_number=$(ps -ef |grep "java"|grep -v grep | wc -l)
  38. oracle_number=$(ps -ef|grep "LOCAL=NO"|grep -v grep|wc -l)
  39. java_pid=$(ps -ef | grep java|grep -v grep |grep -v jdk|awk '{print $2}' | awk 'NR==1{print $1}')
  40. java_pid2=$(ps -ef | grep java|grep -v grep |grep -v jdk|awk '{print $2}' | awk 'NR==2{print $1}')
  41. #if [[ $java_pid"zzk" != "zzk" ]]
  42. #then
  43. # app_number=$(lsof -p $java_pid)
  44. # app_number2=$(lsof -p $java_pid2)
  45. # app_procnumber=echo ${app_number}+${app_number2} | bc
  46. #else
  47. # app_procnumber=none
  48. #fi
  49. echo "${time} ${cpu} ${mem} ${load} ${inode} ${httpd_number} ${app_number} ${oracle_number} ${app_procnumber} ${total_sr}KB" >>$file
阅读(347) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~