技术改变世界 阅读塑造人生! - shaogx.com

This string was altered by TechBlog\Plugins\Example.; This is an example to show the potential of an offcanvas layout pattern in Bootstrap. Try some responsive-range viewport sizes to see it in action.

一个能监控系统资源的shell脚本

 刚写了个监控系统资源的脚本,就是一个抛砖引玉的效果。大家可以研究下。前边的数值可以改下,改成自己想监控的大小,监控脚本执行内容之前的变量是设置监控信息的,按需求修改。[root@AR log]# cat monitor #!/bin/bash#System Monitoring Scriptwhile [ 1 ]do#本机需开启postfix或sendmail服务。#报警邮件地址设置MAILFROM=monitor@zhaoyun.comMAILTO=zhaoyun006@163.com#设置脚本运行间隔时间。单位(秒)。RUNTIME=1#内存使用率监控设置,单位 (%)MEMTHRE=90#流量监控设置#要监控的网卡ETHX=eth0#填写大于多少MB的时候发送警报,单位(MB)INFLOWTHREMB=50OUTFLOWTHREMB=50#填写大于多少KB的时候发送警报,单位(KB)INFLOWTHREKB=500OUTFLOWTHREKB=500#TCP连接状态数量监控设置#填写最大连接的个数TIME_WAIT=10FIN_WAIT1=20FIN_WAIT2=20ESTABLISHED=20SYN_RECV=10CLOSE_WAIT=10CLOSING=10LAST_ACK=10#CPU使用率监控设置#填写cpu使用率大于多少发送报警,单位(%)CPUTHRE=5#硬盘使用大小设置#填写硬盘占用率,单位(%)ROOT=80VAR=100USR=100BOOT=80#调试模式开关。(YES/NO)DBUG=NO#                 监 控 脚 本 执 行 内 容      ################################################################################time=`date +"%Y-%m-%d %H:%M:%S"`#内存监控部分NULL=/dev/nullMEM=`free -m |grep Mem |awk '{print $3/$2*100}'`MEMB=`free -m |grep Mem |awk '{print $2,$4+$6+$7}'|awk '{print $1,$1-$2}'| awk '{print $2/$1*100}'`#echo $MEM#echo $MEMBMA=`expr $MEM \> $MEMTHRE `if [ $MA -eq 1 ] ; thensendmail -t <<EOFfrom: $MAILFROMto:$MAILTOsubject: warning $time MEM内存警告,当前内存占用率为$MEM %,大于$MEMTHRE %.EOF    fiMB=`expr $MEMB \> $MEMTHRE`if [ $MB -eq 1 ] ; thensendmail -t <<EOFfrom: $MAILFROMto:$MAILTOsubject: warning $time MEMB内存警告,当前内存占用率为$MEMB %,大于$MEMTHRE %EOF    fi#流量监控部分FLOWA=/tmp/.flowifconfig $ETHX |grep "RX byte" |awk '{print $2"    "$6}' |awk -Fbytes: '{print "INPUT  "$2"OUTPUT  "$3}'\ > $FLOWAINPUTA=`cat $FLOWA |awk '{print $2}'`OUTPUTA=`cat $FLOWA |awk '{print $4}'`sleep 1ifconfig $ETHX |grep "RX byte" |awk '{print $2"    "$6}' |awk -Fbytes: '{print "INPUT  "$2"OUTPUT  "$3}'\ > $FLOWAINPUTB=`cat $FLOWA |awk '{print $2}'`OUTPUTB=`cat $FLOWA |awk '{print $4}'`INPUTC=`echo "$INPUTB-$INPUTA" | bc`OUTPUTC=`echo "$OUTPUTB-$OUTPUTA"| bc`INPUTMBA=`echo "$INPUTC/1024"|bc`OUTPUTMBA=`echo "$OUTPUTC/1024"|bc`INMBF=/tmp/.inputMBOUTMBF=/tmp/.outputMBecho `echo "scale=4;$INPUTMBA/1024"|bc`MB > $INMBFecho `echo "scale=4;$OUTPUTMBA/1024"|bc`MB > $OUTMBFINMB=`cat $INMBF |awk '{print $1}'`OUTMB=`cat $OUTMBF |awk '{print $1}'`  if [ $INPUTMBA -gt 1024 ] ; then              if [ $INMB -gt $INFLOWTHREMB ] ;thensendmail -t <<EOFfrom: $MAILFROMto:$MAILTOsubject: warning$time 流量警告,当前流量异常,请登录服务器查看。当前速率$INMB MB/秒,大于$INFLOWTHREMB MB/秒。EOF              fi    if [ $OUTMB -gt $OUTFLOWTHREMB ] ;thensendmail -t <<EOFfrom: $MAILFROMto:$MAILTOsubject: warning$time 流量警告,当前流量异常,请登录服务器查看。当前速率$OUTMB MB/秒 大于$OUTFLOWTHREMB MB/秒。EOF    fielseINKBF=/tmp/.inputKBOUTKBF=/tmp/.outputKBecho $INPUTMBA KB > $INKBFecho $OUTPUTMBA KB > $OUTKBFINKB=`cat $INKBF |awk '{print $1}'`OUTKB=`cat $OUTKBF |awk '{print $1}'`              if [ $INKB -gt $INFLOWTHREKB ] ; thensendmail -t <<EOFfrom: $MAILFROMto:$MAILTOsubject: warning$time 流量警告,当前流量异常,请登录服务器查看。$INKB KB/秒 大于$INFLOWTHREKB KB/秒。EOF              fi    if [ $OUTKB -gt $OUTFLOWTHREKB ] ;thensendmail -t <<EOFfrom: $MAILFROMto:$MAILTOsubject: warning$time 流量警告,当前流量异常,请登录服务器查看。当前速率$OUTKB KB/秒大于$INFLOWTHREKB KB/秒。EOF    fifi#连接数tcpfile=/tmp/.tcpnetstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' >$tcpfilegrep TIME_WAIT $tcpfile > $NULLif [ $? -eq 1 ] ; thenecho "TIME_WAIT 0 " >> $tcpfilefigrep FIN_WAIT1 $tcpfile > $NULLif [ $? -eq 1 ] ; thenecho "FIN_WAIT1 0 " >> $tcpfilefigrep FIN_WAIT2 $tcpfile  > $NULLif [ $? -eq 1 ] ; thenecho "FIN_WAIT2 0 " >> $tcpfilefigrep CLOSE_WAIT $tcpfile  > $NULLif [ $? -eq 1 ] ; thenecho "CLOSE_WAIT 0 " >> $tcpfilefigrep LAST_ACK $tcpfile  > $NULLif [ $? -eq 1 ] ; thenecho "LAST_ACK 0 " >> $tcpfilefigrep SYN_RECV $tcpfile  > $NULLif [ $? -eq 1 ] ; thenecho "SYN_RECV 0 " >> $tcpfilefigrep CLOSING $tcpfile  > $NULLif [ $? -eq 1 ] ; thenecho "CLOSING 0 " >> $tcpfilefigrep ESTABLISHED $tcpfile  > $NULLif [ $? -eq 1 ] ; thenecho "ESTABLISHED 0 " >> $tcpfilefiTIME_WAITV=`grep TIME_WAIT $tcpfile | awk '{print $2}'`FIN_WAIT1V=`grep FIN_WAIT1 $tcpfile | awk '{print $2}'`FIN_WAIT2V=`grep FIN_WAIT2 $tcpfile | awk '{print $2}'`ESTABLISHEDV=`grep ESTABLISHED $tcpfile | awk '{print $2}'`SYN_RECVV=`grep SYN_RECV $tcpfile | awk '{print $2}'`CLOSINGV=`grep CLOSING $tcpfile | awk '{print $2}'`CLOSE_WAITV=`grep CLOSE_WAIT $tcpfile | awk '{print $2}'`LAST_ACKV=`grep LAST_ACK $tcpfile | awk '{print $2}'`  if [ $ESTABLISHEDV -gt $ESTABLISHED ] ; thensendmail -t <<EOFfrom: $MAILFROMto:$MAILTOsubject: warning$time 连接数警告,当前ESTABLISHED连接数异常,请登录服务器查看。当前连接数为$ESTABLISHEDV个,大于$ESTABLISHED个EOF  fi  if [ $SYN_RECVV -gt $SYN_RECV ] ; thensendmail -t <<EOFfrom: $MAILFROMto:$MAILTOsubject: warning$time 连接数警告,当前SYN_RECV连接数异常,请登录服务器查看。当前连接数为$SYN_RECVV个,大于$SYN_REC个。EOF  fi if [ $CLOSE_WAITV -gt $CLOSE_WAIT ] ; thensendmail -t <<EOFfrom: $MAILFROMto:$MAILTOsubject: warning$time 连接数警告,当前CLOSE_WAIT连接数异常,请登录服务器查看。当前连接数为$CLOSE_WAITV个,大于$CLOSE_WAIT个。EOF  fi  if [ $CLOSINGV -gt $CLOSING ] ; thensendmail -t <<EOFfrom: $MAILFROMto:$MAILTOsubject: warning$time 连接数警告,当前CLOSING连接数异常,请登录服务器查看。当前连接数为$CLOSINGV个,大于$CLOSING个。EOF  fi  if [ $LAST_ACKV -gt $LAST_ACK ] ; thensendmail -t <<EOFfrom: $MAILFROMto:$MAILTOsubject: warning$time 连接数警告,当前LAST_ACK连接数异常,请登录服务器查看。当前连接数为$LAST_ACKV个,大于$LAST_ACK个。     EOF  fiif [ $TIME_WAITV -gt $TIME_WAIT ] ; thensendmail -t <<EOFfrom: $MAILFROMto:$MAILTOsubject: warning$time 连接数警告,当前TIME_WAIT连接数异常,请登录服务器查看。当前连接数为$TIME_WAITV个,大于$TIME_WAIT个。     EOF  fiif [ $FIN_WAIT1V -gt $FIN_WAIT1 ] ; thensendmail -t <<EOFfrom: $MAILFROMto:$MAILTOsubject: warning$time 连接数警告,当前FIN_WAIT1连接数异常,请登录服务器查看。当前连接数为$FIN_WAIT1V个,大于$FIN_WAIT1个。   EOF  fiif [ $FIN_WAIT2V -gt $FIN_WAIT2 ] ; thensendmail -t <<EOFfrom: $MAILFROMto:$MAILTOsubject: warning$time 连接数警告,当前FIN_WAIT2连接数异常,请登录服务器查看。当前连接数为$FIN_WAIT2V个,大于$FIN_WAIT2个。EOF  fiDISKF=/tmp/.diskdf -h > $DISKFgrep var $DISKF > $NULLif [ $? -eq 1 ] ; thenecho "/dev/sda1 20G  1.6G   17G   0% /var" >> $DISKFfigrep usr $DISKF > $NULLif [ $? -eq 1 ] ; thenecho "/dev/sda1 20G  1.6G   17G   0% /usr" >> $DISKFfigrep boot $DISKF > $NULLif [ $? -eq 1 ] ; thenecho "/dev/sda1 20G  1.6G   17G   0% /boot" >> $DISKFfiBOOTV=`cat $DISKF | grep boot  | awk '{print $5}'|awk -F% '{print $1}'`VARV=`cat  $DISKF  | grep var  | awk '{print $5}'|awk -F% '{print $1}'`USRV=`cat  $DISKF  | grep usr  | awk '{print $5}'|awk -F% '{print $1}'`grep VolGroup $DISKF > $NULLif [ $? -eq 0 ] ;thenROOTV=`cat $DISKF | sed -n '3p' |awk '{print $4}'|awk -F% '{print $1}'`elseROOTV=`cat $DISKF | sed -n '2p'|awk '{print $5}'|awk -F% '{print $1}'`fiif [ $ROOTV -gt $ROOT ] ; thensendmail -t <<EOFfrom: $MAILFROMto:$MAILTOsubject: warning$time 磁盘使用警告,您监控的 /  分区已经大于你设置的数值$ROOT %,详情登陆系统查看,目前使用率为$ROOTV %.EOFfiif [ $VARV -gt $VAR ] ; thensendmail -t <<EOFfrom: $MAILFROMto:$MAILTOsubject: warning$time 磁盘使用警告,您监控的 /var 分区已经大于你设置的数值$VAR %,详情登陆系统查看,目前使用率为$VARV %.EOFfiif [ $BOOTV -gt $BOOT ] ; thensendmail -t <<EOFfrom: $MAILFROMto:$MAILTOsubject: warning$time 磁盘使用警告,您监控的 /boot  分区已经大于你设置的数值 $BOOT %,详情登陆系统查看,目前使用率为$BOOTV %.EOFfiif [ $USRV -gt $USR ] ; thensendmail -t <<EOFfrom: $MAILFROMto:$MAILTOsubject: warning$time 磁盘使用警告,您监控的 /usr  分区已经大于你设置的数值$USR %,详情登陆系统查看,目前使用率为$USRV %.EOFfi#CPUTotalA=`cat /proc/stat | sed -n '1p' | awk '{print $2+$3+$4+$5+$6+$7+$8}'`IDLEA=`cat /proc/stat |sed -n '1p' |awk '{print $5}'`sleep 2TotalB=`cat /proc/stat | sed -n '1p' | awk '{print $2+$3+$4+$5+$6+$7+$8}'`IDLEB=`cat /proc/stat |sed -n '1p' |awk '{print $5}'`Total=`echo "$TotalB-$TotalA" |bc`Idle=`echo "$IDLEB-$IDLEA" |bc`USAGE=`echo "$Idle/$Total*100"|bc -l`RATE=`echo "100-$USAGE "|bc -l`USERATE=`echo "scale=2;$RATE/1"|bc`%CA=`expr $USERATE \> $CPUTHRE`if [ $CA -eq 1 ] ; thensendmail -t <<EOFfrom: $MAILFROMto:$MAILTOsubject: warning$time CPU使用警告,您监控的CPU使用率,已经超过您设置的限额$CPUTHRE % ,当前CPU使用率为$USERATE .EOFfiCPURATE=`top -b -n 1 |grep Cpu | awk '{print $5}' |awk -F%id '{print 100-$1}'`CB=`expr $CPURATE \> $CPUTHRE`if [ $CB -eq 1  ] ; thensendmail -t <<EOFfrom: $MAILFROMto:$MAILTOsubject: warning$time CPU使用警告,您监控的CPU使用率,已经超过您设置的限额$CPUTHRE %,当前CPU使用率为$CPURATE .EOFfiDBUGS=YESif [ "$DBUGS" == "$DBUG" ] ; thenecho "           "'& 内  存 &' ;echo \ ;echo "  "当前程序占用内存为 $MEMB % ,总占用内存为 $MEM % ; echo \ ;echo "           "'& 流  量 &'; echo \ ;YA=`wc -l $INMBF > /dev/null 2>&1 ; echo $?`    if [ $YA -eq 1 ] ; thenecho 0 > $INMBF    fiIN=`expr $INMB \> $INFLOWTHREMB >$NULL; echo $? ` 2> $NULL         if [ $IN -eq 1 ] ; thenecho "    "当前输入流量为 $INMB MB/秒 .; echo "    "当前输入流量为 $INKB KB/秒 .;           fiYB=`wc -l $OUTMBF > /dev/null 2>&1 ; echo $?`       if [ $YB -eq 1 ] ; thenecho 0 > $OUTMBF        fiOUT=`expr $OUTMB \> $OUTFLOWTHREMB >$NULL ; echo $?` 2> $NULL    if [ $OUT -eq 1 ] ; thenecho "    "当前输出流量为 $OUTMB MB/秒。 ;  echo "    "当前输出流量为 $OUTKB KB/秒。 ; echo \ ;    fiecho "           "'& 连接数 &' ; echo \ ;echo "    "当前TIME_WAIT"  " 连接数为 $TIME_WAITV 个。echo "    "当前FIN_WAIT1"  " 连接数为 $FIN_WAIT1V 个。echo "    "当前FIN_WAIT2"  " 连接数为 $FIN_WAIT2V 个。echo "    "当前CLOSE_WAIT" " 连接数为 $CLOSE_WAITV 个。echo "    "当前ESTABLISHED"" 连接数为 $ESTABLISHEDV 个。echo "    "当前SYN_RECV"   " 连接数为 $SYN_RECVV 个。echo "    "当前LAST_ACKV"  " 连接数为 $LAST_ACKV 个。echo "    "当前CLOSING"    " 连接数为 $CLOSINGV 个。; echo \ ;echo "         "'& CPU使用率 &' ; echo \ ;echo "    "当前CPU 进程使用率为 $USERATE  . ;echo \ ;echo "         "'& 磁盘使用率 &' ; echo \ ;echo "    "当前"  "/"  "分区,"  "使用率为 $ROOTV %.echo "    "当前/var 分区, 使用率为 $VARV %.echo "    "当前/boot分区, 使用率为 $BOOTV %.echo "    "当前/usr 分区, 使用率为 $USRV %.exit fisleep $RUNTIMEdone 运行方法,在后台运行。[root@AR log]# ./monitor & 停止方法[root@AR log]# ps -aux |grep monitor | grep -v grep | awk '{print $2}' | xargs kill -9邮件效果截图   打开DBUG后效果截图,设置DBUG=YES时生效。   本文出自 “技术交流” 博客,请务必保留此出处http://zhaoyun.blog.51cto.com/2090116/626083... 全文

shell 系统监控 脚本 系统资源监控 休闲

运维自动化之使用PHP+MYSQL+SHELL打造私有监控系统(二)

现在开始介绍php+mysql+shell监控系统 1、目的       此监控系统主要是通过php+mysql+shell的方式,通过shell脚本对各个机器的其各个服务进行监控,达到及时的了解其各个应用服务的状态(如果宕掉与启动),在检测应用服务宕掉时,记录在日志里与mysql数据库服务器里,同时进行服务宕掉的邮件提示,并自动启动宕掉的应用服务;在检测应该服务启动时,同时进行服务启动的邮件提示,所有的监控内容都能在php制作的web里进行浏览,同时能根据mysql里的数据,把资源监控数据视图化,在浏览数据的时候,更方便。2、实现的机制       监控方式主要是通过shell脚本的实现,针对应用服务运行的端口进行监控,如果其端口开启,则证明此服务运行,反之则此服务没有运行。3、监控的应用服务       监控的应用服务有:A、应用服务器的服务监控web:http、yu_tomcat、tomcat 共3个交换: pas、ppas、mas、mmas、cas共5个引擎:memcache、datastorageservice、http、dbstatserver共4个B:应用服务器的资源监控硬盘使用率、cpu使用率、硬件启动信息错误、i/o使用率、15分钟内的负载、内存使用率(包括内存与swap)、日志错误信息、当前用户登录数4、已经监控的省份       目前天津、广西、贵州、海南、河北、河南、湖北、湖南、宁夏、陕西、青海、西藏、新疆、包头、甘肃、江西都已经部署完成,经过3个月的测试,没有发现问题。5、shell监控脚本内容与解释(1)web服务器(以甘肃web为例)#!/bin/bash  #ip  web_ip=$(/sbin/ifconfig eth0|grep "inet addr"|cut -d : -f 2|awk '{print $1}')  ##eth0网卡的ip  #name  web_name=$(hostname)  ##web主机名  monitor_name=web ##监控的服务器是什么类型  here='gansu' ##监控的省份  #mysql info  mysql_ip='1.1.1.1' ##数据库的ip  mysql_username='root' ##数据库的用户  mysql_passwd='****' #数据库的密码  mysql_database='monitor' ##选择的数据库  memory_table=''$here'_memory'  load_table=''$here'_load'  io_table=''$here'_io'  hardware_table=''$here'_hardware'  message_table=''$here'_message'  user_table=''$here'_user'  disk_table=''$here'_disk'  cpu_table=''$here'_cpu'  service_table=''$here'_service'  ##想数据库里写入的表  #date and log  day="$(date +%Y%m%d)" worklog='/usr/local/monitor/logs/all_work_log' downlog='/usr/local/monitor/logs/all_down_log' ##日志与实际  now="$(date +%Y-%m-%d-%T)" #web service  tomcat="$(netstat -antl|grep 8080|wc -l)" web_http="$(ps -ef|grep httpd|grep -v grep|wc -l)" yz_tomcat="$(netstat -antl|grep 8081|wc -l)" ##通过端口与服务在后头的运行情况监控其运行状态  #cpu service  alert_cpu='80' ##cpu的报警阀值  web_cpu_idle="$(top -b -n 1 | grep Cpu | awk '{print $5}' | cut -f 1 -d .)" web_cpu="$(echo 100 - $web_cpu_idle|/usr/bin/bc)" ##监控cpu的使用率  #memory service  alert_mem='100' ##内存的报警阀值  web_mem="$(/usr/bin/free -m|grep Mem|awk '{print $4}')" web_swap="$(/usr/bin/free -m|grep Swap|awk '{print $3}')" ##memory与swap的使用率  alert_swap='0' ##swap的报警阀值  #memory log  memory_worklog='/usr/local/monitor/logs/mem_work_log' memory_downlog='/usr/local/monitor/logs/mem_down_log' #load service  cpu_count="$(grep -c 'model name' /proc/cpuinfo)" alert_load="$(echo $cpu_count/2|/usr/bin/bc)" web_load="$(uptime|awk '{print $NF}'|cut -f 1 -d .)" web_load_15="$(uptime|awk '{print $NF}')" #监控负载的使用率  #load log  load_worklog='/usr/local/monitor/logs/load_work_log' load_downlog='/usr/local/monitor/logs/load_down_log' #io service  alert_io='80' web_io_idle_back="$(/usr/bin/iostat|awk 'NR==4{print $NF}'|cut -f 1 -d .)" web_io_idle="$(echo 100 - $web_io_idle_back|/usr/bin/bc)" ##io的使用值  #io log  io_worklog='/usr/local/monitor/logs/io_work_log' io_downlog='/usr/local/monitor/logs/io_down_log' #hardware service  web_hardware_error="$(dmesg|grep -i error|wc -l)" web_info_error="$(dmesg|grep -i error)" ##开机启动的错误信息  #hardware error log  hard_worklog='/usr/local/monitor/logs/hard_work_log' hard_downlog='/usr/local/monitor/logs/hard_down_log' #message service  web_message_error_count="$(awk '/"$(date +%Y%m%d)"/' /var/log/messages|grep -i error|wc -l)"  web_message_error="$(awk '/"$(date +%Y%m%d)"/' /var/log/messages|grep -i error)"  ##日志的错误信息  #message error log  message_worklog='/usr/local/monitor/logs/message_work_log' message_downlog='/usr/local/monitor/logs/message_down_log' #user service  web_user_count="$(/usr/bin/who|wc -l)" web_user_info="$(/usr/bin/who)" ##当前登录的用户值  #user  log  user_worklog='/usr/local/monitor/logs/user_work_log' user_downlog='/usr/local/monitor/logs/user_down_log' #disk service  alert_disk='80' web_disk="$(/bin/df -H|sort -k5nr|grep -vE 'Filesystem|tmpfs|cdrom'|awk '{print $5 " " $1}')"  web_disk_use=$(echo $web_disk|awk '{print $1}'|cut -d '%' -f1)  web_disk_partition=$(echo $web_disk|awk '{print $2}')  #硬盘使用率  #disk log  disk_worklog='/usr/local/monitor/logs/disk_work_log' disk_downlog='/usr/local/monitor/logs/disk_down_log' #cpu log  cpu_worklog='/usr/local/monitor/logs/cpu_work_log' cpu_downlog='/usr/local/monitor/logs/cpu_down_log' #notification mail  email='denglei@ctfo.com' ##报警的接收人  #monitor  if [ ! -d "$loghere" ];then      mkdir $loghere  fi  #check web service  if [ $web_http -ge 1 ];then      echo "$now ShengFen: $here Server: $web_name Ip: $web_ip Service: http Monitor_Server: $monitor_name is working" >> $worklog-$day      /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $service_table values ('','$here','$web_name','$web_ip','$monitor_name','web_http','working',now())";  else      /etc/init.d/httpd start      echo "$now ShengFen: $here Server: $web_name Ip: $web_ip Service: http Monitor_Server: $monitor_name is down"|/bin/mail -s "Notification ShengFen: $here Server: $web_name Service:  http  was a problem" $email      echo "$now ShengFen: $here Server: $web_name Ip: $web_ip Service: http Monitor_Server: $montior_name is down" >> $downlog-$day      /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $service_table values ('','$here','$web_name','$web_ip','$monitor_name','web_http','downing',now())";  fi   if [ $tomcat -ge 1 ];then      echo "$now ShengFen: $here Server: $web_name Ip: $web_ip Service: tomcat Monitor_Server: $monitor_name is working" >> $worklog-$day      /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $service_table values ('','$here','$web_name','$web_ip','$monitor_name','tomcat','working',now())";  else      /usr/local/monitor/shell/web_tomcat.sh    echo "$now ShengFen: $here Server: $web_name Ip: $web_ip Service: tomcat Monitor_Server: $monitor_name is down"|/bin/mail -s "Notification ShengFen: $here Server: $web_name Service:  tomcat  was a problem" $email     echo "$now ShengFen: $here Server: $web_name Ip: $web_ip Service: tomcat Monitor_Server: $montior_name is down" >> $downlog-$day      /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $service_table values ('','$here','$web_name','$web_ip','$monitor_name','tomcat','downing',now())";  fi  if [ $yz_tomcat -ge 1 ];then      echo "$now ShengFen: $here Server: $web_name Service: Ip: $web_ip yz_tomcat Monitor_Server: $monitor_name is working" >> $worklog-$day      /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $service_table values ('','$here','$web_name','$web_ip','$monitor_name','yz_tomcat','working',now())";  else      /usr/local/monitor/shell/web_yz_tomcat.sh    echo "$now ShengFen: $here Server: $web_name Service: Ip: $web_ip yz_tomcat Monitor_Server: $monitor_name is down"|/bin/mail -s "Notification ShengFen: $here Server: $web_name Service:  yz_tomcat  was a problem" $email     echo "$now ShengFen: $here Server: $web_name Service: Ip: $web_ip yz_tomcat Monitor_Server: $montior_name is down" >> $downlog-$day      /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $service_table values ('','$here','$web_name','$web_ip','$monitor_name','yz_tomcat','downing',now())";  fi  #check cpu_idle  if [ $web_cpu -ge $alert_cpu ];then      echo "$now ShengFen: $here Server: $web_name Ip: $web_ip Service: cpu_idle Monitor_Server: $monitor_name Cpu_use: $web_cpu"|/bin/mail -s "Notification ShengFen: $here Server: $web_name Service: cpu_use  was Exceed Threshold value: 80%" $email      echo "$now ShengFen: $here Server: $web_name Ip: $web_ip Service: cpu_idle Monitor_Server: $monitor_name Cpu_use: $web_cpu" >> $cpu_downlog-$day      /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $cpu_table values ('','$here','$web_name','$web_ip','$monitor_name','cpu_use','$alert_cpu','$web_cpu','abnormal',now())";  else      echo "$now ShengFen: $here Server: $web_name Ip: $web_ip Service: cpu_idle Monitor_Server: $monitor_name Cpu_use: $web_cpu" >> $cpu_worklog-$day      /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $cpu_table values ('','$here','$web_name','$web_ip','$monitor_name','cpu_use','$alert_cpu','$web_cpu','normal',now())";  fi  #check memory  if [ $web_mem -le $alert_mem ];then          echo "$now ShengFen: $here Server: $web_name Ip: $web_ip Service: memory Monitor_Server: $monitor_name Free_mem: $web_mem"|/bin/mail -s "Notification ShengFen: $here Server: $web_name Service: memory  was Exceed Threshold value" $email          echo "$now ShengFen: $here Server: $web_name Ip: $web_ip Service: memory Monitor_Server: $monitor_name Free_mem: $web_mem" >> $memory_downlog-$day          /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $memory_table values ('','$here','$web_name','$web_ip','$monitor_name','memory','$alert_mem','$web_mem','abnormal',now())";  else          echo "$now ShengFen: $here Server: $web_name Ip: $web_ip Service: memory Monitor_Server: $monitor_name Free_mem: $web_mem" >> $memory_worklog-$day          /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $memory_table values ('','$here','$web_name','$web_ip','$monitor_name','memory','$alert_mem','$web_mem','normal',now())";  fi  #check swap  if [ $web_swap -gt $alert_swap ];then          echo "$now ShengFen: $here Server: $web_name Ip: $web_ip Service: swap Monitor_Server: $monitor_name Swap_web: $web_swap"|/bin/mail -s "Notification ShengFen: $here Server: $web_name Service: swap Ip: $web_ip was Exceed Threshold value" $email          echo "$now ShengFen: $here Server: $web_name Ip: $web_ip Service: swap Monitor_Server: $monitor_name Swap_web: $web_swap" >> $memory_downlog-$day          /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database  -e "insert into $memory_table values ('','$here','$web_name','$web_ip','$monitor_name','swap','$alert_swap','$web_swap','abnormal',now())";  else          echo "$now ShengFen: $here Server: $web_name Ip: $web_ip Service: swap Monitor_Server: $monitor_name Swap_web: $web_swap" >> $memory_worklog-$day          /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $memory_table values ('','$here','$web_name','$web_ip','$monitor_name','swap','$alert_swap','$web_swap','normal',now())";  fi  #check load_15  if [ $web_load -ge $alert_load ];then          echo "$now ShengFen: $here Server: $web_name Ip: $web_ip Service: load_15 Monitor_Server: $monitor_name Load_use: $web_load_15"|/bin/mail -s "Notification ShengFen: $here Server: $web_name Service: load_15 Ip: $web_ip was Exceed Threshold value" $email          echo "$now ShengFen: $here Server: $web_name Ip: $web_ip Service: load_15 Monitor_Server: $monitor_name Load_use: $web_load_15" >> $load_downlog-$day          /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $load_table values ('','$here','$web_name','$web_ip','$monitor_name','load_15','$alert_load','$web_load_15','abnormal',now())";  else          echo "$now ShengFen: $here Server: $server Ip: $ip Service: load Monitor_Server: $monitor_name Load_use: $web_load_15" >> $load_worklog-$day          /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $load_table values ('','$here','$web_name','$web_ip','$monitor_name','load_15','$alert_load','$web_load_15','normal',now())";  fi  #check io_idle  if [ $web_io_idle -ge $alert_io ];then          echo "$now ShengFen: $here Server: $web_name Ip: $web_ip Service: io_idle Monitor_Server: $monitor_name Io_use: $web_io_idle"|/bin/mail -s "Notification ShengFen: $here Server: $web_name Service: io_use  was Exceed Threshold value: 80%" $email          echo "$now ShengFen: $here Server: $web_name Ip: $web_ip Service: io_idle Monitor_Server: $monitor_name Io_use: $web_io_idle" >> $io_downlog-$day          /usr/bin/mysql  -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $io_table values ('','$here','$web_name','$web_ip','$monitor_name','io_use','$alert_io','$web_io_idle','abnormal',now())";  else          echo "$now ShengFen: $here Server: $web_name Ip: $web_ip Service: io_idle Monitor_Server: $monitor_name Io_use: $web_io_idle" >> $io_worklog-$day          /usr/bin/mysql  -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $io_table values ('','$here','$web_name','$web_ip','$monitor_name','io_use','$alert_io','$web_io_idle','normal',now())";  fi  #check hareware error info  if [ $web_hardware_error -gt 0 ];then          echo "$now ShengFen: $here Server: $web_name Ip: $web_ip Service: hardware_error Monitor_Server: $monitor_name Error: $web_info_error"|/bin/mail -s "Notification ShengFen: $here Server: $web_name Service: hardware_error  were some hardware imformation error" $email          echo "$now ShengFen: $here Server: $web_name Ip: $web_ip Service: hardware_error Monitor_Server: $monitor_name Error: $web_info_error" >> $hard_downlog-$day          /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $hardware_table values ('','$here','$web_name','$web_ip','$monitor_name','hardware_error','0','$web_hardware_error','abnormal',now())";  else          echo "$now ShengFen: $here Server: $web_name Ip: $web_ip Service: hardware_error Monitor_Server: $monitor_name Error: Nothing" >> $hard_worklog-$day          /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $hardware_table values ('','$here','$web_name','$web_ip','$monitor_name','hardware_error','0','$web_hardware_error','normal',now())";  fi  #check message error  if [ $web_message_error_count -ge 1 ];then          echo "$now ShengFen: $here Server: $web_name Ip: $web_ip Service: message_error Monitor_Server: $monitor_name Message_error: $web_message_error"|/bin/mail -s "Notification ShengFen: $here Server: $web_name Service: message_error  were some message imformation error" $email          echo "$now ShengFen: $here Server: $web_name Ip: $web_ip Service: message_error Monitor_Server: $monitor_name Message_error: $web_message_error" >> $message_downlog-$day          /usr/bin/mysql-h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $message_table values ('','$here','$web_name','$web_ip','$monitor_name','message_error','1','$web_message_error_count','abnormal',now())";  else          echo "$now ShengFen: $here Server: $web_name Ip: $web_ip Service: message_error Monitor_Server: $monitor_name Message_error: Nothing" >> $message_worklog-$day          /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database  -e "insert into $message_table values ('','$here','$web_name','$web_ip','$monitor_name','message_error','1','$web_message_error_count','normal',now())";  fi  #check user  if [ $web_user_count -ge 3 ];then          echo "$now ShengFen: $here Server: $web_name Ip: $web_ip Service: user Monitor_Server: $monitor_name User: $web_user_info"|/bin/mail -s "Notification ShengFen: $here Server: $web_name  Service: user  was Exceed Threshold value: 3" $email          echo "$now ShengFen: $here Server: $web_name Ip: $web_ip Service: user Monitor_Server: $monitor_name User: $web_user_info" >> $user_downlog-$day          /usr/bin/mysql  -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $user_table values ('','$here','$web_name','$web_ip','$monitor_name','user','3','$web_user_count','abnormal',now())";  else          echo "$now ShengFen: $here Server: $web_name Ip: $web_ip Service: user Monitor_Server: $monitor_name User: normal" >> $user_worklog-$day          /usr/bin/mysql  -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $user_table values ('','$here','$web_name','$web_ip','$monitor_name','user','3','$web_user_count','normal',now())";  fi  #check disk  if [ $web_disk_use -ge $alert_disk ];then          echo "$now ShengFen: $here Server: $web_name Ip: $web_ip Service: disk_use Monitor_Server: $monitor_name Disk_use: $web_disk_partition ($web_disk_use%)"|/bin/mail -s "Warning!!! $here Server: $web_name Service: disk_use  was Exceed Threshold value : $alert_disk% " $email          echo "$now ShengFen: $here Server: $web_name Ip: $web_ip Service: disk_use Monitor_Server: $monitor_name Disk_use: $web_disk_partion ($web_disk_use%)" >> $disk_downlog-$day          /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database  -e "insert into $disk_table values ('','$here','$web_name','$web_ip','$monitor_name','disk_use','$alert_disk','$web_disk_partition','$web_disk_use','abnormal',now())";  else          echo "$now ShengFen: $here Server: $web_name Ip: $web_ip Service: disk_use Monitor_Server: $monitor_name Disk_use: $web_disk_partition ($web_disk_use%)" >> $disk_worklog-$day          /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database  -e "insert into $disk_table values ('','$here','$web_name','$web_ip','$monitor_name','disk_use','$alert_disk','$web_disk_partition','$web_disk_use','normal',now())";  fi  (2)交换服务器(以甘肃交换为例,解释内容参照甘肃web)#!/bin/bash  #ip  jh_ip=$(/sbin/ifconfig eth0|grep "inet addr"|cut -d : -f 2|awk '{print $1}')  #name  jh_name=$(hostname)  monitor_name=jiaohuan here='gansu' #mysql info  mysql_ip='1.1.1.1' mysql_username='root' mysql_passwd='****' mysql_database='monitor' memory_table=''$here'_memory'  load_table=''$here'_load'  io_table=''$here'_io'  hardware_table=''$here'_hardware'  message_table=''$here'_message'  user_table=''$here'_user'  disk_table=''$here'_disk'  cpu_table=''$here'_cpu'  service_table=''$here'_service'  #date and log  day="$(date +%Y%m%d)" worklog='/usr/local/monitor/logs/all_work_log' downlog='/usr/local/monitor/logs/all_down_log' now="$(date +%Y-%m-%d-%T)" loghere='/usr/local/monitor/logs' #jiaohuan service  pas="$(ps -ef|grep pas|grep -v grep|grep -v ppas|wc -l)" ppas="$(ps -ef|grep ppas|grep -v grep|wc -l)" cas="$(ps -ef|grep cas|grep -v grep|wc -l)" mas="$(ps -ef|grep mas|grep -v grep|grep -v mmas|wc -l)" mmas="$(ps -ef|grep mmas|grep -v grep|wc -l)" #cpu service  alert_cpu='80' jh_cpu_idle="$(top -b -n 1 | grep Cpu | awk '{print $5}' | cut -f 1 -d .)" jh_cpu="$(echo 100 - $jh_cpu_idle|/usr/bin/bc)" #memory service  alert_mem='100' jh_mem="$(/usr/bin/free -m|grep Mem|awk '{print $4}')" jh_swap="$(/usr/bin/free -m|grep Swap|awk '{print $3}')" alert_swap='0' #memory log  memory_worklog='/usr/local/monitor/logs/mem_work_log' memory_downlog='/usr/local/monitor/logs/mem_down_log' #load service  cpu_count="$(grep -c 'model name' /proc/cpuinfo)" alert_load="$(echo $cpu_count/2|/usr/bin/bc)" jh_load="$(uptime|awk '{print $NF}'|cut -f 1 -d .)" jh_load_15="$(uptime|awk '{print $NF}')" #load log  load_worklog='/usr/local/monitor/logs/load_work_log' load_downlog='/usr/local/monitor/logs/load_down_log' #io service  alert_io='80' jh_io_idle_back="$(/usr/bin/iostat|awk 'NR==4{print $NF}'|cut -f 1 -d .)" jh_io_idle="$(echo 100 - $jh_io_idle_back|/usr/bin/bc)" #io log  io_worklog='/usr/local/monitor/logs/io_work_log' io_downlog='/usr/local/monitor/logs/io_down_log' #hardware service  jh_hardware_error="$(dmesg|grep -i error|wc -l)" jh_info_error="$(dmesg|grep -i error)" #hardware error log  hard_worklog='/usr/local/monitor/logs/hard_work_log' hard_downlog='/usr/local/monitor/logs/hard_down_log' #message service  jh_message_error_count="$(awk '/"$(date +%Y%m%d)"/' /var/log/messages|grep -i error|wc -l)"  jh_message_error="$(awk '/"$(date +%Y%m%d)"/' /var/log/messages|grep -i error)"  #message error log  message_worklog='/usr/local/monitor/logs/message_work_log' message_downlog='/usr/local/monitor/logs/message_down_log' #user service  jh_user_count="$(/usr/bin/who|wc -l)" jh_user_info="$(/usr/bin/who)" #user  log  user_worklog='/usr/local/monitor/logs/user_work_log' user_downlog='/usr/local/monitor/logs/user_down_log' #disk service  alert_disk='80' jh_disk="$(/bin/df -H|sort -k5nr|grep -vE 'Filesystem|tmpfs|cdrom'|awk '{print $5 " " $1}')"  jh_disk_use=$(echo $jh_disk|awk '{print $1}'|cut -d '%' -f1)  jh_disk_partition=$(echo $jh_disk|awk '{print $2}')  #disk log  disk_worklog='/usr/local/monitor/logs/disk_work_log' disk_downlog='/usr/local/monitor/logs/disk_down_log' #cpu log  cpu_worklog='/usr/local/monitor/logs/cpu_work_log' cpu_downlog='/usr/local/monitor/logs/cpu_down_log' #notification mail  email='denglei@ctfo.com' #monitor  if [ ! -d "$loghere" ];then      mkdir $loghere  fi  #monitor  #jiaohuan check  if [ $pas -ge 1 ];then          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: pas Monitor_Server: $monitor_name is working" >> $worklog-$day      /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $service_table values ('','$here','$jh_name','$jh_ip','$monitor_name','pas','working',now())";  else                  /usr/local/lbs/bin4.0.7.7/pas -daemon          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: pas Monitor_Server: $monitor_name is down"|/bin/mail -s "Notification ShengFen: $here Server: $jh_name Service:  pas  was a problem" $email          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: pas Monitor_Server: $montior_name is down" >> $downlog-$day      /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $service_table values ('','$here','$jh_name','$jh_ip','$monitor_name','pas','downing',now())";  fi  if [ $ppas -ge 1 ];then          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: ppas Monitor_Server: $monitor_name is working" >> $worklog-$day      /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $service_table values ('','$here','$jh_name','$jh_ip','$monitor_name','ppas','working',now())";  else                  /usr/local/lbs/bin4.0.7.7/ppas -daemon          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: ppas Monitor_Server: $monitor_name is down"|/bin/mail -s "Notification ShengFen: $here Server: $jh_name Service:  ppas  was a problem" $email          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: ppas Monitor_Server: $montior_name is down" >> $downlog-$day      /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $service_table values ('','$here','$jh_name','$jh_ip','$monitor_name','ppas','downing',now())";  fi  if [ $mas -ge 1 ];then          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: mas Monitor_Server: $monitor_name is working" >> $worklog-$day      /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $service_table values ('','$here','$jh_name','$jh_ip','$monitor_name','mas','working',now())";  else                  /usr/local/lbs/bin4.0.7.7/mas -daemon          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: mas Monitor_Server: $monitor_name is down"|/bin/mail -s "Notification ShengFen: $here Server: $jh_name Service:  mas  was a problem" $email          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: mas Monitor_Server: $montior_name is down" >> $downlog-$day      /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $service_table values ('','$here','$jh_name','$jh_ip','$monitor_name','mas','downing',now())";  fi  if [ $mmas -ge 1 ];then          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: mmas Monitor_Server: $monitor_name is working" >> $worklog-$day      /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $service_table values ('','$here','$jh_name','$jh_ip','$monitor_name','mmas','working',now())";  else                  /usr/local/lbs/bin4.0.7.7/mmas -daemon          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: mmas Monitor_Server: $monitor_name is down"|/bin/mail -s "Notification ShengFen: $here Server: $jh_name Service:  mmas  was a problem" $email          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: mmas Monitor_Server: $montior_name is down" >> $downlog-$day      /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $service_table values ('','$here','$jh_name','$jh_ip','$monitor_name','mmas','downing',now())";  fi  if [ $cas -ge 1 ];then          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: cas Monitor_Server: $monitor_name is working" >> $worklog-$day      /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $service_table values ('','$here','$jh_name','$jh_ip','$monitor_name','cas','working',now())";  else                  /usr/local/lbs/bin4.0.7.7/cas -daemon          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: cas Monitor_Server: $monitor_name is down"|/bin/mail -s "Notification ShengFen: $here Server: $jh_name Service:  cas  was a problem" $email          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: cas Monitor_Server: $montior_name is down" >> $downlog-$day      /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $service_table values ('','$here','$jh_name','$jh_ip','$monitor_name','cas','downing',now())";  fi  #check cpu_idle  if [ $jh_cpu -ge $alert_cpu ];then      echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: cpu_idle Monitor_Server: $monitor_name Cpu_use: $jh_cpu"|/bin/mail -s "Notification ShengFen: $here Server: $jh_name Service: cpu_use  was Exceed Threshold value: 80%" $email      echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: cpu_idle Monitor_Server: $monitor_name Cpu_use: $jh_cpu" >> $cpu_downlog-$day      /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $cpu_table values ('','$here','$jh_name','$jh_ip','$monitor_name','cpu_use','$alert_cpu','$jh_cpu','abnormal',now())";  else      echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: cpu_idle Monitor_Server: $monitor_name Cpu_use: $jh_cpu" >> $cpu_worklog-$day      /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $cpu_table values ('','$here','$jh_name','$jh_ip','$monitor_name','cpu_use','$alert_cpu','$jh_cpu','normal',now())";  fi  #check memory  if [ $jh_mem -le $alert_mem ];then          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: memory Monitor_Server: $monitor_name Free_mem: $jh_mem"|/bin/mail -s "Notification ShengFen: $here Server: $jh_name Service: memory  was Exceed Threshold value" $email          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: memory Monitor_Server: $monitor_name Free_mem: $jh_mem" >> $memory_downlog-$day          /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $memory_table values ('','$here','$jh_name','$jh_ip','$monitor_name','memory','$alert_mem','$jh_mem','abnormal',now())";  else          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: memory Monitor_Server: $monitor_name Free_mem: $jh_mem" >> $memory_worklog-$day          /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $memory_table values ('','$here','$jh_name','$jh_ip','$monitor_name','memory','$alert_mem','$jh_mem','normal',now())";  fi  #check swap  if [ $jh_swap -gt $alert_swap ];then          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: swap Monitor_Server: $monitor_name Swap_jh: $jh_swap"|/bin/mail -s "Notification ShengFen: $here Server: $jh_name Service: swap Ip: $jh_ip was Exceed Threshold value" $email          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: swap Monitor_Server: $monitor_name Swap_jh: $jh_swap" >> $memory_downlog-$day          /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database  -e "insert into $memory_table values ('','$here','$jh_name','$jh_ip','$monitor_name','swap','$alert_swap','$jh_swap','abnormal',now())";  else          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: swap Monitor_Server: $monitor_name Swap_jh: $jh_swap" >> $memory_worklog-$day          /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $memory_table values ('','$here','$jh_name','$jh_ip','$monitor_name','swap','$alert_swap','$jh_swap','normal',now())";  fi  #check load_15  if [ $jh_load -ge $alert_load ];then          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: load_15 Monitor_Server: $monitor_name Load_use: $jh_load_15"|/bin/mail -s "Notification ShengFen: $here Server: $jh_name Service: load_15 Ip: $jh_ip was Exceed Threshold value" $email           echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: load_15 Monitor_Server: $monitor_name Load_use: $jh_load_15" >> $load_downlog-$day          /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $load_table values ('','$here','$jh_name','$jh_ip','$monitor_name','load_15','$alert_load','$jh_load_15','abnormal',now())";  else          echo "$now ShengFen: $here Server: $server Ip: $ip Service: load Monitor_Server: $monitor_name Load_use: $jh_load_15" >> $load_worklog-$day          /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $load_table values ('','$here','$jh_name','$jh_ip','$monitor_name','load_15','$alert_load','$jh_load_15','normal',now())";  fi  #check io_idle  if [ $jh_io_idle -ge $alert_io ];then          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: io_idle Monitor_Server: $monitor_name Io_use: $jh_io_idle"|/bin/mail -s "Notification ShengFen: $here Server: $jh_name Service: io_use  was Exceed Threshold value: 80%" $email          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: io_idle Monitor_Server: $monitor_name Io_use: $jh_io_idle" >> $io_downlog-$day          /usr/bin/mysql  -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $io_table values ('','$here','$jh_name','$jh_ip','$monitor_name','io_use','$alert_io','$jh_io_idle','abnormal',now())";  else          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: io_idle Monitor_Server: $monitor_name Io_use: $jh_io_idle" >> $io_worklog-$day          /usr/bin/mysql  -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $io_table values ('','$here','$jh_name','$jh_ip','$monitor_name','io_use','$alert_io','$jh_io_idle','normal',now())";  fi  #check hareware error info  if [ $jh_hardware_error -gt 0 ];then          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: hardware_error Monitor_Server: $monitor_name Error: $jh_info_error"|/bin/mail -s "Notification ShengFen: $here Server: $jh_name Service: hardware_error  were some hardware imformation error" $email          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: hardware_error Monitor_Server: $monitor_name Error: $jh_info_error" >> $hard_downlog-$day          /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $hardware_table values ('','$here','$jh_name','$jh_ip','$monitor_name','hardware_error','0','$jh_hardware_error','abnormal',now())";  else          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: hardware_error Monitor_Server: $monitor_name Error: Nothing" >> $hard_worklog-$day          /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $hardware_table values ('','$here','$jh_name','$jh_ip','$monitor_name','hardware_error','0','$jh_hardware_error','normal',now())";  fi  #check message error  if [ $jh_message_error_count -ge 1 ];then          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: message_error Monitor_Server: $monitor_name Message_error: $jh_message_error"|/bin/mail -s "Notification ShengFen: $here Server: $jh_name Service: message_error  were some message imformation error" $email          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: message_error Monitor_Server: $monitor_name Message_error: $jh_message_error" >> $message_downlog-$day          /usr/bin/mysql-h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $message_table values ('','$here','$jh_name','$jh_ip','$monitor_name','message_error','1','$jh_message_error_count','abnormal',now())";  else          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: message_error Monitor_Server: $monitor_name Message_error: Nothing" >> $message_worklog-$day          /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database  -e "insert into $message_table values ('','$here','$jh_name','$jh_ip','$monitor_name','message_error','1','$jh_message_error_count','normal',now())";  fi  #check user  if [ $jh_user_count -ge 3 ];then          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: user Monitor_Server: $monitor_name User: $jh_user_info"|/bin/mail -s "Notification ShengFen: $here Server: $jh_name  Service: user  was Exceed Threshold value: 3" $email          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: user Monitor_Server: $monitor_name User: $jh_user_info" >> $user_downlog-$day          /usr/bin/mysql  -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $user_table values ('','$here','$jh_name','$jh_ip','$monitor_name','user','3','$jh_user_count','abnormal',now())";  else          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: user Monitor_Server: $monitor_name User: normal" >> $user_worklog-$day          /usr/bin/mysql  -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database -e "insert into $user_table values ('','$here','$jh_name','$jh_ip','$monitor_name','user','3','$jh_user_count','normal',now())";  fi  #check disk  if [ $jh_disk_use -ge $alert_disk ];then          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: disk_use Monitor_Server: $monitor_name Disk_use: $jh_disk_partition ($jh_disk_use%)"|/bin/mail -s "Warning!!! $here Server: $jh_name Service: disk_use  was Exceed Threshold value : $alert_disk% " $email          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: disk_use Monitor_Server: $monitor_name Disk_use: $jh_disk_partion ($jh_disk_use%)" >> $disk_downlog-$day          /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database  -e "insert into $disk_table values ('','$here','$jh_name','$jh_ip','$monitor_name','disk_use','$alert_disk','$jh_disk_partition','$jh_disk_use','abnormal',now())";  else          echo "$now ShengFen: $here Server: $jh_name Ip: $jh_ip Service: disk_use Monitor_Server: $monitor_name Disk_use: $jh_disk_partition ($jh_disk_use%)" >> $disk_worklog-$day          /usr/bin/mysql -h $mysql_ip -u$mysql_username -p$mysql_passwd $mysql_database  -e "insert into $disk_table values ('','$here','$jh_name','$jh_ip','$monitor_name','disk_use','$alert_disk','$jh_disk_partition','$jh_disk_use','normal',now())";  fi  下一篇文章地址:运维自动化之使用PHP+MYSQL+SHELL打造私有监控系统(三)... 全文

web监控系统 php+mysql+shell(二) 独立监控系统

监控系统的原理探究

监控系统的原理探究时间2013-12-20作者 itnihao邮箱 itnihao@qq.com博客 http://www.itnihao.com如需引用,请注明以上信息,谢谢合作 为什么需要监控系统,这个在前面已经论述过了。而监控系统的原理究竟是什么样的呢?来看一下监控系统的使用者都是哪些?... 全文

zabbix 监控系统 监控原理

Linux 系统监控和诊断工具:lsof

1、lsof 简介lsof 是 Linux 下的一个非常实用的系统级的监控、诊断工具。它的意思是 List Open Files,很容易你就记住了它是 “ls + of”的组合~它可以用来列出被各种进程打开的文件信息,记住:Linux 下 “一切皆文件”,包括但不限于 pipes, sockets, directories, devices, 等等。因此,使用 lsof,你可以获取任何被打开文件的各种信息。... 全文

系统监控 lsof 监控工具

整合nagios cacti 监控系统

 Nagios的介绍:1、Nagios是一个监控系统运行状态和网络信息的监控系统。它能监控所指定的本地或远程主机的系统状态以及运行的服务,同时提供异常通知的功能。2、 Nagios可运行在Linux/Unix平台之上,同时提供一个可选的基于浏览器的WEB界面以方便系统管理人员查看网络状态,各种系统问题,以及日志,性能图表等等。Nagios的功能:1、 监视网络服务 (mysql,http,ping等) 2、 监视主机资源 (进程, 磁盘 等) 3、  简单的插件扩展功能 4、  异常通知功能 (通过email,短信等) 5、  WEB界面使系统管理人员能够随时查看网络服务状态,系统问题等等   6、  可以通过手机查看系统监控信息Nagios的安装:    一:安装前的准备      1:安装环境:centos操作系统      2:所需软件:nagios-3.0.3.tar.gz //nagios程序安装包                                   httpd-2.2.2.tar.gz   //apache安装包                                   nagios-plugins-1.4.tar.gz //nagios插件安装包                                   nrpe-2.12.tar.gz //nagios的扩展,它安装在被监控的服务器上,向nagios提供该服务器的运行情况。    二:nagios安装      1:安装nagios主程序       # tar –zxvf nagios-3.0.3.tar.gz       # cd nagios-3.0.3        //为了避免编译错误,先创建nagios用户和组,以及/usr/local/nagios目录,同时指定nagios的目录属组。       # groupadd nagios       # useradd nagios –g nagios       # mkdir /usr/local/nagios       # chown -R nagios:nagios /uar/local/nagios       # ./configure --prefix=/usr/local/nagios       # make all     //编译       # make install    //安装nagios主要程序,cgi和html文件等       # make install-init   //安装nagios启动脚本       # make install-config //将配置文件的例子复制到nagios配置文件里       # make install-commandmode //配置nagios目录权限。      # make install-webconf (因为这个命令执行的时候,会在/etc/httpd/conf.d/创建   nagios.conf文件,因此在执行命令前,要mkdir -p /etc/httpd/conf.d/       #cat /etc/httpd/conf.d/nagios.conf >>/usr/local/httpd/conf/httpd.conf        安装完成后在/usr/local/nagios里面生成 五个目录,分别是 var日志文件,bin执行程序,etc配置文件,sbin, share 网页的目录。至此安装成功。2:安装nagios插件    nagios本身并没有监控的功能,所有的监控是由插件完成的,插件将监控的结果返回给nagios,nagios分析这些结果,以web的方式展现给我们,同时提供相应的报警功能(这个报警的功能也是由插件完成的) 。    #tar –zxvf nagios-plugins-1.4.tar.gz    # cd nagios-plugins-1.4.1    # ./configure –prefix=/usr/local/nagios 编译到nagios的安装目录    # make && make install         安装完成后,会在/usr/local/nagios/ 目录下面生成libexe插件目录,nagios所有的插件都会在这个目录里面。 3:安装apache服务。        假如安装系统的时候安装了apache就不用安装了,使用系统自带安装的服务。         安装apache这里不用多做解释了。        # tar –zxvf   httpd-2.2.2.tar.gz         # cd httpd-2.2.2        # ./configure –prefix=/usr/local/httpd        # make && make install        # vi /usr/local/httpd/conf/httpd.conf           修改配置文件          servername 192.168.1.221:80         假如没有做第六页的make install-webconf,则需要在配置文件最后添加:第七页字符。         假如做过了,则不用做这步,建议使用第六页的做法,以免出现 http的语法错误。ScriptAlias /nagios/cgi-bin “/usr/local/nagios/sbin“    //cgi文件的目录 <Directory "/usr/local/nagios/sbin">Options ExecCGI   AllowOverride None   Order allow,deny   Allow from allAuthName "Nagios Access"   AuthType Basic   AuthUserFile /usr/local/nagios/etc/htpasswd.users   //验证文件的路径   Require valid-user </Directory> Alias /nagios “/usr/local/nagios/share“    //nagios的文件目录 <Directory "/usr/local/nagios/share">Options None   AllowOverride None   Order allow,deny   Allow from allAuthName "Nagios Access"   AuthType Basic   AuthUserFile /usr/local/nagios/etc/htpasswd.users   //验证文件的路径   Require valid-user</Directory>上述需要添加的文件主要作用是nagios登录用户的验证。4:apache安装完成后需要使用命令生成nagios用户的密码,检测nagios配置 #/usr/local/httpd/bin/htpasswd -c /usr/local/nagios/etc/htpasswd.users shen # /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 查询配置有没有错误    当出现Total Warnings: 0Total Errors:   0    则配置成功,可以登陆http://192.168.1.221/nagios 查看。5:安装配置nrpe程序 #tar -zxvf nrpe-2.12.tar.gz #cd nrpe-2.12 # ./configure && make all # make install-plugin //安装check_nrpe插件  # make install-daemon # make install-daemon-config # make install-xinetd //安装xinetd脚本配置nrpe# vi /etc/xinetd.d/nrpe //假如没有安装xinetd,使用yum install xinetd安装。 #     only_from       = 127.0.0.1 注释掉      allowshosts =192.168.1.221 添加监控主机# vi /etc/servicesnrpe            5666/tcp                       #nrpe   //添加# /etc/init.d/xinetd start 启动服务6:配置nagios     nagios主要配置文件有cgi.cfg,nagios.cfg     commands.cfg,service.cfg,windows.cfg,host.cfg,contacts.cfg 其中service.cfg和host.cfg需要自己创建。     a: 修改cgi.cfg    #vi /usr/local/nagios/etc/cgi.cfg     找到这几行,后面添加 shen用户,可以自己定义用户,使用“,”隔开     authorized_for_system_information=nagiosadmin,shen     authorized_for_configuration_information=nagiosadmin     authorized_for_all_services=nagiosadmin     authorized_for_all_hosts=nagiosadmin     authorized_for_all_service_commands=nagiosadmin     authorized_for_all_host_commands=nagiosadminb:修改nagios.cfg文件 #vi /usr/local/nagios/etc/nagios.cfg   找到这几行,去掉前面的注释    cfg_file=/usr/local/nagios/etc/objects/commands.cfg //命令配置路径    cfg_file=/usr/local/nagios/etc/objects/contacts.cfg    // 联系人配置   cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg //模板配置   cfg_file=/usr/local/nagios/etc/objects/templates.cfg // 监控时段配置   cfg_file=/usr/local/nagios/etc/objects/host.cfg //需要自己添加 监控主机   cfg_file=/usr/local/nagios/etc/objects/service.cfg //需要自己添加 监控服务   cfg_file=/usr/local/nagios/etc/objects/windows.cfg //windows主机监控   #cfg_file=/usr/local/nagios/etc/objects/localhost.cfg    command_check_interval=5s   修改这里为5,自动刷新。 c:添加监控主机文件host.cfg #vi /usr/local/nagios/etc/obgects/host.cfg define host{        use                     linux-server        host_name               192.168.1.230        alias                   web        address                 192.168.1.230       }     其他主机的自己复制粘贴即可。d:添加服务文件service.cfg #vi /usr/local/nagios/etc/obgects/service.cfg    define service{         use              local-service       host_name           192.168.1.230        service_description   check_tcp 80         check_command      check_tcp!80} //监控主机80端口,define service{         use              local-service,srv-pnp       host_name         192.168.1.230        service_description   Total processes         check_command      check_nrpe!check_total_procs} //监控主机进程,需要在监控主机安装使用nrpe程序。 e: 配置window主机文件 # vi /usr/local/nagios/etc/objects/windows.cfg   修改define host{        use             windows-server         host_name       192.168.1.185           alias           My Windows Server               address         192.168.1.185           } define service{        use                     generic-service        host_name               192.168.1.185        service_description     NSClient++ Version        check_command           check_nt!CLIENTVERSION        } 需要在监控主机安装NSClient++软件配置commands.cfg命令文件# vi /usr/local/nagios/etc/obgects/commands.cfg # 'check_nrpe' command definitiondefine command{        command_name    check_nrpe        command_line /usr/local/nagios/libexec/check_nrpe -H $HOSTADDRESS$ -c $ARG1$        } //添加nrpe命令,以便监控服务器配置contacts.cfg文件它用于发送邮件通知用户服务器的异常。需要启用sendmail服务在配置文件里面添加进去自己的邮箱,如139邮箱,有短信通知的功能。使用中国移动的飞信sms程序,也可以实现短信的预警功能,但是需要手机启用飞信。 被监控的主机配置:被监控主机需要安装nrpe和nagos插件plugin程序1:安装nrpe   同上11页2:安装plugin # tar –xvzf nagios-plugins-1.4.tar # cd nagios-plugins-1.4 # ./configure --prefix=/usr/local/nagios # make && make install # chown nagios:nagios /usr/local/nagios //设置属主目录 # chown -R nagios:nagios /usr/local/nagios/libexec至此客户端安装完成   安装完成后在服务器上面使用/usr/local/nagios/bin/nagios-v/usr/local/nagios/etc/nagios.cfg 查询配置/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg 启动服务打开监控网页: http://192.168.1.221/nagios,登陆后即可查看监控的页面²                 至此nagios配置完毕,其他的一些服务需要自己去配置,同时有些服务没有插件需要自己去网上面找,比如mysql的插件。²                 我在配置的过程中遇到的主要问题    1:被监控主机监控服务无法监控         是因为插件的原因,以及nrpe服务,需要启用nrpe服务,同时插件在commands.cfg中的定义。   2: 监控过程中进程无法监控         由于插件check_procs的原因,重新下载check_procs_fixed 这个插件,同时在commands.cfg里面进行修改,即可成功 define command{        command_name    check_local_procs        command_line    $USER1$/ check_procs_fixed -w $ARG1$ -c $ARG2$ -s $ARG3$        } 同时修该监控主机/usr/local/nagios/etc/nrpe.cfgcommand[check_zombie_procs]=/usr/local/nagios/libexec/check_procs_fixed -w 5 -c 10 -s Zcommand[check_total_procs]=/usr/local/nagios/libexec/check_procs_fixed -w 150 -c 200Nagiso还有很多的问题,需要去实现,正在深入的研究。Nagios也可以进行图表性能的显示,正在添加测试!   nagios服务器还需要做好安全防护,确保服务器的安全。   1:运行用户使用nagios而不是root   2: 保证远程代理安全,修改/etc/hosts.allow nrpe只允许nagios服务器访问,并且nrpe使用nagios运行,修改nepr.cfg文件   3:nrpe可以通过ssl来进行通信,保证通信通道的安全  Cacti的说明:   Cacti是一套基于PHP、MySQL、SNMP及RRDTool开发的网络流量监测图形分析工具。它通过snmpget来获取数据,使用RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善,界面友好。Cacti安装前的准备 : 所需软件:httpd-2.2.2.tar.gz                                  mysql-5.0.18.tar.gz                                   php-5.2.9.tar.gz                                  rrdtool-1.2.6.tar.gz 画图工具                                   cacti-0.8.7b.tar.gz 图像分析工具                                    zlib、freetype、libpng   lib库                                    gd-2.0.33.tar.gz gd数据包 二:cacti安装1:安装mysql+php+apache服务,因为cacti需要使用到数据库以及动态画面php的支持。 2:安装rrdtool       为了避免rrdtool编译过程中出现错误,因此需要安装这几个库    #rpm -ivh libart_lgpl-devel-2.3.17-4.i386.rpm //先安装libart库,在光盘里面     # rpm -ivh freetype-devel-2.2.1-19.el5.i386.rpm     # rpm -ivh libpng-devel-1.2.10-7.0.2.i386.rpm     # rpm -ivh libjpeg-devel-6b-37.i386.rpm      # tar -zxvf gd-2.0.33.tar.gz     # cd gd-2.0.33     # ./configure --with-jpeg --with-png --with-zlib --with-freetype && make && make install       # tar –zxvf rrdtool-1.2.6.tar.gz       # cd rrdtool-1.2.6      # ./configure --prefix= /usr/local/rrdtool      # make && make install 三:设置mysql数据库 #/usr/local/mysql/bin/mysql -u root –p //进入数据库   #create database cacti;   //创建cacti数据库   #grant all privileges on cacti.* to ‘cacti’@‘localhost’ identified by ‘cacti’; //创建cacti用户,同时赋予cacti用户管理cacti数据库的权限。   # flush privileges; 四:安装snmp     使用系统自带的snmp,因为Cacti需要用到snmp中的两个命令―snmpwalk和snmpget进行数据的采集。所以确定系统中有这两条 命令就可以不需要安装snmp。      配置snmpd.conf      修改里面snmp信息允许被侦测的范围。被监控的服务器需要全部安装snmp服务,需要启用snmpd服务,同时更改配置文件,使服务器可以侦测到监控的snmp信息。五:安装cacti #tar -zxvf cacti-0.8.7b.tar.gz   # mv cacti-08.7.b /usr/local/httpd/htdocs/cacti    # cd /usr/local/httpd/htdocs/cacti   # /usr/local/mysql/bin/mysql -u root -p cacti<./cacti.sql //导入数据库   # chown -R cacti:cacti /usr/local/httpd/htdocs/cacti/* //赋予权限   # vi include/config.php //修改相应的数据库信息       $database_type = "mysql";       $database_default = “cacti”;   //数据库的名称       $database_hostname = "localhost";       $database_username = “cacti”; //数据库用户       $database_password = “cacti”;   //用户密码       $database_port = "3306";     # contab –e    //设置自动化任务        */5 * * * * daemon /usr/local/php5/bin/php     /usr/local/httpd/htdocs/cacti/poller.php>/dev/null 2>&1 //根据自己的php安装目录进行php命令的调整到这里的时候,cacti基本上已经配置完成了,剩下的只是在web界面上面操作,添加主机,设置监控的项目,同时还可以安装上cacti的插件, cacti-plugin-arch-2.0.tar.gz,添加更多的监控模板,如thold, monitor,mysql等等。安装插件: #tar –zxvf cacti-plugin-arch-2.0.tar.gz # cp cacti-plugin-0.8.7b-PA-v2.0.diff /usr/local/httpd/htdocs/cacti # cd /usr/local/httpd/htdocs/cacti # patch -p1 -N < cacti-plugin-0.8.7b-PA-v2.1.diff //打上补丁然后,目录下会生成plugins目录 #tar –zxvf monitor-0.3.4.tar.tar # mv thold /usr/local/httpd/htdocs/cacti/plugins # cd /usr/local/httpd/htdocs/cacti/ # vi include/global.php # $plugins[] = ‘monitor’; //添加 #/usr/local/mysql/bin/mysql –u root –p cacti< monitor.sql //导入数据库。 mysql插件下载下来后,直接可以在网页上面进行导入模板,即可使用。   配置遇到的问题: 1:主要是cacti的版本问题,当我使用0.8.7d版本的时候,图表一直无法出现,系统状态无法up,使用的0.8.7a-c都是正常,可能是版本的原因。 2:安装插件的时候,出现错误警告,需要修改/lib/ plugins.php文件。 其他的插件正在添加。短信报警功能已经实现,需要安装threshld插件,设置预警的范围。   ... 全文

nagios cacti监控系统 监控 休闲 职场

linux 系统监控脚本

Linux下性能预警及应急处理 自己编写一个脚本程序,该程序在工作时段(8:00-22:00),每隔一个小时执行一次;在其他时段每隔两小时执行一次。 每次执行都要完成如下任务: 1、检测进程CPU占用率,如果超出30%开始预警,超出80%就把该进程取消; 2、检测进程内存占用率,如果超出30%开始预警,超出70%就把该进程取消; 3、检测所有磁盘分区使用情况,如果超出90%就开始预警; 4、检测所有进程,如果发现僵尸进程,就人为取消该进程; 说明:所谓的预警就是把事件的性质、发生时间以及被处理掉的进程等重要信息统一输出到某个日志文件中。一、[root@Shawn-T2 ~]# crontab -e     加入以下命令:  *  8-22/1,22-7/2  *  *  *  sh  /monitor.sh 二、[root@Shawn-T2 ~]# vim monitor.sh     添加以下内容: #!/bin/bash #This script is used for monitoring system load.   time=`date +"%Y-%m-%d %H:%M:%S"`   ps aux |  grep -v 'USER' >> /tmp/temp.txt   while read -r line   do      declare -i CPUUsage=`echo $line | awk '{print $3}' | awk -F. ' {print $1}'`      MEMUsage=`echo $line | awk '{print $4}' | awk -F. '{print $1}'`      ProcessNum=`echo $line | awk '{print $2}'`      STAT=`echo $line | awk '{print $8}'`      Command=`echo $line | awk ' {print $11}'` # Monitor CPU load.      if [ $CPUUsage -ge 80 ];then         kill -9 $ProcessNum         echo "$time  Process $Command occupies too large CPU space and was killed!" >>  /var/log/monitor.log      elif [ $CPUUsage -ge 30 ]; then         echo "$time  Process $Command occupies too large ,please check it!" >>  /var/log/monitor.log      fi # Monitor Memory load.      if [ $MEMUsage -ge 70 ];then         kill -9 $ProcessNum         echo "$time  Memory $Command occupies too large memory space and was killed!" >>  /var/log/monitor.log      elif [ $CPUUsage -ge 30 ]; then         echo "$time  Memory $Command occupies too large ,please check it!" >>  /var/log/monitor.log      fi # Monitor the zombie process.      if [ "$STAT" == "Z" ]; then      kill -9 $ProcessNum      echo "$time Process $Command is zombie process and was killed." >>  /var/log/monotor.log      fi   done < /tmp/temp.txt   rm -f /tmp/temp.txt#Momitor the disk partition used space.   df | grep -v Filesystem > /tmp/temp.txt     while read -r line     do        declare -i DiskUsage=`echo $line | awk '{ if(NF==6){ print $5 }  else if(NF==5) { print $4 } }'| awk -F% '{print $1}'`        DirName=`echo $line | awk '{ if(NF==6){ print $6 }  else if(NF==5) { print $5 } }'| awk -F% '{print $1}'`        if [ $DiskUsage -ge 90 ];then           echo "$time The partitipn which the directory $DirName mounted on occupies too large space ,please check it." >> /var/log/monitor.log        fi     done < /tmp/temp.txt   rm -f /tmp/temp.txt... 全文

linux Linux 监控   系统监控   脚本 职场 休闲

python soscket监控系统

自己写的监控服务,想监控windows ,所以用python写了一个服务,用于执行系统命令用python 3写的,2的话需要修改。 server端,也就是被监控端 import socket import sys,os host = '0.0.0.0' port = int(sys.argv[1]) #这里写入可以连接的客户端地址trust = '127.0.0.1,192.168.1.31' s = None def conn():   for res in socket.getaddrinfo(host,port,socket.AF_UNSPEC,socket.SOCK_STREAM,0,socket.AI_PASSIVE):     af,socktype,proto,canonname,sa = res     try:       s = socket.socket(af,socktype,proto)     except OSError as msg:       s = None       continue     try:       s.bind(sa)       s.listen(1)     except OSError as msg:       s.close()       s = None       continue     break   if s is None:     print('could not open socket')     sys.exit(1)   conn,addr = s.accept()   error = 'ok'   if str(addr[0]) not in str(trust):     error = 'error'   print('Connected by',addr)   while True:     conn.settimeout(5)     if error != 'error':       data = conn.recv(102400)       if not data:break       data = data.decode(encoding='utf-8',errors='strict')       comm = str(data)+' '+'2>&1'       content = os.popen(comm).read()       content = content.encode(encoding='utf-8',errors='strict')       conn.send(content)     else:       conn.send(b'not trust address')       break   conn.close() while True:   conn() 客户端,也就是监控服务器使用的import socket import sys host=sys.argv[1] port = sys.argv[2] s = None o = len(sys.argv) comm = [] for i in range(3,o):         comm.append(sys.argv[i])          for res in socket.getaddrinfo(host,port,socket.AF_UNSPEC,socket.SOCK_STREAM):         af,socktype,proto,canonname,sa = res         try:                 s = socket.socket(af,socktype,proto)         except OSError as msg:                 s = None                 continue         try:                 s.connect(sa)         except OSError as msg:                 s.close()                 s = None                 continue         break if s is None:         print("could not opensocket")         sys.exit(1) comm = ''.join(comm) comm = comm.replace('[]',' ') comm = comm.encode(encoding='utf-8',errors='strict') s.sendall(comm) data = s.recv(102400) print(repr(data)) s.close() sys.exit(0)  使用方法:服务端启动服务python server.pyw 8765 #启动服务,监听8765端口 客户端,也就是监控服务器使用的脚本python client.pyw  127.0.0.1 8765 ipcofing 连接127.0.0.1的8765端口,执行ipconfig命令, python client.pyw  127.0.0.1 8765 ipcofing[]/all如果带参数的话,空格使用[]代替本文出自 “技术交流” 博客,请务必保留此出处http://zhaoyun.blog.51cto.com/2090116/1133373... 全文

socket 开启端口 监控系统 管理系统

nagios详细配置

   本文是参考众多nagios高手文档+nagios中文手册+个人理解加工整理的,个人水平有限难免有不对的地方,请大家能够谅解,也请大家及时批评指出,在此先谢谢大家了!    本文状态:不断修改添加中,大家有不理解的地方或者有关于nagios的各方面需求请留言,我会尽自己能力帮助大家,希望我们在开源的世界里互相学习,共同提高。一.简介    nagiso是一个非常灵活的监控系统,可以监控常见的各种服务以及服务器的运行状态,并在监测到服务器发生故障的情况下,使用各种不同的方式通知维护人员发生了何种故障。目前nagios支持如下几种报警方式:邮件、MSN、QQ、短信、飞信。    nagios只提供了一个监控平台,实际上nagios本身并不提供任何工具来对服务器进行报警,也不提供发送报警信息的代码,所有这些功能都是由插件来实现的。nagios可以很好地整合所有的插件一起高效的工作。通过分工合作来实现一个完善的监控机制。Nagios特征包括: 1.监控网络服务(SMTP、POP3、HTTP、SSH、mysql、NNTP、PING等); 2.监控主机资源(处理器负荷、磁盘利用率等); 3.简单地插件设计使得用户可以方便地扩展自己服务的检测方法; 4.并行服务检查机制; 5.具备定义网络分层结构的能力,用"parent"主机定义来表达网络主机间的关系,这种关系可被用来发现和明晰主机宕机或不可达状态; 6.当服务或主机问题产生与解决时将告警发送给联系人(通过EMail、短信、用户定义方式); 7.具备定义事件句柄功能,它可以在主机或服务的事件发生时获取更多问题定位; 8.自动的日志回滚; 9.可以支持并实现对主机的冗余监控; 10.可选的WEB界面用于查看当前的网络状态、通知和故障历史、日志文件等;  常用的nagios系统一般组成:nagios、nagios-plugs、nrpe、nsclient 一个典型的架构如下图所示:    上面架构只能监控到服务器的外部服务,如HTTP、SSH、FTP,要实现对本地信息的监控可以通过在被监控服务器上安装NRPE服务,作为监控代理来实现对本地信息的监控,架构如下:    NRPE 由两个部分组成:工作在监控机一侧的check_nrpe 插件、工作在被监控机一侧的NRPE 守护进程。Nagios 服务器执行check_nrpe 插件并告诉他检查哪个服务,check_nrpe 插件通过SSL 连接方式联系远程服务器上的NRPE 守护进程,NRPE 守护进程执行相应的插件完成指定的检查,并返回结果。   nagios相关软件下载地址http://sourceforge.net/projects/nagios/files/     nagios汉化版下载http://sourceforge.net/projects/nagios-cn/files/,感谢汉化者田朝阳  NSClient++下载http://sourceforge.net/projects/nscplus/files/nscplus/安装步骤:1. 安装运行环境yum install httpd php php-devel gd gd-devel2.安装nagios并配置web访问useradd nagiosusermod –G nagios apache   //把apache 用户加入nagios 组,如果省略这一步会在后续的操作中产生一些问题./configure --prefix=/usr/local/nagios//下面根据提示操作make allmake install    //安装nagios 主程序、CGI 和HTML 文件make install-init   //安装nagios 的启动脚本make install-commandmode //安装外部命令使用的目录,并配置目录权限make install-config    //安装样板配置文件,位于/usr/local/nagios/etc 目录下make install-webconf //安装apache 配置文件,以便能够通过web 页面访问nagios htpasswd  -c /usr/local/nagios/etc/htpasswd.users nagiosadmin //创建web验证登录用户service httpd restart测试:用http://监控机IP/nagios 看能否用nagiosadmin登录  nagios 安装完毕检查/usr/local/nagios 目录下是否存在如下子目录chkconfig  --add nagios    //将nagios加为系统服务chkconfig nagios on   //设置开机自启动/usr/local/nagios/bin/nagios ‐v /usr/local/nagios/etc/nagios.cfg //验证Nagios的配置文件 如果没有报错,可以启动Nagios服务 service nagios start3.安装插件nagios-plugin(用来实现各种监控取值的程序)tar -zxvf nagios-plugins-1.4.15.tar.gz./configure --prefix=/usr/local/nagiosmake && make install    安装后查看/usr/local/nagios/libexec/目录,会显示安装的所有插件... 全文

网络监控 nagios 系统监控 linux监控 windows监控

用python和redis开发高性能监控平台及框架升级过程

关于python应用监控平台的话题最近的更新:http://rfyiamcool.blog.51cto.com/1030776/1429847先说明,这不是人人业务的监控框架,是我在以前公司参与的一个项目。。。... 全文

python 监控平台 开发监控系统 监控平台开发

Redhat linux 系统的负载与CPU、内存、硬盘、用户数监控shell脚本

【分享】利用shell脚本来监控linux系统的负载、CPU、内存、硬盘、用户登录数 这几天在学习研究shell脚本,写的一些系统负载、CPU、内存、硬盘、用户数监控脚本程序。在没有nagios监控的情况下,只要服务器能上互联网,就可通过发邮件的方式来提醒管理员系统资源的使用情况。 一、编写linux系统告警邮件脚本  # vim /scripts/sys-warning.sh... 全文

linux 休闲 职场 系统监控 linux系统

Linux系统监控知识分享

作为系统运维人员,就要实时的监控系统的一些重要参数,不如僵尸进程,CPU的利用率,内存的使用情况,磁盘空间的使用情况,系统的均衡负载,根据得到的最新信息,我们就能判断系统运行的状态是否良好。本人接触Linux系统也有一点时间,在网上看看了,经过整理,将一些常用的系统监控的命令shell脚本拿出来晒晒,希望给新手提供学习的机会,同时也希望经验丰富者提够些技术知道,多多探讨交流!获得某个用户的某个进行的信息:... 全文

系统监控

系统监控工具汇总

1、zabbixzabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。zabbix由2部分构成,zabbix server与可选组件zabbix agent。... 全文

系统监控工具汇总

系统监控

 系统监控脚本,转载的,源地址不知道在哪里了,忘原谅,未测试过可用性#!/bin/bash #System Monitoring Script while [ 1 ] do #本机需开启postfix或sendmail服务。 #报警邮件地址设置 MAILFROM=monitor@zhaoyun.com MAILTO=zhaoyun006@163.com #设置脚本运行间隔时间。单位(秒)。 RUNTIME=1 #内存使用率监控设置,单位 (%) MEMTHRE=90 #流量监控设置 #要监控的网卡 ETHX=eth0 #填写大于多少MB的时候发送警报,单位(MB) INFLOWTHREMB=50 OUTFLOWTHREMB=50 #填写大于多少KB的时候发送警报,单位(KB) INFLOWTHREKB=500 OUTFLOWTHREKB=500 #TCP连接状态数量监控设置 #填写最大连接的个数 TIME_WAIT=10 FIN_WAIT1=20 FIN_WAIT2=20 ESTABLISHED=20 SYN_RECV=10 CLOSE_WAIT=10 CLOSING=10 LAST_ACK=10 #CPU使用率监控设置 #填写cpu使用率大于多少发送报警,单位(%) CPUTHRE=5 #硬盘使用大小设置 #填写硬盘占用率,单位(%) ROOT=80 VAR=100 USR=100 BOOT=80 #调试模式开关。(YES/NO) DBUG=NO #                 监 控 脚 本 执 行 内 容       ################################################################################ time=`date +"%Y-%m-%d %H:%M:%S"` #内存监控部分 NULL=/dev/null MEM=`free -m |grep Mem |awk '{print $3/$2*100}'` MEMB=`free -m |grep Mem |awk '{print $2,$4+$6+$7}'|awk '{print $1,$1-$2}'| awk '{print $2/$1*100}'` #echo $MEM #echo $MEMB MA=`expr $MEM \> $MEMTHRE ` if [ $MA -eq 1 ] ; then sendmail -t <<EOF from: $MAILFROM to:$MAILTO subject: warning   $time MEM内存警告,当前内存占用率为$MEM %,大于$MEMTHRE %. EOF     fi MB=`expr $MEMB \> $MEMTHRE` if [ $MB -eq 1 ] ; then sendmail -t <<EOF from: $MAILFROM to:$MAILTO subject: warning   $time MEMB内存警告,当前内存占用率为$MEMB %,大于$MEMTHRE % EOF     fi  #流量监控部分 FLOWA=/tmp/.flow ifconfig $ETHX |grep "RX byte" |awk '{print $2"    "$6}' |awk -Fbytes: '{print "INPUT  "$2"OUTPUT  "$3}'\ > $FLOWA INPUTA=`cat $FLOWA |awk '{print $2}'` OUTPUTA=`cat $FLOWA |awk '{print $4}'` sleep 1 ifconfig $ETHX |grep "RX byte" |awk '{print $2"    "$6}' |awk -Fbytes: '{print "INPUT  "$2"OUTPUT  "$3}'\ > $FLOWA INPUTB=`cat $FLOWA |awk '{print $2}'` OUTPUTB=`cat $FLOWA |awk '{print $4}'` INPUTC=`echo "$INPUTB-$INPUTA" | bc` OUTPUTC=`echo "$OUTPUTB-$OUTPUTA"| bc` INPUTMBA=`echo "$INPUTC/1024"|bc` OUTPUTMBA=`echo "$OUTPUTC/1024"|bc` INMBF=/tmp/.inputMB OUTMBF=/tmp/.outputMB echo `echo "scale=4;$INPUTMBA/1024"|bc`MB > $INMBF echo `echo "scale=4;$OUTPUTMBA/1024"|bc`MB > $OUTMBF INMB=`cat $INMBF |awk '{print $1}'` OUTMB=`cat $OUTMBF |awk '{print $1}'`   if [ $INPUTMBA -gt 1024 ] ; then               if [ $INMB -gt $INFLOWTHREMB ] ;then sendmail -t <<EOF from: $MAILFROM to:$MAILTO subject: warning $time 流量警告,当前流量异常,请登录服务器查看。当前速率$INMB MB/秒,大于$INFLOWTHREMB MB/秒。 EOF               fi     if [ $OUTMB -gt $OUTFLOWTHREMB ] ;then sendmail -t <<EOF from: $MAILFROM to:$MAILTO subject: warning $time 流量警告,当前流量异常,请登录服务器查看。当前速率$OUTMB MB/秒 大于$OUTFLOWTHREMB MB/秒。 EOF     fi else INKBF=/tmp/.inputKB OUTKBF=/tmp/.outputKB echo $INPUTMBA KB > $INKBF echo $OUTPUTMBA KB > $OUTKBF INKB=`cat $INKBF |awk '{print $1}'` OUTKB=`cat $OUTKBF |awk '{print $1}'`               if [ $INKB -gt $INFLOWTHREKB ] ; then sendmail -t <<EOF from: $MAILFROM to:$MAILTO subject: warning $time 流量警告,当前流量异常,请登录服务器查看。$INKB KB/秒 大于$INFLOWTHREKB KB/秒。 EOF               fi     if [ $OUTKB -gt $OUTFLOWTHREKB ] ;then sendmail -t <<EOF from: $MAILFROM to:$MAILTO subject: warning $time 流量警告,当前流量异常,请登录服务器查看。当前速率$OUTKB KB/秒大于$INFLOWTHREKB KB/秒。 EOF     fi fi #连接数 tcpfile=/tmp/.tcp netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' >$tcpfile grep TIME_WAIT $tcpfile > $NULL if [ $? -eq 1 ] ; then echo "TIME_WAIT 0 " >> $tcpfile fi grep FIN_WAIT1 $tcpfile > $NULL if [ $? -eq 1 ] ; then echo "FIN_WAIT1 0 " >> $tcpfile fi grep FIN_WAIT2 $tcpfile  > $NULL if [ $? -eq 1 ] ; then echo "FIN_WAIT2 0 " >> $tcpfile fi grep CLOSE_WAIT $tcpfile  > $NULL if [ $? -eq 1 ] ; then echo "CLOSE_WAIT 0 " >> $tcpfile fi grep LAST_ACK $tcpfile  > $NULL if [ $? -eq 1 ] ; then echo "LAST_ACK 0 " >> $tcpfile fi grep SYN_RECV $tcpfile  > $NULL if [ $? -eq 1 ] ; then echo "SYN_RECV 0 " >> $tcpfile fi grep CLOSING $tcpfile  > $NULL if [ $? -eq 1 ] ; then echo "CLOSING 0 " >> $tcpfile fi grep ESTABLISHED $tcpfile  > $NULL if [ $? -eq 1 ] ; then echo "ESTABLISHED 0 " >> $tcpfile fi  TIME_WAITV=`grep TIME_WAIT $tcpfile | awk '{print $2}'` FIN_WAIT1V=`grep FIN_WAIT1 $tcpfile | awk '{print $2}'` FIN_WAIT2V=`grep FIN_WAIT2 $tcpfile | awk '{print $2}'` ESTABLISHEDV=`grep ESTABLISHED $tcpfile | awk '{print $2}'` SYN_RECVV=`grep SYN_RECV $tcpfile | awk '{print $2}'` CLOSINGV=`grep CLOSING $tcpfile | awk '{print $2}'` CLOSE_WAITV=`grep CLOSE_WAIT $tcpfile | awk '{print $2}'` LAST_ACKV=`grep LAST_ACK $tcpfile | awk '{print $2}'`   if [ $ESTABLISHEDV -gt $ESTABLISHED ] ; then sendmail -t <<EOF from: $MAILFROM to:$MAILTO subject: warning $time 连接数警告,当前ESTABLISHED连接数异常,请登录服务器查看。当前连接数为$ESTABLISHEDV个,大于$ESTABLISHED个 EOF   fi   if [ $SYN_RECVV -gt $SYN_RECV ] ; then sendmail -t <<EOF from: $MAILFROM to:$MAILTO subject: warning $time 连接数警告,当前SYN_RECV连接数异常,请登录服务器查看。当前连接数为$SYN_RECVV个,大于$SYN_REC个。 EOF   fi  if [ $CLOSE_WAITV -gt $CLOSE_WAIT ] ; then sendmail -t <<EOF from: $MAILFROM to:$MAILTO subject: warning $time 连接数警告,当前CLOSE_WAIT连接数异常,请登录服务器查看。当前连接数为$CLOSE_WAITV个,大于$CLOSE_WAIT个。 EOF   fi   if [ $CLOSINGV -gt $CLOSING ] ; then sendmail -t <<EOF from: $MAILFROM to:$MAILTO subject: warning $time 连接数警告,当前CLOSING连接数异常,请登录服务器查看。当前连接数为$CLOSINGV个,大于$CLOSING个。 EOF   fi   if [ $LAST_ACKV -gt $LAST_ACK ] ; then sendmail -t <<EOF from: $MAILFROM to:$MAILTO subject: warning $time 连接数警告,当前LAST_ACK连接数异常,请登录服务器查看。当前连接数为$LAST_ACKV个,大于$LAST_ACK个。      EOF   fi if [ $TIME_WAITV -gt $TIME_WAIT ] ; then sendmail -t <<EOF from: $MAILFROM to:$MAILTO subject: warning $time 连接数警告,当前TIME_WAIT连接数异常,请登录服务器查看。当前连接数为$TIME_WAITV个,大于$TIME_WAIT个。      EOF   fi if [ $FIN_WAIT1V -gt $FIN_WAIT1 ] ; then sendmail -t <<EOF from: $MAILFROM to:$MAILTO subject: warning $time 连接数警告,当前FIN_WAIT1连接数异常,请登录服务器查看。当前连接数为$FIN_WAIT1V个,大于$FIN_WAIT1个。    EOF   fi if [ $FIN_WAIT2V -gt $FIN_WAIT2 ] ; then sendmail -t <<EOF from: $MAILFROM to:$MAILTO subject: warning $time 连接数警告,当前FIN_WAIT2连接数异常,请登录服务器查看。当前连接数为$FIN_WAIT2V个,大于$FIN_WAIT2个。 EOF   fi DISKF=/tmp/.disk df -h > $DISKF grep var $DISKF > $NULL if [ $? -eq 1 ] ; then echo "/dev/sda1 20G  1.6G   17G   0% /var" >> $DISKF fi grep usr $DISKF > $NULL if [ $? -eq 1 ] ; then echo "/dev/sda1 20G  1.6G   17G   0% /usr" >> $DISKF fi grep boot $DISKF > $NULL if [ $? -eq 1 ] ; then echo "/dev/sda1 20G  1.6G   17G   0% /boot" >> $DISKF fi BOOTV=`cat $DISKF | grep boot  | awk '{print $5}'|awk -F% '{print $1}'` VARV=`cat  $DISKF  | grep var  | awk '{print $5}'|awk -F% '{print $1}'` USRV=`cat  $DISKF  | grep usr  | awk '{print $5}'|awk -F% '{print $1}'` grep VolGroup $DISKF > $NULL if [ $? -eq 0 ] ;then ROOTV=`cat $DISKF | sed -n '3p' |awk '{print $4}'|awk -F% '{print $1}'` else ROOTV=`cat $DISKF | sed -n '2p'|awk '{print $5}'|awk -F% '{print $1}'` fi if [ $ROOTV -gt $ROOT ] ; then sendmail -t <<EOF from: $MAILFROM to:$MAILTO subject: warning $time 磁盘使用警告,您监控的 /  分区已经大于你设置的数值$ROOT %,详情登陆系统查看,目前使用率为$ROOTV %. EOF fi if [ $VARV -gt $VAR ] ; then sendmail -t <<EOF from: $MAILFROM to:$MAILTO subject: warning $time 磁盘使用警告,您监控的 /var 分区已经大于你设置的数值$VAR %,详情登陆系统查看,目前使用率为$VARV %. EOF fi if [ $BOOTV -gt $BOOT ] ; then sendmail -t <<EOF from: $MAILFROM to:$MAILTO subject: warning $time 磁盘使用警告,您监控的 /boot  分区已经大于你设置的数值 $BOOT %,详情登陆系统查看,目前使用率为$BOOTV %. EOF fi if [ $USRV -gt $USR ] ; then sendmail -t <<EOF from: $MAILFROM to:$MAILTO subject: warning $time 磁盘使用警告,您监控的 /usr  分区已经大于你设置的数值$USR %,详情登陆系统查看,目前使用率为$USRV %. EOF fi #CPU TotalA=`cat /proc/stat | sed -n '1p' | awk '{print $2+$3+$4+$5+$6+$7+$8}'` IDLEA=`cat /proc/stat |sed -n '1p' |awk '{print $5}'` sleep 2 TotalB=`cat /proc/stat | sed -n '1p' | awk '{print $2+$3+$4+$5+$6+$7+$8}'` IDLEB=`cat /proc/stat |sed -n '1p' |awk '{print $5}'` Total=`echo "$TotalB-$TotalA" |bc` Idle=`echo "$IDLEB-$IDLEA" |bc` USAGE=`echo "$Idle/$Total*100"|bc -l` RATE=`echo "100-$USAGE "|bc -l` USERATE=`echo "scale=2;$RATE/1"|bc`% CA=`expr $USERATE \> $CPUTHRE` if [ $CA -eq 1 ] ; then sendmail -t <<EOF from: $MAILFROM to:$MAILTO subject: warning $time CPU使用警告,您监控的CPU使用率,已经超过您设置的限额$CPUTHRE % ,当前CPU使用率为$USERATE . EOF fi CPURATE=`top -b -n 1 |grep Cpu | awk '{print $5}' |awk -F%id '{print 100-$1}'` CB=`expr $CPURATE \> $CPUTHRE` if [ $CB -eq 1  ] ; then sendmail -t <<EOF from: $MAILFROM to:$MAILTO subject: warning $time CPU使用警告,您监控的CPU使用率,已经超过您设置的限额$CPUTHRE %,当前CPU使用率为$CPURATE . EOF fi DBUGS=YES if [ "$DBUGS" == "$DBUG" ] ; then echo "           "'& 内  存 &' ;echo \ ; echo "  "当前程序占用内存为 $MEMB % ,总占用内存为 $MEM % ; echo \ ; echo "           "'& 流  量 &'; echo \ ; YA=`wc -l $INMBF > /dev/null 2>&1 ; echo $?`     if [ $YA -eq 1 ] ; then echo 0 > $INMBF     fi IN=`expr $INMB \> $INFLOWTHREMB >$NULL; echo $? ` 2> $NULL          if [ $IN -eq 1 ] ; then echo "    "当前输入流量为 $INMB MB/秒 .;  echo "    "当前输入流量为 $INKB KB/秒 .;            fi YB=`wc -l $OUTMBF > /dev/null 2>&1 ; echo $?`        if [ $YB -eq 1 ] ; then echo 0 > $OUTMBF         fi OUT=`expr $OUTMB \> $OUTFLOWTHREMB >$NULL ; echo $?` 2> $NULL     if [ $OUT -eq 1 ] ; then echo "    "当前输出流量为 $OUTMB MB/秒。 ;   echo "    "当前输出流量为 $OUTKB KB/秒。 ; echo \ ;     fi echo "           "'& 连接数 &' ; echo \ ; echo "    "当前TIME_WAIT"  " 连接数为 $TIME_WAITV 个。 echo "    "当前FIN_WAIT1"  " 连接数为 $FIN_WAIT1V 个。 echo "    "当前FIN_WAIT2"  " 连接数为 $FIN_WAIT2V 个。 echo "    "当前CLOSE_WAIT" " 连接数为 $CLOSE_WAITV 个。 echo "    "当前ESTABLISHED"" 连接数为 $ESTABLISHEDV 个。 echo "    "当前SYN_RECV"   " 连接数为 $SYN_RECVV 个。 echo "    "当前LAST_ACKV"  " 连接数为 $LAST_ACKV 个。 echo "    "当前CLOSING"    " 连接数为 $CLOSINGV 个。; echo \ ; echo "         "'& CPU使用率 &' ; echo \ ; echo "    "当前CPU 进程使用率为 $USERATE  . ;echo \ ; echo "         "'& 磁盘使用率 &' ; echo \ ; echo "    "当前"  "/"  "分区,"  "使用率为 $ROOTV %. echo "    "当前/var 分区, 使用率为 $VARV %. echo "    "当前/boot分区, 使用率为 $BOOTV %. echo "    "当前/usr 分区, 使用率为 $USRV %. exit  fi sleep $RUNTIME done  ... 全文

休闲 系统监控 shell 职场

linux系统监控命令参数讲解

linux监控有很多值得学习的地方,这里我们主要介绍几个常见的linux系统监控命令,包括介绍cache、swap、cpu等方面。... 全文

linux系统监控命令

Collectl:Linux系统监控神器

为使系统良好运转,Linux系统管理员经常需要监测cpu、内存、磁盘、网络等系统信息。Linux上已有iotop、top、free、htop、sar等丰富的常规工具来实现监测功能。今天让我们走进Collectl来了解这个集测试/监控/分析系统性能为一体的Linux工具。... 全文

Collectl Linux系统监控

Nagios监控Windows server 2003 系统

 一、Nagios监控主机配置[root@nagios ~]# cp /usr/local/nagios/etc/nagios.cfg /usr/local/nagios/etc/nagios.cfgbak20130318   //备份nagios.cfg编辑nagios.cfg配置文件[root@nagios ~]# vim /usr/local/nagios/etc/nagios.cfg把下面这行最前面的#号去掉:39 #cfg_file=/usr/local/nagios/etc/objects/windows.cfg修改为:#去掉这句话的注释... 全文

监控Windows系统 Nagios

Nagios系统监控软件的图表显示

八、实现nagios的图表显示 1、检查需要支持的系统套件是否都已经安装:[root@localhost ]# yum install httpdphp[root@localhost ]# yum install gccglibcglibc-common[root@localhost ]# yum install gdgd-develphp-gd 2、安装需要支持的系统套件:... 全文

nagios 系统监控

构建cacti监测系统

 Cacti是一款使用PHP语言开打的性能与流量监测工具,监测的对象可以是linux或windows服务器,也可以是路由器,交换机等网络设备,主要基于SNMP(简单网络管理协议)搜集CPU占用,内存占用,运行进程数,磁盘空间,网卡流量等各种数据。  Cacti本身只是一个Web界面的管理软件,通过调用Net-SNMP工具来采集监测数据,并结合RRDtool(轮询数据库工具)记录数据并绘制图片。... 全文

cacti Linux监控 流量监控系统

用Python写一个简单的监控系统

发表于 2014年9月21日 作者 root市面上有很多开源的监控系统:Cacti、nagios、zabbix。感觉都不符合我的需求,为什么不自己做一个呢... 全文

监控系统 数据库

Nagios系统监控软件的邮件告警设置

七、邮件告警设置nagios发警告邮件是采用本机的smtp服务,可以查看commands.cfg中关于发邮件的命令的定义,使用本机的mail命令,这就需要开启本机的smtp服务,为了安全可以在防火墙上设置拒绝其他的机器连本机的25号端口。 1、查看command.cfg命令参数中邮件调用的情况:[root@localhost ]# vim /usr/local/nagios/etc/objects/command.cfg... 全文

nagios 系统监控

1 2 3 4 5 6 7 8 9 10